最近因為處理 Excel 比較多,所以分享比較多 EPPlus 遇到的事情跟心得,最近這需求是因為
我要去抓取 Excel 中的圖片,並且把其中的圖片抓出來,這邊是簡化過的範例,畢竟只是寫文章記錄
不用這麼去複雜化案例,這邊是我開一個 Excel 隨便貼入兩張圖,之後我們來測試看看使用 EPPlus 來把兩張圖片在 Excel 中的資訊抓出
並且把檔案輸出成每個圖檔..

直接就分享程式碼因為其實不難,這裡面我抓取了圖片的 Name ,這 Name 似乎就是這圖片之於這 Excel 中的 unique
還有抓取,這張圖片的 Description,在這我測試案例裡面 Description 是原本我圖片的檔名,這邊還有每張圖片在哪個 Column , Row
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
System.Console.OutputEncoding = System.Text.Encoding.UTF8;
using (var package = new ExcelPackage(AppDomain.CurrentDomain.BaseDirectory + "samplereadimg.xlsx"))
{
var sheet = package.Workbook.Worksheets["Sheet1"];
foreach (var item in sheet.Drawings)
{
var picture = item as ExcelPicture;
if (item != null)
{
//Get Image Info in Excel
Console.WriteLine(item.Name + "-" + item.Description + ":Form:" + item.From.Column + "," + item.From.Row + ";To:" + item.To.Column + "," + item.To.Row);
//Output to File.
File.WriteAllBytes(AppDomain.CurrentDomain.BaseDirectory + item.Name + "." + picture.Image.Type.ToString().ToLower(), picture.Image.ImageBytes);
}
}
}
結果:

今天大概分享到這裡,如果要知道那張圖片在 Excel 中的大小,因為每台電腦不同,這可能要透過 Column , Row 的寬度跟高度去計算
這當然又是另一個故事了。