当前位置: 代码网 > it编程>编程语言>C# > C#实现添加/替换/提取或删除Excel中的图片

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

2025年02月13日 C# 我要评论
在excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观。此外,对于已有图片,你有事可能需要更新图片以确保信息的准确性,或者将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图片内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com