小编Mir*_* D.的帖子

SXSSFWorkbook.write to FileOutputStream 写入大文件

我正在尝试使用 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)

java openxml apache-poi kotlin

6
推荐指数
1
解决办法
2505
查看次数

标签 统计

apache-poi ×1

java ×1

kotlin ×1

openxml ×1