Настройка уровня сжатия рабочей книги с помощью JavaScript через C++
Contents
[
Hide
]
Настройка уровня сжатия книги
Разработчики могут регулировать уровень сжатия рабочей книги при работе с большими файлами. Они могут отдавать предпочтение меньшему размеру файла или скорости обработки. Aspose.Cells for JavaScript через C++ предоставляет перечисление OoxmlCompressionType, которое можно использовать для установки уровня сжатия рабочей книги. Перечисление OoxmlCompressionType содержит следующие члены.
- Level1: Самое быстрое, но наименее эффективное сжатие.
- Level2: Немного медленнее, но лучше, чем уровень 1.
- Level3: Немного медленнее, но лучше, чем уровень 2.
- Level4: Немного медленнее, но лучше, чем уровень 3.
- Level5: Немного медленнее, чем уровень 4, но с лучшим сжатием.
- Level6: Хороший баланс скорости и эффективности сжатия.
- Level7: Очень хорошее сжатие!
- Уровень8: Лучшее сжатие, чем на уровне 7!
- Level9: “Лучшее” сжатие, где под лучшим понимается максимальное сокращение размера входного потока данных. Это также самое медленное сжатие.
В следующем фрагменте кода демонстрируется использование перечисления OoxmlCompressionType и сравнение времени преобразования для уровней 1, 6 и 9. Также можно сравнить размеры созданных файлов.
<!DOCTYPE html>
<html>
<head>
<title>Aspose.Cells Example - Save XLSB with Compression Levels</title>
</head>
<body>
<h1>Save XLSB with Different Compression Levels</h1>
<input type="file" id="fileInput" accept=".xls,.xlsx,.xlsb" />
<button id="runExample">Run Example</button>
<div>
<a id="downloadLink1" style="display: none; margin-right:10px;"></a>
<a id="downloadLink2" style="display: none; margin-right:10px;"></a>
<a id="downloadLink3" style="display: none;"></a>
</div>
<div id="result"></div>
</body>
<script src="aspose.cells.js.min.js"></script>
<script type="text/javascript">
const { Workbook, SaveFormat, XlsbSaveOptions, OoxmlCompressionType, Utils } = AsposeCells;
AsposeCells.onReady({
license: "/lic/aspose.cells.enc",
fontPath: "/fonts/",
fontList: [
"arial.ttf",
"NotoSansSC-Regular.ttf"
]
}).then(() => {
console.log("Aspose.Cells initialized");
});
document.getElementById('runExample').addEventListener('click', async () => {
const fileInput = document.getElementById('fileInput');
const resultDiv = document.getElementById('result');
const downloadLink1 = document.getElementById('downloadLink1');
const downloadLink2 = document.getElementById('downloadLink2');
const downloadLink3 = document.getElementById('downloadLink3');
if (!fileInput.files.length) {
resultDiv.innerHTML = '<p style="color: red;">Please select an Excel file.</p>';
return;
}
const file = fileInput.files[0];
const arrayBuffer = await file.arrayBuffer();
// Instantiating a Workbook object by opening the selected file
const workbook = new Workbook(new Uint8Array(arrayBuffer));
// Create Xlsb save options
const options = new XlsbSaveOptions();
// Level 1
let start = performance.now();
options.compressionType = OoxmlCompressionType.Level1;
const outputData1 = workbook.save(SaveFormat.Xlsb, options);
let elapsedMs1 = performance.now() - start;
const blob1 = new Blob([outputData1]);
downloadLink1.href = URL.createObjectURL(blob1);
downloadLink1.download = 'LargeSampleFile_level_1_out.xlsb';
downloadLink1.style.display = 'inline-block';
downloadLink1.textContent = 'Download Level 1 XLSB';
// Level 6
start = performance.now();
options.compressionType = OoxmlCompressionType.Level6;
const outputData2 = workbook.save(SaveFormat.Xlsb, options);
let elapsedMs2 = performance.now() - start;
const blob2 = new Blob([outputData2]);
downloadLink2.href = URL.createObjectURL(blob2);
downloadLink2.download = 'LargeSampleFile_level_6_out.xlsb';
downloadLink2.style.display = 'inline-block';
downloadLink2.textContent = 'Download Level 6 XLSB';
// Level 9
start = performance.now();
options.compressionType = OoxmlCompressionType.Level9;
const outputData3 = workbook.save(SaveFormat.Xlsb, options);
let elapsedMs3 = performance.now() - start;
const blob3 = new Blob([outputData3]);
downloadLink3.href = URL.createObjectURL(blob3);
downloadLink3.download = 'LargeSampleFile_level_9_out.xlsb';
downloadLink3.style.display = 'inline-block';
downloadLink3.textContent = 'Download Level 9 XLSB';
resultDiv.innerHTML = `
<p style="color: green;">Operation completed successfully!</p>
<ul>
<li>Level 1 Elapsed Time: ${elapsedMs1.toFixed(2)} ms</li>
<li>Level 6 Elapsed Time: ${elapsedMs2.toFixed(2)} ms</li>
<li>Level 9 Elapsed Time: ${elapsedMs3.toFixed(2)} ms</li>
</ul>
`;
});
</script>
</html>