透過 Aspose.Zip 壓縮 XLS 檔案,會造成 XLS 檔案有問題

您好,
透過 Aspose.Zip 壓縮 XLS 檔案,會造成 XLS 檔案有問題,
解壓縮 Zip 後,開啟 Excel 檔會有以下的錯誤訊息,
我們發現 zipt1.xls 的部份內容有問題。您要我們盡可能嘗試復原嗎? ......
使用 Aspose.Cells 25.1.1, Aspose.Zip 24.12.0
程式如下,

var fileName = "t1.xls";
var workbook = new Aspose.Cells.Workbook(fileName);
MemoryStream msXLS = new();
workbook.Save(msXLS, (SaveFormat)workbook.FileFormat);
MemoryStream result = new();
using (Archive mapZip = new Archive())
{
    mapZip.CreateEntry("zipt1.xls", msXLS);
    mapZip.Save(result);
}
result.Seek(0, SeekOrigin.Begin);
using (FileStream file = new FileStream("file.zip", FileMode.Create, System.IO.FileAccess.Write))
    result.WriteTo(file);

測試的Excel =>
t1.zip (482.5 KB)

產生出來的 file.zip =>
file.zip (468.4 KB)

@rainmaker_ho
感谢你提供的样例文件和代码。使用Aspose.Cells保存excel文件到流对象时,请将Workbook.FileFormat做一次转换。请参考以下样例代码。
请更改以下代码:

workbook.Save(msXLS, (SaveFormat)workbook.FileFormat);

为:

workbook.Save(msXLS, FileFormatUtil.FileFormatToSaveFormat( workbook.FileFormat));

我们的Zip团队会继续检查这个压缩的问题!

您好,
調整程式碼之後,開啟 Excel 時,還是會顯示錯誤訊息。
而且Excel中設定的Style都不見了。

@rainmaker_ho,

我使用以下示例代码测试了您的输入 XLS 文件,其中使用了 Aspose.Cells,没有使用 Aspose.Zip,输出 XLS 文件(附件)经过了微调,生成的文件中的样式完好无损。
例如,

var fileName = "e:\\test2\\t1.xls";
var workbook = new Aspose.Cells.Workbook(fileName);
MemoryStream msXLS = new();
workbook.Save(msXLS, FileFormatUtil.FileFormatToSaveFormat( workbook.FileFormat));
msXLS.Seek(0, SeekOrigin.Begin);
using (FileStream file = new FileStream("e:\\test2\\file1.xls", FileMode.Create, System.IO.FileAccess.Write))
    msXLS.WriteTo(file)

file1.zip (482.2 KB)

这可能是 Aspose.Zip 的问题。我们将通知 Aspose.Zip 团队调查此问题,他们将对其进行评估并尽快回复您。

我发现压缩前的 msXLS 长度为 579072 字节。这超出了 Aspose.ZIP 的评估限制。压缩时并非所有 msXLS 字节都会被读取,因此 zipt1.xls 会损坏。
您可以获得临时许可证来测试 Aspose.ZIP,不受评估限制。
您可以直接按路径保存档案,也可以将档案保存到文件流中,而无需使用 MemoryStream 作为中间存储。