我一直在試圖找到這麼多小時的解決方案,我真的很累,我希望有人能指出我失蹤。我會盡可能清楚地表達所有可能的信息,以免混淆。使用AddPicture時出現EPPlus Excel錯誤
我使用EPPlus 3.1.3.0,Visual Studio 2010中,C#,MVC.NET框架4.0和MS Excel 2007
我只是試圖做一個簡單的事情:下載的Excel與文件在它的圖片。沒有別的。
我打開一個excel文件,用數據填充它,並添加圖片,其代碼如下動作:
public ActionResult FillExcelFile(string imagePath)
{
FileInfo template = new FileInfo([path_of_excel_file]);
ExcelPackage xls = new ExcelPackage(template);
ExcelWorksheet worksheet = xls.Workbook.Worksheets["Sheet1"];
worksheet.Cells[1, 1].Value = "data1";
worksheet.Cells[1, 2].Value = "data2";
worksheet.Cells[1, 3].Value = "data3";
/* ToDo: add picture */
return File(xls.GetAsByteArray(), "application/vnd.ms-excel", "excel.xlsx"));
}
這時一切都很正常!該文件有信息,我可以下載並打開它沒有任何問題。
現在我將添加我想要的圖片,我將與下一個代碼更改待辦部分:
Image img = Image.FromFile(imagePath);
ExcelPicture pic = worksheet.Drawings.AddPicture("img", img);
pic.SetPosition(1, 1);
運行它,下載它,AAAND打開它...錯誤:
Excel found unreadable content in "excel.xlsx". Do you want to recover... blah blah blah
當然我想恢復。
文件打開AAAND ...是空的,一個錯誤出現:
Replaced Part: /xl/worksheets/sheet1.xml part with XML error. Load error. Line...
從這一刻開始到現在我已經加入不同的代碼:
Image img = Image.FromFile(imagePath);
ExcelPicture pic = worksheet.Drawings.AddPicture("img", img);
pic.SetPosition(1, 1);
pic.SetSize(100, 100);
而且......
Bitmap img = new Bitmap(Image.FromFile(imagePath));
ExcelPicture pic = worksheet.Drawings.AddPicture("img", img);
pic.SetPosition(1, 1);
And ...
FileInfo img = new FileInfo(imagePath);
ExcelPicture pic = worksheet.Drawings.AddPicture("img", img);
pic.SetPosition(1, 1);
隨着最後一個出現的例外:
: System.ArgumentException: Part URI is not valid per rules defined in the Open Packaging Conventions specification
和許多許多許多更喜歡開放的形象與流,加入的setSize因爲有人說了一些這樣的問題,如果你不定義它,定義我自己的URI,將文件保存在服務器中,然後下載它等。
我真的很感謝您給我的任何幫助,真的。我不知道還有什麼要檢查。如果您需要更多的信息請隨時詢問。
它可能是您的內容類型?嘗試「application/vnd.openxmlformats-officedocument.spreadsheetml.sheet」, – Ernie 2014-10-17 12:55:40
不,@Ernie我做到了這一點,仍然無法正常工作,但感謝給我另一件事情,以檢查未來:) – 2014-10-17 14:26:14
你還是會得到錯誤if你從頭開始創建文件而不是打開模板文件? – Chris 2014-10-17 15:41:15