您好,
透過 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 作为中间存储。