2013-06-13 60 views
2

我有下面的代碼行:問題用VB和閱讀Aspose

Dim ms As New MemoryStream(my_memory_stream) 
workbook As New Workbook(ms) 
workbook.Save("C:\book1.xlsx") 

我的目的是包含在my_memory_stream流保存到一個名爲「BOOK1」的XLSX文件:問題是,當我運行這個代碼發生異常(無效的Excel2007Xlsx文件格式)。 有誰知道我在做什麼錯?

非常感謝!

+0

嘗試不保存在系統根目錄C:.. – matzone

+0

我試過了,但我仍然有同樣的問題 –

+0

** my_memory_stream **中有什麼? – matzone

回答

2

最有可能的問題是base64格式。它是ASCII字符的形式。您需要將Base64數據轉換爲二進制。然後在Workbook類中加載二進制數據。

' Decode base64 
Dim binaryBytes As Byte() = Convert.FromBase64CharArray(base64Data, 0, base64Data.Length) 

' Load in MemoryStream 
Dim binaryStream As New MemoryStream(binaryBytes) 

' Pass memory stream to Workbook 
Dim workbook As New Aspose.Cells.Workbook(my_memory_stream) 
workbook.Save(dataDir + "workbook-out.xlsx") 

還要注意的是,如果你的解碼是正確的,你可以直接保存二進制字節或磁盤傳輸,並驗證了Excel正確保存。

PS。我是Aspose的開發者推廣者。

+0

非常感謝!我會盡快嘗試 –

0

看來您正在嘗試將流直接保存到Excel文件。 Excel文件具有固定的格式,並且該流不符合excel的標準文件協議。

我想你想使用Microsoft.office.Interop.Excel命名空間的Workbook對象。

+0

my_memory_stream包含一個xlsx文件(base64格式) –