我正在尝试使用 SXSSFWorkbook 从头开始编写 Excel 电子表格。
wb = SXSSFWorkbook(500)
wb.isCompressTempFiles = true
sh = streamingWorkbook.createSheet(t.getMessage("template.sheet.name"))
Run Code Online (Sandbox Code Playgroud)
一切都很好,但是当我调用最终代码时:
val out = FileOutputStream(localPath)
wb.write(out)
out.close()
// dispose of temporary files backing this workbook on disk
wb.dispose()
Run Code Online (Sandbox Code Playgroud)
我得到了一个巨大的 excel 文件,而不是我期待的压缩的 XLSX。我尝试手动压缩文件,从 120MB 的文件中我可以将其压缩到 9MB。那么我错过了什么?
使用:Kotlin 和
implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '4.1.2' // For `.xlsx` files
Run Code Online (Sandbox Code Playgroud)
-- 更新 1
我的印象是 xlsx 本质上是包含 xml 数据的压缩文件[1]。通过 XSSFWorkbook 和 SXSSFWorkbook 输出的 POI 至少可以压缩 10 个数量级。 我已经使用这个简单的代码来演示:
fun main() {
val workbook = XSSFWorkbook()
writeRowsAndSave(workbook, "test.xlsx") …Run Code Online (Sandbox Code Playgroud)