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

 更新时间:2025年01月28日 08:22:05   作者:Eiceblue  
在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观,下面我们来看看如何在C#中实现添加/替换/提取或删除Excel中的图片吧

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

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

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);
        }
    }
}

C# 替换Excel中的图片

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

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);
        }
    }
}

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));
            }
        }
    }
}

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工作表中的图片外,免费库Free Spire.XLS for .NET 还支持操作多其他种元素,如形状、图表、超链接、水印等。

到此这篇关于C#实现添加/替换/提取或删除Excel中的图片的文章就介绍到这了,更多相关C#操作Excel图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c#数据绑定之向查询中添加参数(.Net连接外部数据库)

    c#数据绑定之向查询中添加参数(.Net连接外部数据库)

    本实例主要练习了ADO.Net连接到外部数据库的基础上,向查询中添加参数。使用的是ACCESS数据库
    2014-04-04
  • webBrowser执行js的方法,并返回值,c#后台取值的实现

    webBrowser执行js的方法,并返回值,c#后台取值的实现

    下面小编就为大家带来一篇webBrowser执行js的方法,并返回值,c#后台取值的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Visual C#.Net 网络程序开发-Socket篇

    Visual C#.Net 网络程序开发-Socket篇

    Visual C#.Net 网络程序开发-Socket篇...
    2007-03-03
  • C#中的两种debug方法介绍

    C#中的两种debug方法介绍

    这篇文章主要介绍了C#中的两种debug方法介绍,本文讲解了代码用 #if DEBUG 包裹、利用宏定义两种方法,需要的朋友可以参考下
    2015-02-02
  • C#压缩或解压rar、zip文件方法实例

    C#压缩或解压rar、zip文件方法实例

    这篇文章主要给大家介绍了关于C#压缩或解压rar、zip文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • C#高效反射调用方法类实例详解

    C#高效反射调用方法类实例详解

    在本篇文章中小编给大家分享的是关于C#高效反射调用方法类的相关实例内容,有兴趣的朋友们学习下。
    2019-07-07
  • C#实现简单的计算器功能

    C#实现简单的计算器功能

    这篇文章主要为大家详细介绍了C#实现简单的计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • C#指针变量与unsafe的实现

    C#指针变量与unsafe的实现

    本文主要介绍了C#指针变量与unsafe的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 新手小白用C# winform 读取Excel表的实现

    新手小白用C# winform 读取Excel表的实现

    这篇文章主要介绍了新手小白用C# winform 读取Excel表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • c#获取季度时间实例代码(季度的第一天)

    c#获取季度时间实例代码(季度的第一天)

    这篇文章主要介绍了c#获取季度时间:季度的第一天、季度的最后一天等功能,大家参考使用吧
    2013-12-12

最新评论