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

5 篇文章 0 订阅

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,否则添加的图片看不到。

[csharp]  view plain  copy
  1. //将图片加入Workbook  
  2. byte[] bytes = System.IO.File.ReadAllBytes(@"D:\MyProject\NPOIDemo\ShapeImage\image1.jpg");  
  3. int pictureIdx1 = hssfworkbook.AddPicture(bytes, HSSFWorkbook.PICTURE_TYPE_JPEG);  
  4.   
  5. bytes = System.IO.File.ReadAllBytes(@"D:\MyProject\NPOIDemo\ShapeImage\image2.jpg");  
  6. int pictureIdx2 = hssfworkbook.AddPicture(bytes, HSSFWorkbook.PICTURE_TYPE_JPEG);  
  7.   
  8. //获取存在的Sheet,必须在AddPicture之后  
  9. HSSFSheet sheet = hssfworkbook.GetSheet("Sheet1");  
  10. HSSFPatriarch patriarch = sheet.CreateDrawingPatriarch();  
  11.   
  12. //插入图片  
  13. HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 0, 0, 0, 1, 3);  
  14. HSSFPicture pict1 = patriarch.CreatePicture(anchor, pictureIdx1);  
  15.   
  16. anchor = new HSSFClientAnchor(0, 0, 1023, 0, 10,10, 11, 13);  
  17. HSSFPicture pict2 = patriarch.CreatePicture(anchor, pictureIdx2);  


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值