Loading

C#使用 NPOI 添加图片到 Excel 单元格

入参:工作簿对象,某个单元格对象,将要写入的图片字节数组

 

对象解释:

XSSFClientAnchor:可设置图片放置的开始、结束单元格,X、Y 起始点位(这里挖个坑,具体设置多少可以根据行高等进行计算,具体可参考 pic.Resize() 的实现 ) 

 

 

 1 /// <summary>
 2 /// 将图片添加到工作簿
 3 /// </summary>
 4 /// <param name="workbook"></param>
 5 /// <param name="cell"></param>
 6 /// <param name="bytes"></param>
 7 void SetCellPhoto(IWorkbook workbook, NPOI.SS.UserModel.ICell cell, byte[] bytes)
 8 {
 9     int pictureIdx = workbook.AddPicture(bytes, NPOI.SS.UserModel.PictureType.PNG);
10 
11     // 创建绘图对象
12     var drawing = workbook.GetSheetAt(0).CreateDrawingPatriarch();
13 
14     XSSFClientAnchor anchor = new XSSFClientAnchor(
15         0, 50000, 0, 0,  // 从单元格左上角开始
16         cell.ColumnIndex + 2,
17         cell.RowIndex,
18         cell.ColumnIndex + 5,
19         cell.RowIndex + 1
20         );
21     anchor.AnchorType = (AnchorType)2; // 绝对定位
22 
23     // 创建图片对象
24     XSSFPicture pic = (XSSFPicture)drawing.CreatePicture(anchor, pictureIdx);
25 
26     // 设置图片的缩放大小
27     pic.Resize(1, 0.9);
28  }

 

posted @ 2024-06-19 14:46  Pengxx  阅读(140)  评论(0编辑  收藏  举报