C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > c# EPPlus图片流嵌入Excel

c#使用EPPlus将图片流嵌入到Excel实现示例

作者:谭广健

这篇文章主要为大家介绍了c#使用EPPlus将图片流嵌入到Excel实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

话说好长时间没用EPPlus进行生成Excel文件,对上的文章也是2019(EPPlus秘籍之Excel导出之图表导出),之后就有用但都是很简单的应用。这次为什么又提起呢?是因为一开始用FastReport做报表不错,但后来要求导出到Excel并且要在文件中插入图片,那就犯难了。因为图片是放在云服务器上的,最简单就做个图片引用就完事。但问题是导出的Excel后需要在内网(与互联网断开)的情况进行处理。那怎么办呢?有困难就要克服,那只能祭出我们的EPPlus

EPPlus秘籍之Excel导出之图表导出

弄个License

首先上个干货,就是EPPlus最新版开始商用要求License,那怎么解决,简单了就是弄个License。。

ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial;

这样就解决License的问题。好,到主题了,因为我们的图片都是放在云服务器,直接引用可以,但无互联网就不行,那怎么办。

办法很简单将图片嵌入到Excel解决,那又怎么嵌入的?研究了个把小时,终于有思路了。

图片采集的功能

将云服务器上的图片转化为文件流,然后通过文件流写入到Excel。这又怎么把云服务器的图片转为文件流了,有了之前写过一个图片采集的功能

核心代码

// 将图片转为byte字段
 public byte[] DownloadImageAsByteArray(string imageUrl)
 {
     using (var client = new HttpClient())
     {
         var response = client.GetAsync(imageUrl).Result;
         return response.Content.ReadAsByteArrayAsync().Result;
     }
 }
 MemoryStream imageData = new System.IO.MemoryStream(DownloadImageAsByteArray(img_src));

上面的DownloadImageAsByteArray的方法,就是将图片地址的图片转为byte字段,然后再写入MemoryStream类了,就完成图片的采集。

如何让写入

既然内存类已经获得图片的文件流,那又怎么写入呢?

查看了一圈EPPlus才发现有2个方法:

2个都可以但AddPictureAsync可能是异步的原因无法进行图片的定位,当然也可能我没发现,反正我直接用AddPicture、然后SetSize及SetPosition完事。AddPictureAsync这个就没后继试,如果图片多可以再研究。

上代码吧

 string img_src = ps_list.URL.Replace("cloud://cloud1-8g4e2khfd2b8c508.636c-cloud1-8g4e2khfd2b8c508-1320236877", "http://636c-cloud1-8g4e2khfd2b8c508-1320236877.tcb.qcloud.la");
 MemoryStream imageData = new System.IO.MemoryStream(DownloadImageAsByteArray(img_src));
 ExcelPicture image = worksheet.Drawings.AddPicture(obj.Id, imageData);
 image.SetSize(300, 300);
 image.SetPosition(rowIndex - 1, 30, 9, 30);

大概就是将微信云的图片转为 http方式,然后将图片存入文件流;再注入到EPPlus,然后就设置图片大小及位置。这里值得一提的是SetPosition,SetPosition可以4个参数,第一个Row就是行,第二个就行起位置,第三个就是列,最后一个就是列起位置。 这样就完美地将通过EPPlus将图片嵌入到Excel里面了。

以上就是c#使用EPPlus将图片流嵌入到Excel实现示例的详细内容,更多关于c# EPPlus图片流嵌入Excel的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文