欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c#使用EPPlus將圖片流嵌入到Excel實現(xiàn)示例

 更新時間:2023年12月18日 14:09:05   作者:譚廣健  
這篇文章主要為大家介紹了c#使用EPPlus將圖片流嵌入到Excel實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

話說好長時間沒用EPPlus進行生成Excel文件,對上的文章也是2019(EPPlus秘籍之Excel導出之圖表導出),之后就有用但都是很簡單的應(yīng)用。這次為什么又提起呢?是因為一開始用FastReport做報表不錯,但后來要求導出到Excel并且要在文件中插入圖片,那就犯難了。因為圖片是放在云服務(wù)器上的,最簡單就做個圖片引用就完事。但問題是導出的Excel后需要在內(nèi)網(wǎng)(與互聯(lián)網(wǎng)斷開)的情況進行處理。那怎么辦呢?有困難就要克服,那只能祭出我們的EPPlus

EPPlus秘籍之Excel導出之圖表導出

弄個License

首先上個干貨,就是EPPlus最新版開始商用要求License,那怎么解決,簡單了就是弄個License。。

ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial;

這樣就解決License的問題。好,到主題了,因為我們的圖片都是放在云服務(wù)器,直接引用可以,但無互聯(lián)網(wǎng)就不行,那怎么辦。

辦法很簡單將圖片嵌入到Excel解決,那又怎么嵌入的?研究了個把小時,終于有思路了。

圖片采集的功能

將云服務(wù)器上的圖片轉(zhuǎn)化為文件流,然后通過文件流寫入到Excel。這又怎么把云服務(wù)器的圖片轉(zhuǎn)為文件流了,有了之前寫過一個圖片采集的功能

核心代碼

// 將圖片轉(zhuǎn)為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的方法,就是將圖片地址的圖片轉(zhuǎn)為byte字段,然后再寫入MemoryStream類了,就完成圖片的采集。

如何讓寫入

既然內(nèi)存類已經(jīng)獲得圖片的文件流,那又怎么寫入呢?

查看了一圈EPPlus才發(fā)現(xiàn)有2個方法:

  • 1、AddPicture 這個直接存入。
  • 2、AddPictureAsync 照字面解析應(yīng)該是異步。

2個都可以但AddPictureAsync可能是異步的原因無法進行圖片的定位,當然也可能我沒發(fā)現(xiàn),反正我直接用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);

大概就是將微信云的圖片轉(zhuǎn)為 http方式,然后將圖片存入文件流;再注入到EPPlus,然后就設(shè)置圖片大小及位置。這里值得一提的是SetPosition,SetPosition可以4個參數(shù),第一個Row就是行,第二個就行起位置,第三個就是列,最后一個就是列起位置。 這樣就完美地將通過EPPlus將圖片嵌入到Excel里面了。

以上就是c#使用EPPlus將圖片流嵌入到Excel實現(xiàn)示例的詳細內(nèi)容,更多關(guān)于c# EPPlus圖片流嵌入Excel的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論