我一直在试图找到这么多小时的解决方案,我真的很累,我希望有人能指出我失踪。我会尽可能清楚地表达所有可能的信息,以免混淆。使用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