博客
关于我
NPOI在Excel中插入图片
阅读量:792 次
发布时间:2023-02-17

本文共 3078 字,大约阅读时间需要 10 分钟。

NPOI在Excel中插入图片的步骤说明

1. 读取图片文件并添加到工作簿中

首先,我们需要读取图片文件并将其添加到Excel工作簿中。以下是实现步骤:

// 读取图片文件byte[] imgBytes = System.IO.File.ReadAllBytes(@"CurvatureMaxPart1.bmp");// 添加图片到工作簿中int pictureIdx = wk.AddPicture(imgBytes, PictureType.PNG);

2. 设置画部和锚点

接下来,我们需要为插入的图片创建画部,并设置锚点以确定图片的位置。以下是详细步骤:

2.1 创建画部

IDrawing patriarch = image_sheet.CreateDrawingPatriarch();

2.2 设置锚点

锚点由8个参数决定,分别表示起始单元格和终止单元格的坐标偏移量和坐标。以下是常见的设置示例:

int rowline = 1; // y方向int colline = 0; // x方向IClientAnchor anchor = patriarch.CreateAnchor(    0,  // 起始单元格的X坐标偏移    0,  // 起始单元格的Y坐标偏移    0,  // 终止单元格的X坐标偏移    0,  // 终止单元格的Y坐标偏移    colline + j + 1, // 起始单元格的列数    rowline + i + 1,  // 起始单元格的行数    colline + 1 + j + 1, // 终止单元格的列数    rowline + 1 + 1    // 终止单元格的行数);

3. 插入图片

将设置好的锚点和图片索引结合,插入到指定位置:

IPicture pict = patriarch.CreatePicture(anchor, pictureIdx);

4. 重复插入多张图片

如果需要插入多张图片,可以重复上述步骤,确保每张图片的位置正确设置。

5. 保存Excel文件

最后,将修改后的Excel文件保存到指定路径:

using (FileStream fs = File.OpenWrite("bbb2.xls")){    wk.Write(fs);}

示例完整代码

以下是一个完整的插入图片的代码示例:

using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;namespace Test4NPIO{    class Program    {        static void Main(string[] args)        {            HSSFWorkbook wk = new HSSFWorkbook();            ISheet image_sheet = wk.CreateSheet("Images");            // 读取图片文件            byte[] imgBytes = System.IO.File.ReadAllBytes(@"CurvatureMaxPart1.bmp");            // 添加图片到工作簿中            int pictureIdx = wk.AddPicture(imgBytes, PictureType.PNG);            // 创建画部            IDrawing patriarch = image_sheet.CreateDrawingPatriarch();            // 设置锚点            int rowline = 1;            int colline = 0;            for (int i = 0; i < 20; i++)            {                for (int j = 0; j < 7; j++)                {                    IClientAnchor anchor = patriarch.CreateAnchor(                        0, 0,                        0, 0,                        colline + j + 1,                        rowline + i + 1,                        colline + 1 + j + 1,                        rowline + 1 + 1                    );                    IPicture pict = patriarch.CreatePicture(anchor, pictureIdx);                }            }            // 读取txt文件并写入Confidence表            string[] txtLines = File.ReadAllLines(@"C:\Users\29939\Desktop\当前项目文件\res\data.txt");            for (int i = 0; i < txtLines.Length; ++i)            {                string[] line = txtLines[i].Split(',');                IRow dataRow = confidence_sheet.CreateRow(i);                for (int j = 0; j < line.Length; j++)                {                    ICell cell = dataRow.CreateCell(j + 1);                    cell.SetCellValue(line[j]);                    cell.CellStyle = cellStyle;                }            }            // 保存Excel文件            using (FileStream fs = File.OpenWrite("bbb2.xls"))            {                wk.Write(fs);            }        }    }}

注意事项

  • 确保图片文件路径正确。
  • 确保工作簿和工作表已经创建。
  • 调整锚点参数根据实际需要,确保图片位置准确。
  • 保存Excel文件时,确保目标路径存在。

通过以上步骤,您可以成功在Excel表格中插入多张图片,并管理图片的位置和格式。

转载地址:http://sejfk.baihongyu.com/

你可能感兴趣的文章
Navicat for MySQL 查看BLOB字段内容
查看>>
Neo4j的安装与使用
查看>>
Neo4j(2):环境搭建
查看>>
nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Nessus漏洞扫描教程之配置Nessus
查看>>
Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
查看>>
Netpas:不一样的SD-WAN+ 保障网络通讯品质
查看>>
netsh advfirewall
查看>>
Netty WebSocket客户端
查看>>
Netty 异步任务调度与异步线程池
查看>>
Netty中集成Protobuf实现Java对象数据传递
查看>>
Netty工作笔记0006---NIO的Buffer说明
查看>>
Netty工作笔记0011---Channel应用案例2
查看>>
Netty工作笔记0013---Channel应用案例4Copy图片
查看>>
Netty工作笔记0014---Buffer类型化和只读
查看>>
Netty工作笔记0020---Selectionkey在NIO体系
查看>>
Vue踩坑笔记 - 关于vue静态资源引入的问题
查看>>
Netty工作笔记0025---SocketChannel API
查看>>
Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
查看>>
Netty工作笔记0050---Netty核心模块1
查看>>