我在这里使用EPPlus创建一些.XLSX文件时出现了一个奇怪的问题。我有一个包被创建,然后被输出到响应。将.XLSX输出为响应时出现EPPlus错误
var file = new FileInfo(@"C:\Test.xlsx");
ExcelPackage package = new ExcelPackage(file);
//...code to output data...//
package.Save();
这个文件保存到我的本地C:正确地驱动,当我打开它,它的伟大工程
我有如下创建一个包。没有错误或任何东西,格式是否正确等
不过,我现在想的输出文件的响应流,所以我已经修改了代码,我只好这个样子:
ExcelPackage package = new ExcelPackage();
//...code to output data...//
MemoryStream result = new MemoryStream();
package.SaveAs(result);
context.Response.Clear();
context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
context.Response.AddHeader("Content-Disposition", "attachment;filename=MissionDetails.xlsx");
result.WriteTo(context.Response.OutputStream);
context.Response.End();
但是当我运行此代码,我在尝试打开Excel文件时出现以下提示:
Excel found unreadable content in filename.xlsx. Do you want to recover the contents of this workbook? If you trust the source of this workbook, click Yes
单击是显示以下提示:
This file cannot be opened by using Microsoft Excel. Do you want to search the Microsoft Office Online Web site for a converter that can open the file?
我选择No
这里,然后打开Excel文件并显示此错误:
Excel completed file level validation and repair. Some parts of this workbook may have been repaired or discarded.
但文件然后加载罚款,似乎是正确的,一切都格式化。但是,每次我尝试打开文件时,它都会提供相同的提示和错误消息。
Note: The code to output the data does not change for either of these scenarios.
有没有人看过类似的东西?或者有什么想法什么可能导致此错误地保存文件只有当输出到响应?
为了测试的目的,您可以简化文件的内容(即设置单个单元格的值),以确保文件内容与文件流相比没有问题? – JustinStolle 2012-07-18 21:22:52
就像上面说的,内容和我将它保存到硬盘时相同。我已经测试了这一点并验证了它不是我添加到单元格中的内容。响应必须是一些问题。 – j00b 2012-07-18 21:43:50
因此,创建一个非常简单的文件流来验证问题出在哪里 - 如果是这样的话,它可能与EPPlus没有任何关系。 – JustinStolle 2012-07-18 21:47:56