使用C++调整工作簿压缩级别
Contents
[
Hide
]
调整工作簿压缩级别
开发人员在处理较大的工作簿时可以调整工作簿的压缩级别。 开发人员可以优先考虑较小的文件大小,也可以优先考虑处理时间。 Aspose.Cells 提供了一个枚举 OoxmlCompressionType,您可以用它来设置工作簿的压缩级别。 OoxmlCompressionType 枚举提供以下成员。
- Level1:最快但效果最差的压缩。
- Level2:比级别1稍慢,但更好。
- Level3: 稍慢于级别2,但更好。
- Level4: 稍慢于级别3,但更好。
- Level5: 比级别4略慢,但压缩效果更好。
- Level6: 速度和压缩效率的良好平衡。
- Level7: 压缩效果相当不错!
- Level8: 比Level7压缩更好!
- Level9: “最佳"压缩,指的是数据流大小降低最多。也是最慢的压缩。
以下代码片段演示了使用 OoxmlCompressionType 枚举,并比较了 Level1、Level6 和 Level9 的转换时间。 您还可以比较生成文件的大小。
#include <iostream>
#include <chrono>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace std::chrono;
int main()
{
Aspose::Cells::Startup();
// Source directory path
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
// Output directory path
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Load the workbook
Workbook workbook(srcDir + u"LargeSampleFile.xlsx");
// Create XlsbSaveOptions object
XlsbSaveOptions options;
// Set compression level to 1 and save the workbook
options.SetCompressionType(OoxmlCompressionType::Level1);
auto start = high_resolution_clock::now();
workbook.Save(outDir + u"LargeSampleFile_level_1_out.xlsb", options);
auto stop = high_resolution_clock::now();
auto duration = duration_cast<milliseconds>(stop - start);
std::cout << "Level 1 Elapsed Time: " << duration.count() << std::endl;
// Set compression level to 6 and save the workbook
options.SetCompressionType(OoxmlCompressionType::Level6);
start = high_resolution_clock::now();
workbook.Save(outDir + u"LargeSampleFile_level_6_out.xlsb", options);
stop = high_resolution_clock::now();
duration = duration_cast<milliseconds>(stop - start);
std::cout << "Level 6 Elapsed Time: " << duration.count() << std::endl;
// Set compression level to 9 and save the workbook
options.SetCompressionType(OoxmlCompressionType::Level9);
start = high_resolution_clock::now();
workbook.Save(outDir + u"LargeSampleFile_level_9_out.xlsb", options);
stop = high_resolution_clock::now();
duration = duration_cast<milliseconds>(stop - start);
std::cout << "Level 9 Elapsed Time: " << duration.count() << std::endl;
Aspose::Cells::Cleanup();
return 0;
}