【发布时间】:2014-01-23 21:44:16
【问题描述】:
我正在尝试使用 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。这是我用 excel 2010 创建的以“.xlsx”结尾的文件名。
但是这行代码
使用 (SpreadsheetDocument excel = SpreadsheetDocument.Open(stream, true))
给出异常:消息:System.IO.FileFormatException:文件包含损坏的数据。 堆栈跟踪:
有谁知道如何解决这个问题?一开始我没有使用Stream,我只是使用SpreadsheetDocument.Open(filename, true)。然而,事实证明这是完全相同的例外。 我尝试创建一个新的 .xlsx 文件,但还是一样。
【问题讨论】: