使用C#代码实现将图片插入到Excel中

 更新时间:2026年01月06日 08:17:22   作者:2501_93070778  
图片是一种直观、高效的信息表达方式,在实际工作中,常常需要在 Excel 报告中插入图片,本文将以 Spire.XLS for .NET 为例,介绍如何使用 C# 和 VB.NET 在 Excel 文档中插入图片,有需要的小伙伴可以了解下

图片是一种直观、高效的信息表达方式。在实际工作中,常常需要在 Excel 报告中插入图片,帮助读者更快、更清晰地理解内容和意图。本文将以 Spire.XLS for .NET 为例,介绍如何使用 C#VB.NET 在 Excel 文档中插入图片。

安装 Spire.XLS for .NET

首先,您需要在 .NET 项目中添加 Spire.XLS for .NET 包中包含的 DLL 文件作为引用。您可以通过下载链接手动获取 DLL 文件,或者直接使用 NuGet 进行安装。

PM> Install-Package Spire.XLS

在 C# 和 VB.NET 中将磁盘中的图片插入到 Excel 中

以下是在 Excel 中从本地磁盘插入图片的操作步骤:

  • 初始化一个 Workbook 实例。
  • 通过 Workbook.Worksheets[sheetIndex] 属性获取指定的工作表。
  • 使用 Worksheet.Pictures.Add() 方法将图片插入到工作表中。
  • 调用 Workbook.SaveToFile() 方法保存生成的文件。

具体示例代码如下:

using Spire.Xls;

namespace InsertImageInExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            // 初始化一个 Workbook 实例
            Workbook workbook = new Workbook();
            // 获取第一个工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 将图片插入到工作表中
            sheet.Pictures.Add(1, 1, @"E:\work\sample.jpg");

            // 保存生成的文件
            workbook.SaveToFile("InsertImageFromDisk.xlsx", ExcelVersion.Version2016);
        }
    }
}

在 C# 和 VB.NET 中将网络图片(通过 URL)插入到 Excel 中

以下是在 Excel 中通过 URL 插入网络图片的操作步骤:

  • 初始化一个 Workbook 实例。
  • 通过 Workbook.Worksheets[sheetIndex] 属性获取指定的工作表。
  • 初始化一个 WebClient 实例,并使用 WebClient.DownloadData(urlAddress) 方法从指定的 URL 下载网络图片,获取字节数组。
  • 使用该字节数组初始化一个 MemoryStream 实例。
  • 通过内存流创建一个 Image 对象,然后使用 Worksheet.Pictures.Add() 方法将图片插入到工作表中。
  • 调用 Workbook.SaveToFile() 方法保存生成的文件。

具体示例代码如下:

using Spire.Xls;
using System.Drawing;
using System.IO;
using System.Net;

namespace InsertWebImageInExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            // 初始化一个 Workbook 实例
            Workbook workbook = new Workbook();

            // 获取第一个工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 指定图片的 URL 地址
            string URL = "https://www.e-iceblue.com/downloads/demo/Logo.png";

            // 初始化 WebClient 实例
            WebClient webClient = new WebClient();
            // 从指定 URL 下载图片并获取字节数组
            byte[] imageData = webClient.DownloadData(URL);

            // 使用字节数组初始化 MemoryStream 实例
            MemoryStream objImage = new MemoryStream(imageData);

            // 通过内存流创建 Image 对象
            Image image = Image.FromStream(objImage);

            // 将图片插入到工作表中
            sheet.Pictures.Add(3, 2, image);

            // 保存生成的文件
            workbook.SaveToFile("InsertWebImage.xlsx", ExcelVersion.Version2016);
        }
    }
}

方法补充

1、C#代码 向Excel文档写入图片,放置指定的单元格

            using (var workbook = new XLWorkbook())
            {
 
                    //插入图片到excel文档指定的列中
                    if (!string.IsNullOrEmpty(templateDto.Count > 0 ? templateDto[0].imagePath : ""))
                    {
                        string imagePath = templateDto[0].imagePath;
                        using (var ms = new FileStream(imagePath, FileMode.Open))
                        {
                            // 添加一个工作表
                            var worksheet = workbook.Worksheets.Add("Sheet1");
                            var picture = worksheet.AddPicture(ms);
                            var cell = worksheet.Cell("C1"); // 指定起始单元格
                            picture.MoveTo(cell);
                        } // 文件流在此处自动关闭
 
                        if (File.Exists(imagePath))
                        {
                            File.Delete(imagePath);
                        }
                    }
 
                    // 保存工作簿
                    workbook.SaveAs("exampleWithImage.xlsx");
                }
            }

2、C#使用NPOI在Excel中插入图片

下面代码展示了如何在Excel工作簿中使用HSSFWorkbook类添加图片。首先创建工作簿,然后将图片数据以PNG格式添加,接着获取名为稽核主页的sheet页,创建绘图父元素,定义图片的锚点坐标,最后在指定位置插入图片

//Excel 可以创建两种 HSSFWorkbook  XSSFWorkbook
IWorkbook wb = new HSSFWorkbook(ms);
 
//加入图片    pic["PlacodeQPA"] 为图片的byte[],  PictureType.PNG 为图片的类型            
int ip = wb.AddPicture(pic["PlacodeQPA"], PictureType.PNG);
//获取sheet页,可以根据sheet页名称获取,也可以根据sheet页索引(从0开始)获取
//sheet = wb.GetSheetAt(0);   
//先将图片加入wb中,再去获取sheet页!!!                
sheet = wb.GetSheet("稽核主页");
                    
IDrawing drawing = sheet.CreateDrawingPatriarch();
                    
IClientAnchor anchor = wb.GetCreationHelper().CreateClientAnchor();
//左上角的行                    
anchor.Row1 = 28;
//左上角的列                  
anchor.Col1 = 1;
//右下角的行                   
anchor.Row2 = 38;
//右下角的列                      
anchor.Col2 = 4;
                   
IPicture picture = drawing.CreatePicture(anchor, ip);

到此这篇关于使用C#代码实现将图片插入到Excel中的文章就介绍到这了,更多相关C#图片插入Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • .Net Winform开发笔记(四)透过现象看本质

    .Net Winform开发笔记(四)透过现象看本质

    本文将从Winform应用程序中的Program.cs文件的第一行代码开始逐步分析一个Winform应用程序到底是怎样从出生走向死亡
    2013-01-01
  • c# Newtonsoft 六个值得使用的特性(下)

    c# Newtonsoft 六个值得使用的特性(下)

    这篇文章主要介绍了c# Newtonsoft 六个值得使用的特性,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • C#实现虚拟键盘的实例详解

    C#实现虚拟键盘的实例详解

    这篇文章主要为大家详细介绍了如何利用C#实现虚拟键盘,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • C#画圆角矩形的方法

    C#画圆角矩形的方法

    这篇文章主要介绍了C#画圆角矩形的方法,涉及C#绘图的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-05-05
  • C#遍历List并删除某个元素的方法

    C#遍历List并删除某个元素的方法

    这篇文章主要介绍了C#遍历List并删除某个元素的方法,实例分析了正序与倒序遍历list及删除元素的使用技巧,需要的朋友可以参考下
    2015-02-02
  • C#基于正则去掉注释的方法示例

    C#基于正则去掉注释的方法示例

    这篇文章主要介绍了C#基于正则去掉注释的方法,结合简单实例形式分析了C#针对注释符号的正则匹配相关操作技巧,需要的朋友可以参考下
    2017-05-05
  • WinForm窗体间传值的方法

    WinForm窗体间传值的方法

    这篇文章主要介绍了WinForm窗体间传值的方法,包括了静态变量、公共变量、共有属性等方式,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • C#实现泛型动态循环数组队列的方法

    C#实现泛型动态循环数组队列的方法

    队列一种先进先出的数据结构,本文通过实例代码给大家介绍下C#实现泛型动态循环数组队列的方法,感兴趣的朋友一起看看吧
    2022-01-01
  • 使用C#将Excel导出为DataTable的实战指南

    使用C#将Excel导出为DataTable的实战指南

    在当今的数据驱动时代,Excel作为一种普遍的数据存储和交换格式,几乎无处不在,对于C#开发者而言,如何高效、便捷地将Excel文件中的数据整合到应用程序中进行处理,常常是一个需要面对的挑战,本文将介绍一种强大而易用的解决方案轻松实现Excel到DataTable的转换
    2025-10-10
  • C#实现textbox文本多行输出且自动换行输出

    C#实现textbox文本多行输出且自动换行输出

    在WinForms中通过设置TextBox的Multiline和WordWrap属性实现多行输出且自动换行,可以通过设计器或代码设置以上两个属性,文本输出方法包括直接赋值、追加文本和循环输出,完整示例代码展示了设计器设置后的代码实现,需要的朋友可以参考下
    2026-04-04

最新评论