因为项目要求需要在同一个单元格导入两张图片,依据了下面两个链接的办法
NPOI导出多张图片到Excel
c# 使用NPOI向Excel中的应用三(插入图片 )
上面代码的主体是一样的,只不过插入多张图片需要在同一个patriarch中,上面博文提到过不能使用for循环,所以我第一次直接将固定的两个图片路径创建,发现创建失败,于是把他放到for循环里面发现可以创建,或许是一个bug又或是我参数赋值错误。

这是主要的代码,我采用for循环创建,一起创建可以参照博客2的内容。但是还要依据一个Sheet只能有一个patriarch,在循环上就新建一个备用

1
2
3
4
5
byte[] bytes = File.ReadAllBytes(rePath);
int pictureIdx = _workbook.AddPicture(bytes, PictureType.JPEG);
HSSFClientAnchor anchor = new HSSFClientAnchor(0 + m*500, 0, 500 + m*500 , 200, j, rowIndex, j, rowIndex);
HSSFPicture picture = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx);

后面的函数HSSFClientAnchor的函数依次是图片锚点1,图片锚点2 ,锚点1的行列,锚点2的行列

两个锚点分别代表左上与右下两个位置,其中x<1023,y<255,如果让两张图片排列在同一个Cell中可以均分x = 1023/2,即可布满整个单元格,但是拉伸后这个效果自然就结束了。


Cell四周填充线:

1
2
3
4
colorStyle.BorderTop = BorderStyle.Thin;
colorStyle.BorderRight = BorderStyle.Thin;
colorStyle.BorderBottom = BorderStyle.Thin;
colorStyle.BorderLeft = BorderStyle.Thin;

Cell内文字中心对齐竖向对齐及自动换行

1
2
3
colorStyle.WrapText = true;
colorStyle.Alignment = HorizontalAlignment.Center;
colorStyle.VerticalAlignment = VerticalAlignment.Center;

Cell背景颜色设置

1
2
3
colorStyle.FillPattern = FillPattern.SolidForeground;
colorStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Red.Index;