WPF效果第二百一十篇之NPOI插入图片
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF效果第二百一十篇之NPOI插入图片相关的知识,希望对你有一定的参考价值。
回顾上次更新文章已经过去一个多月了;今天正好趁着空闲时间赶紧来分享一篇最近帮一个老哥实现的效果,二话不多说直接看效果:
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.BaseDirectoryCache\\\\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);
最终简单的效果先这样吧;以后有时间的话,可以再去摸索一下更复杂的效果;编程不息、Bug不止、无Bug、无生活;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下!
以上是关于WPF效果第二百一十篇之NPOI插入图片的主要内容,如果未能解决你的问题,请参考以下文章
第二百一十四节,jQuery EasyUI,Calendar(日历)组件
第二百一十八节,jQuery EasyUI,TimeSpinner(时间微调)组件