C#使用NPOI使用现有的图片向excel单元格指定位置插入图片,亲测有效

要生成条形码并保存到本地的,链接上一篇:https://blog.csdn.net/qq_40467670/article/details/120278050

 if (!col3.Equals("")){
	//在单元格中放入条形码
    byte[] bytes = System.IO.File.ReadAllBytes(fileSavePath.ToString());
    int pictureIdx = workbook.AddPicture(bytes, PictureType.JPEG);
    HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
    // 插图片的位置  HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2) 后面再作解释
    HSSFClientAnchor anchor = new HSSFClientAnchor(1, 1, 1, 1, 4, 4 + jj, 5, 4 + jj + 1);
    //把图片插到相应的位置
    HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx);
}

其中HSSFClientAnchor的几个参数是
HSSFClientAnchor(int dx1,int dy1,int dx2,int dy2,int col1,int row1,int col2,int row2)

dx1:图片左边相对excel格的位置(x偏移) 范围值为:0~1023;即输100 偏移的位置大概是相对于整个单元格的宽度的100除以1023大概是10分之一
dy1:图片上方相对excel格的位置(y偏移) 范围值为:0~256
dx2:图片右边相对excel格的位置(x偏移) 范围值为:0~1023
dy2:图片下方相对excel格的位置(y偏移) 范围值为:0~256
col1和row1:图片左上角的位置,以excel单元格为参考,比喻这两个值为(1,1),那么图片左上角的位置就是excel表(1,1)单元格的右下角的点(A,1)右下角的点
col2和row2:图片右下角的位置,以excel单元格为参考,比喻这两个值为(2,2),那么图片右下角的位置就是excel表(2,2)单元格的右下角的点(B,2)右下角的点

效果如下图所示:
在这里插入图片描述

要在 C#使用 NPOI 插入图片Excel 单元格中,你可以按照以下步骤操作: 1. 加载 Excel 文件并创建工作簿和工作表对象: ```csharp FileStream fs = new FileStream("test.xlsx", FileMode.Open, FileAccess.ReadWrite); IWorkbook workbook = new XSSFWorkbook(fs); //或者 new HSSFWorkbook(fs) ISheet sheet = workbook.GetSheetAt(0); ``` 2. 创建图片对象并设置其属性: ```csharp byte[] imgBytes = File.ReadAllBytes("image.png"); int pictureIdx = workbook.AddPicture(imgBytes, PictureType.PNG); XSSFDrawing drawing = (XSSFDrawing)sheet.CreateDrawingPatriarch(); XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, 1, 1, 2, 3); XSSFPicture picture = (XSSFPicture)drawing.CreatePicture(anchor, pictureIdx); ``` 其中,`XSSFDrawing` 和 `XSSFClientAnchor` 是 NPOI 的类,用于设置图片Excel 中的位置和大小。`anchor` 的参数依次为:起始列号、起始行号、结束列号、结束行号、起始列偏移量、起始行偏移量、结束列偏移量、结束行偏移量。 3. 将图片插入到单元格中: ```csharp IRow row = sheet.GetRow(0); ICell cell = row.CreateCell(0); cell.SetCellValue("图片插入Excel"); anchor.SetAnchorType(2); picture.Anchor = anchor; ``` 需要注意的是,插入图片单元格必须为空。如果单元格不为空,可以先将单元格的值清空,再插入图片。 4. 保存 Excel 文件: ```csharp fs.Close(); FileStream outFs = new FileStream("test.xlsx", FileMode.Create); workbook.Write(outFs); outFs.Close(); ``` 这样就可以在 Excel 单元格插入图片了。需要注意的是,NPOI 只支持插入 PNG 和 JPEG 格式的图片
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值