2

我有以下代码行:

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

我的目的是将 my_memory_stream 中包含的流保存到名为“book1”的 xlsx 文件中:问题是当我运行此代码时发生异常(无效的 Excel2007Xlsx 文件格式)。有谁知道我做错了什么?

非常感谢!

4

2 回答 2

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 的开发人员布道师。

于 2013-06-13T19:42:37.127 回答
0

您似乎正在尝试将流直接保存到 Excel 文件中。Excel 文件具有固定格式,流不会遵守 excel 的标准文件协议。

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

于 2013-06-13T09:00:44.267 回答