2014-01-23 148 views
2

我正嘗試讀取OpenXML的excel。 我所做的僅僅是如下:打開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' 結束的文件名我與2010年的excel

創建但是這行代碼

使用(SpreadsheetDocument的excel = SpreadsheetDocument.Open(流,真))

給出異常:消息:System.IO.FileFormatException:文件包含損壞的數據。 The StackTrace: enter image description here

有沒有人知道如何解決這個問題?在開始時,我沒有使用Stream,我只是使用SpreadsheetDocument.Open(filename,true)。然而,事實證明,這是一個例外。 我試圖創建一個新的.xlsx文件,但它仍然是一樣的。

回答

1

有一個MSDN頁面,它描述了使用流讀取和寫入Excel文件以及打開xml SDK的過程。

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

試圖通過壓縮程序提取文件的內容,檢查你是否越來越像裏面XL,docProps和_rels等標準文件夾,

這是一種方法來查找包是否妥善打包爲檔案或不是。

希望這會有所幫助。

+0

我試過完全一樣的東西。但它不起作用。 – Payson

+0

嗨,再次感謝。我發現這不是我的問題。上面的代碼工作正常。異常是由NUnit引起的。 – Payson

+1

@Payson您好,請您詳細說明您的問題到底是什麼(以及您是如何解決問題的),因爲我面臨同樣的問題。 –

相關問題