WPF效果第二百一十篇之NPOI插入图片

本文介绍了如何利用NPOI库将集合对象转化为Excel文件,并详细展示了如何预先下载图片至本地,然后将这些图片插入到Excel的指定单元格中,通过调整图片大小以适应单元格。最后,作者分享了编程的乐趣和挑战。
摘要由CSDN通过智能技术生成

回顾上次更新文章已经过去一个多月了f4b93344de3d22f3ea28d6981e4776d3.png;今天正好趁着空闲时间赶紧来分享一篇最近帮一个老哥实现的效果9833b0254739db67845b28c859ce7fbe.png,二话不多说直接看效果:

14508b977fcd81a854cbff2397f549d4.gif

1、使用NPOI把集合对象转Excel文件,参考:

https://www.cnblogs.com/Ajoying/p/8005032.html

2、关于图片我是提前把他们缓存到本地了:

for(int i = 0; i < GoodList.Count; i++)
 {
     string name = GoodList[i].title;
     string cover = GoodList[i].cover;
     using(WebClient client = new WebClient())
     {
         //client.DownloadFile(new Uri(cover), $"{rootPath}\\{name}.png");
         // OR 
         try
         {
             client.DownloadFile(new Uri(cover), $ "{rootPath}\\{i+1}.jpeg");
             Thread.Sleep(50);
         }
         catch(Exception ex)
         {
             Console.WriteLine(ex.Message);
         }
     }
     this.BeginInvoke(new Action(() =>
     {
         MyProgressBar.Value = i;
     }));
 }

3、把缓存的图片插入到指定的单元格内:

string imagePath = $ "{AppDomain.CurrentDomain.BaseDirectory}Cache\\{rowIndex}.jpeg";
//从本地获取
var bytes = File.ReadAllBytes(imagePath);
if(bytes != null && bytes.Length != 0)
{
    //byte[] bytes = System.IO.File.ReadAllBytes(datarow["picture"].ToString());
    int pictureIdx = workbook.AddPicture(bytes, PictureType.JPEG);
    HSSFPatriarch patriarch = (HSSFPatriarch) sheet.CreateDrawingPatriarch();
    HSSFClientAnchor anchor = new HSSFClientAnchor(70, 40, 0, 0, 1, rowIndex, 0, rowIndex + 1);
    //把图片插到相应的位置
    HSSFPicture pict = (HSSFPicture) patriarch.CreatePicture(anchor, pictureIdx);
    // 指定我想要的长宽
    double standardWidth = 220;
    double standardHeight = 100;
    // 计算单元格的长宽
    double cellWidth = sheet.GetColumnWidthInPixels(cell.ColumnIndex);
    double cellHeight = cell.Row.HeightInPoints / 72 * 96;
    // 计算需要的长宽比例的系数
    double a = standardWidth / cellWidth;
    double b = standardHeight / cellHeight;
    pict.Resize(a, b);
}

最终简单的效果先这样吧fec416b6362f22f4cb8b37361e956327.png;以后有时间的话,可以再去摸索一下更复杂的效果3cd0c8e0ec42ca9092a05f68fc1f43be.png;编程不息、Bug不止、无Bug、无生活e6268b1db743c99cfc9583cfaaf25190.png;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值