C# NPOI 插入图片 excel 单元格
时间: 2023-07-07 16:31:14 浏览: 1138
C# NPOI生成word插入图片和表格
4星 · 用户满意度95%
要在 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 格式的图片。
阅读全文