Excel – Exception when open excel: File contains corrupted data

excelopenxml

I am trying to read an excel with OpenXML.
What I did is simply as following:

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

I initialized this.originalFilename in the constructor. It is the filename ended with '.xlsx' which i created with excel 2010.

But this line of code

using (SpreadsheetDocument excel = SpreadsheetDocument.Open(stream, true))

gives the exception: Message: System.IO.FileFormatException: File contains corrupted data.
The StackTrace:
enter image description here

Does anyone know how to solve this problem? At the beginning, I didn't use the Stream, I just use SpreadsheetDocument.Open(filename, true). However, it turns out to be exactly the same exception.
I've tried to create a new .xlsx file, but it's still the same.

Best Answer

There is a MSDN page which describes the process of reading and writing Excel file using stream and open xml SDK.

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

Try extracting the document contents through zip application and check whether you are getting the standard folders inside like xl,docProps and _rels etc.,

This is a method to find whether the package is properly packaged as archive or not.

Hope this helps.

Related Topic