打开excel时出现exception:文件包含损坏的数据

我正在尝试阅读OpenXML的Excel。 我所做的只是如下:

private WorkbookPart wbPart = null; private SpreadsheetDocument document = null; public byte[] GetExcelReport() { byte[] original = File.ReadAllBytes(this.originalFilename); using (MemoryStream stream = new MemoryStream()) { stream.Write(original, 0, original.Length); using (SpreadsheetDocument excel = SpreadsheetDocument.Open(stream, true)) { this.document = excel; this.wbPart = document.WorkbookPart; UpdateValue(); } stream.Seek(0, SeekOrigin.Begin); byte[] data = stream.ToArray(); return data; } } 

我在构造函数中初始化this.originalFilename。 这是以“.xlsx”结尾的文件名,我用excel 2010创build。

但是这行代码

使用(SpreadsheetDocument excel = SpreadsheetDocument.Open(stream,true))

给出例外:消息:System.IO.FileFormatException:文件包含损坏的数据。 StackTrace: 在这里输入图像说明

有谁知道如何解决这个问题? 一开始,我没有使用Stream,我只是使用SpreadsheetDocument.Open(filename,true)。 然而,事实certificate是完全一样的例外。 我试图创build一个新的.xlsx文件,但它仍然是一样的。

有一个MSDN页面,描述使用stream读取和写入Excel文件的过程,并打开XML SDK。

http://msdn.microsoft.com/en-us/library/office/ff478410.aspx

尝试通过zip应用程序提取文档内容,并检查您是否像xl,docProps和_rels等获得标准文件夹,

这是一个方法来查找软件包是否被正确打包为归档文件。

希望这可以帮助。