解决使用NPOI在已有Sheet中插入多张图片问题

NPOI是操作Office的第三方组件,使用流方式,读写速度非常快。关于NPOI的更多认识,请见http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html

我在实践中遇到在Sheet中插入图片的问题,参考http://www.cnblogs.com/atao/archive/2009/09/28/1576044.html,可以向Sheet中插入图片,但是问题是Sheet必须是通过Workbook新创建的,在现有的Sheet上插入每次都没有成功。

现在场景要求:在现有的Excel模板中填写数据,并插入相应图片,当然模板是已存在的Sheet。经过N+1次的试验(N>=20)后,发现可以实现,并可以实现插入多图片。关键步骤在于:先将图片加入Workbook,然后再获取Sheet,否则添加的图片看不到。

//将图片加入Workbook
byte[] bytes = System.IO.File.ReadAllBytes(@"D:\MyProject\NPOIDemo\ShapeImage\image1.jpg");
int pictureIdx1 = hssfworkbook.AddPicture(bytes, HSSFWorkbook.PICTURE_TYPE_JPEG);

bytes = System.IO.File.ReadAllBytes(@"D:\MyProject\NPOIDemo\ShapeImage\image2.jpg");
int pictureIdx2 = hssfworkbook.AddPicture(bytes, HSSFWorkbook.PICTURE_TYPE_JPEG);

//获取存在的Sheet,必须在AddPicture之后
HSSFSheet sheet = hssfworkbook.GetSheet("Sheet1");
HSSFPatriarch patriarch = sheet.CreateDrawingPatriarch();

//插入图片
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 0, 0, 0, 1, 3);
HSSFPicture pict1 = patriarch.CreatePicture(anchor, pictureIdx1);

anchor = new HSSFClientAnchor(0, 0, 1023, 0, 10,10, 11, 13);
HSSFPicture pict2 = patriarch.CreatePicture(anchor, pictureIdx2);


 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页