【问题标题】:Exception when open excel: File contains corrupted data打开excel时出现异常:文件包含损坏的数据
【发布时间】: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 文件,但还是一样。

【问题讨论】:

    标签: excel openxml


    【解决方案1】:

    有一个MSDN页面描述了使用stream和open xml SDK读写Excel文件的过程。

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

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

    这是一种判断包是否被正确打包为存档的方法。

    希望这会有所帮助。

    【讨论】:

    • 您好,再次感谢。我发现这不是我的问题。上面的代码工作正常。异常是由 NUnit 引起的。
    • @Payson 嗨,您能否详细说明您的问题(以及您是如何解决的),因为我面临同样的问题。
    • 嗨@Payson,请阐明您的问题的解决方案或添加/标记正确答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多