C# 添加、替换、提取、或删除Excel中的图片

在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观。此外,对于已有图片,你有事可能需要更新图片以确保信息的准确性,或者将Excel 中的图片单独保存,用于资料归档、备份或在其他项目中重复使用。
本文将介绍如何在.NET 程序中通过C# 在Excel中插入图片,或者替换、提取、删除Excel中的图片

本文需要用到一个免费库 Free Spire.XLS for .NET。该库可以在Visual > Studio > NuGet程序包管理器中搜索 “FreeSpire.XLS” 来安装。也可以通过下列链接下载产品包后手动添加引用。

https://www.e-iceblue.cn/Downloads/Free-Spire-XLS-NET.html

C# 在Excel中插入图片

免费Spire.XLS库提供的 Worksheet.Pictures.Add(int topRow, int leftColumn, Image image) 方法可在工作表指定单元格中插入图片,并返回一个 ExcelPicture 对象。然后你可以通过ExcelPicture类下的各属性设置图片的宽度、高度、与单元格边框的距离等。

C#代码:

using Spire.Xls;namespace InsertImageInExcel
{class Program{static void Main(string[] args){// 创建工作簿Workbook workbook = new Workbook();// 获取第一张工作表Worksheet sheet = workbook.Worksheets[0];// 在指定单元格中插入图片(此处为第一行第二列,即B1单元格)ExcelPicture pic = sheet.Pictures.Add(1, 2, "示例.png");// 设置图片宽高度pic.Width = 120;pic.Height = 120;// 调整图片所在位置的列宽和行高sheet.Columns[1].ColumnWidth = 20;sheet.Rows[0].RowHeight = 110;// 设置单元格边框与图片之间的距离pic.LeftColumnOffset = 90;pic.TopRowOffset = 20;// 保存Excel文件workbook.SaveToFile("插入图片.xlsx", ExcelVersion.Version2016);}}
}

Excel插入图片

C# 替换Excel中的图片

要替换Excel中的图片,我们可以先通过 Worksheet.Pictures[index] 属性获取工作表中指定的图片,然后加载一张新图片并将其赋值给 ExcelPicturePicture 属性,从而完成图片的替换操作。

C#代码:

using Spire.Xls;
using Spire.Xls.Collections;
using System.Drawing;namespace ReplacePictureinExcel
{class Program{static void Main(string[] args){// 加载Excel文档Workbook workbook = new Workbook();workbook.LoadFromFile("插入图片.xlsx");// 获取第一张工作表Worksheet sheet = workbook.Worksheets[0];// 取工作表中第一张图片ExcelPicture pic = sheet.Pictures[0];// 替换图片pic.Picture = Image.FromFile("pic.jpg");// 保存文档workbook.SaveToFile("替换图片.xlsx", ExcelVersion.Version2016);}}
}

替换Excel图片

C# 提取Excel中的图片

提取Excel中的图片的实现思路为先遍历工作表中的所有图片,然后通过 ExcelPicture.Picture.Save() 方法将每一张图片保存到指定的文件路径。

C#代码:

using Spire.Xls;namespace ExtractImages
{class Program{static void Main(string[] args){// 加载Excel文档Workbook workbook = new Workbook();workbook.LoadFromFile("图标.xlsx");// 获取第一张工作表Worksheet sheet = workbook.Worksheets[0];// 遍历工作表中所有图片for (int i = sheet.Pictures.Count - 1; i >= 0; i--){// 提取图片保存到指定路径ExcelPicture picture = sheet.Pictures[i];picture.Picture.Save(string.Format("提取图片\\图片-{0}.png", i));}}}
}

提取Excel图片

C# 删除Excel中的图片

对于Excel中的不相关或错误图片,我们可以使用 Worksheet.Pictures[index].Remove() 方法通过索引删除指定图片。要删除所有图片,可以遍历每张图片然后删除。

C#代码:

using Spire.Xls;namespace DeleteImages
{class Program{static void Main(string[] args){// 加载Excel文档Workbook workbook = new Workbook();workbook.LoadFromFile("图标.xlsx");// 获取第一张工作表Worksheet sheet = workbook.Worksheets[0];// 遍历每一张图片并删除for (int i = sheet.Pictures.Count - 1; i >= 0; i--){sheet.Pictures[i].Remove();}// 保存文档workbook.SaveToFile("删除图片.xlsx", ExcelVersion.Version2016);}}
}

删除Excel图片


除了操作Excel工作表中的图片外,免费库Free Spire.XLS for .NET 还支持操作多其他种元素,如形状、图表、超链接、水印等。更多功能教程可查看:Spire.XLS for .NET 中文教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/894177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python练习(2)

今日题单 吃鱼还是吃肉 PTA | 程序设计类实验辅助教学平台 降价提醒机器人PTA | 程序设计类实验辅助教学平台 幸运彩票 PTA | 程序设计类实验辅助教学平台 猜帽子游戏 PTA | 程序设计类实验辅助教学平台 谁管谁叫爹 PTA | 程序设计类实验辅助教学平台 就不告诉你 PTA | 程…

Formality:黑盒(black box)

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 简介 在使用Formality时,黑盒(black box)的概念很重要,指的是一个其功能未知的设计。黑盒通常用于设计中不可综合的组件,包括RAM…

开源2+1链动模式AI智能名片S2B2C商城小程序:利用用户争强好胜心理促进分享行为的策略研究

摘要:随着互联网技术的快速发展和社交媒体的普及,用户分享行为在企业营销中的作用日益凸显。本文旨在探讨如何利用用户的争强好胜心理,通过开源21链动模式AI智能名片S2B2C商城小程序(以下简称“小程序”)促进用户分享行…

八股学习 微服务篇

微服务篇 常见面试内容Spring Cloud 常见组件注册中心Ribbon负载均衡策略服务雪崩 常见面试内容 Spring Cloud 常见组件 Spring Cloud有5个常见组件: Eureka/Nacos:注册中心;Ribbon:负载均衡;Feign:远程调用;Hystrix/Sentinel:服…

Synology 群辉NAS安装(6)安装mssql

Synology 群辉NAS安装(6)安装mssql 写在前面mssql 2019:成功安装说明,这个最终成功了 mssql 2022没有成功1. pull image2.启动mssql docker container 远程连接 写在前面 mssq是一个重要节点。 这是因为我对mysql没有一丝好感。虽然接触了许…

mysql_init和mysql_real_connect的形象化认识

解析总结 1. mysql_init 的作用 mysql_init 用于初始化一个 MYSQL 结构体,为后续数据库连接和操作做准备。该结构体存储连接配置及状态信息,是 MySQL C API 的核心句柄。 示例: MYSQL *conn mysql_init(NULL); // 初始化连接句柄2. mysql_…

qt-QtQuick笔记之常见项目类简要介绍

qt-QtQuick笔记之常见项目类简要介绍 code review! 文章目录 qt-QtQuick笔记之常见项目类简要介绍1.QQuickItem2.QQuickRectangle3.QQuickImage4.QQuickText5.QQuickBorderImage6.QQuickTextInput7.QQuickButton8.QQuickSwitch9.QQuickListView10.QQuickGridView11.QQuickPopu…

0 基础学运维:解锁 K8s 云计算运维工程师成长密码

前言:作为一个过来人,我曾站在技术的门槛之外,连电脑运行内存和内存空间都傻傻分不清,完完全全的零基础。但如今,我已成长为一名资深的k8s云计算运维工程师。回顾这段历程,我深知踏上这条技术之路的艰辛与不…

Spring Boot - 数据库集成06 - 集成ElasticSearch

Spring boot 集成 ElasticSearch 文章目录 Spring boot 集成 ElasticSearch一:前置工作1:项目搭建和依赖导入2:客户端连接相关构建3:实体类相关注解配置说明 二:客户端client相关操作说明1:检索流程1.1&…

联想拯救者R720笔记本外接显示屏方法,显示屏是2K屏27英寸

晚上23点10分前下单,第二天上午显示屏送到,检查外包装没拆封过。这个屏幕左下方有几个按键,按一按就开屏幕、按一按就关闭屏幕,按一按方便节省时间,也支持阅读等模式。 显示屏是 :AOC 27英寸 2K高清 100Hz…

什么是线性化PDF?

线性化PDF是一种特殊的PDF文件组织方式。 总体而言,PDF是一种极为优雅且设计精良的格式。PDF由大量PDF对象构成,这些对象用于创建页面。相关信息存储在一棵二叉树中,该二叉树同时记录文件中每个对象的位置。因此,打开文件时只需加…

你的连接不是专用连接

当你打开网站看到如下提示,说明SSL证书到期了。 攻击者可能试图www窃取你的信息(例如、密码、消息或信用卡)。详细了解此警告 NET::ERR_CERT_DATE_INVALID 此服务器无法证明它是WWW ;它的安全证书已于2天前到期。这可能是错误配置或攻击者…

51单片机开发:定时器中断

目标:利用定时器中断,每隔1s开启/熄灭LED1灯。 外部中断结构图如下图所示,要使用定时器中断T0,须开启TE0、ET0。: 系统中断号如下图所示:定时器0的中断号为1。 定时器0的工作方式1原理图如下图所示&#x…

【电工基础】1.电能来源,触电伤害,触电预防,触电急救

一。电能来源 1.电能来源 发电-》输电-》变电-》配电 2.分配电 一类负荷 如果供电中断会造成生命危险,造成国民经济的重大损失,损坏生产的重要设备以致使生产长期不能恢复或产生大量废品,破坏复杂的工艺过程,以及破坏大…

简易计算器(c++ 实现)

前言 本文将用 c 实现一个终端计算器: 能进行加减乘除、取余乘方运算读取命令行输入,输出计算结果当输入表达式存在语法错误时,报告错误,但程序应能继续运行当输出 ‘q’ 时,退出计算器 【简单演示】 【源码位置】…

python-leetcode-从前序与中序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode) # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right r…

NLP深度学习 DAY4:Word2Vec详解:两种模式(CBOW与Skip-gram)

用稀疏向量表示文本,即所谓的词袋模型在 NLP 有着悠久的历史。正如上文中介绍的,早在 2001年就开始使用密集向量表示词或词嵌入。Mikolov等人在2013年提出的创新技术是通过去除隐藏层,逼近目标,进而使这些单词嵌入的训练更加高效。…

vscode+WSL2(ubuntu22.04)+pytorch+conda+cuda+cudnn安装系列

最近在家过年闲的没事,于是研究起深度学习开发工具链的配置和安装,之前欲与天公试比高,尝试在win上用vscodecuda11.6vs2019的cl编译器搭建cuda c编程环境,最后惨败,沦为笑柄,痛定思痛,这次直接和…

Jason配置环境变量

jason官网 https://jason-lang.github.io/ https://github.com/jason-lang/jason/releases 步骤 安装 Java 21 或更高版本 安装 Visual Studio Code 根据操作系统,请按照以下具体步骤操作 视窗 下载 Jason 的最新版本,选择“jason-bin-3.3.0.zip”…

SpringBoot 日志与配置文件

SpringBoot 配置文件格式 Properties 格式 Component ConfigurationProperties(prefix "person") //和配置文件person前缀的所有配置进行绑定 Data public class Person {private String name;private Integer age;private Date birthDay;private Boolean like;pr…