使用AddPicture时EPPlus Excel错误

我一直在试图find这个解决scheme这么多小时,我真的很累,我希望有人可以指示我与我失踪。 我会尽可能地清楚所有可能的信息,以免混淆。

我正在使用EPPlus 3.1.3.0,Visual Studio 2010,C#,MVC.NET Framework 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")); } 

在这一刻,一切都很好! 该文件有信息,我可以下载并打开它没有任何问题。

现在我将添加我想要的图片,我将用下一个代码更改ToDo部分:

 Image img = Image.FromFile(imagePath); ExcelPicture pic = worksheet.Drawings.AddPicture("img", img); pic.SetPosition(1, 1); 

运行它,下载它,打开它aaand …错误:

Excel在“excel.xlsx”中发现不可读的内容。 你想恢复…等等等等等等

当然,我想恢复。

文件打开aaand …是空的,出现错误:

replace部分:/xl/worksheets/sheet1.xml部分出现XML错误。 加载错误。 线…

从这个时刻到现在,我一直在添加不同的代码:

 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); 

和…

 FileInfo img = new FileInfo(imagePath); ExcelPicture pic = worksheet.Drawings.AddPicture("img", img); pic.SetPosition(1, 1); 

最后一个例外:

:System.ArgumentException:部件URI在“打开包装约定”规范中定义的每个规则无效

许多许多人更喜欢用stream打开图像,添加setSize,因为如果没有定义它,某人会说某种问题,定义我自己的URI,将文件保存在服务器中,然后下载它等等。

我真的很感谢你能给我的任何帮助。 我不知道还有什么要检查的。 如果你需要更多的信息可以自由地问。

我发现了这个问题…或者那种。 感谢@Chris引导我在这一个和@Ernie的消化。

问题是我试图填充的模板文件里面的东西不能正常工作,当我尝试添加图像。 @Chris说:“你已经在模板中有一个绘图部分,EPPlus正在创build某种冲突”。 我不知道那可能是什么。

所以我从头开始创build一个新的模板(我使用的模板是由其他人完成的),一切都像魅力一样。

我执行的步骤:

  • 我使用EPPlus创build了一个新文件,然后下载它并运行。
  • 我创build了一个新的空模板,并添加EPPlus的图像,它的工作。
  • 我创build了一个新的模板,包含我需要的所有东西,并且工作正常。

如果他们有类似的问题,我希望这可以帮助别人。

我有同样的问题。 用prueba prueba的答案,我分析了我的原始模板,并发现:如果使用表格格式function(见截图),则AddPicture导致XML错误。 我的解决scheme是删除表格格式。

表格格式化功能

我有同样的问题,并注意到在添加图片之前添加一个背景图片文件被损坏。 如果您以后添加背景图片,它工作正常。

 osheet.BackgroundImage.Image = My.Resources.anyimage 

我发现了同样的问题。 我正在使用版本4.1.0.0。

我尝试使用这个代码:

 Bitmap arquivoLogotipo = new Bitmap(@"C:\xxxxxx.jpg"); ExcelPicture logotipoExcel = principal.Drawings.AddPicture("logotipo", arquivoLogotipo); logotipoExcel.SetPosition(50, 250); 

我也试试这个:

 FileInfo logotipoEndereco = new FileInfo("C\okokoko.jpg"); var logotipo = principal.Drawings.AddPicture("logotipo", logotipoEndereco); logotipo.SetPosition(50, 250); 

就我而言,我只是有一张白纸。 我的鳕鱼只是插入一个项目和一个图像的名称。我真的不知道发生了什么。

感谢:D!