C#使用npoi插入Excel图片时调整图片的位置
时间: 2025-06-29 11:25:34 浏览: 9
### 使用 C# 和 NPOI 插入 Excel 图片并调整其位置
为了实现向 Excel 文件中插入图片以及调整该图片的位置,可以利用 `NPOI` 库中的特定方法来完成此功能。以下是具体的操作方式:
#### 导入库
首先确保项目已经包含了必要的库支持:
```csharp
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;
```
#### 创建工作簿和工作表
初始化一个新的 `.xlsx` 类型的工作簿,并创建一个名为 "Sheet1" 的工作表。
```csharp
IWorkbook workbook = new XSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");
```
#### 准备图像数据流
加载要插入到 Excel 中的图片文件作为字节数组形式的数据源。
```csharp
FileStream imgStream = File.OpenRead(@"path\to\your\image.png");
byte[] bytes = new byte[imgStream.Length];
imgStream.Read(bytes, 0, (int)imgStream.Length);
IDrawing drawing = sheet.CreateDrawingPatriarch();
IClientAnchor anchor = HelperFunctions.CreateAbsoluteAnchor(sheet, 2, 2, 5, 5); // 定义绝对定位锚点
```
此处定义了一个辅助函数用于设置图片的具体坐标位置[^3]。
#### 设置图片位置
通过自定义的帮助类或扩展方法设定图片放置的确切区域。这里采用的是基于单元格索引的方式指定起始与结束行列数。
```csharp
public static class HelperFunctions {
public static IClientAnchor CreateAbsoluteAnchor(ISheet sheet, int fromRow, int fromColumn, int toRow, int toColumn){
var helper = sheet.Workbook.GetCreationHelper();
return helper.CreateClientAnchor().With{
Col1 = fromColumn,
Row1 = fromRow,
Col2 = toColumn,
Row2 = toRow
};
}
}
```
上述代码片段展示了如何构建一个绝对定位的锚定对象,它决定了所插入图形相对于表格内某些固定单元格边界的相对偏移量[^4]。
#### 添加图片至工作表
最后一步就是实际地把准备好的二进制图像添加进去,并应用之前配置过的布局属性。
```csharp
IPicture picture = drawing.CreatePicture(anchor, workbook.AddPicture(bytes, PictureType.PNG));
picture.Resize(); // 可选调用 Resize 方法自动缩放以适应分配的空间大小
```
以上即完成了整个流程——不仅实现了将外部资源嵌入电子表格之中,还精确控制了它们显示出来的最终形态。
阅读全文
相关推荐

















