在 Kotlin 中处理 Excel:Apache POI 库与 Kotlin 封装库

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在 Kotlin 中处理 Excel:Apache POI 与封装库



Kotlin 作为一门面向 JVM 的现代编程语言,为处理表格数据提供了出色的能力。尽管 Kotlin 生态系统中没有对 .xlsx 格式的原生支持,但您可以使用经过验证的、并适配了 Kotlin 语法的 Java 库。在本文中,我们将介绍核心工具——Apache POI——以及两个流行的 Kotlin 封装库:poi-kotlin 和 kotlinpoi。



1. Apache POI — 处理 Excel 的基础



Apache POI 是一个成熟的 Java 库,用于读写 Microsoft Office 格式(OLE2 和 OOXML)的文件。要处理现代的 .xlsx 文件,需要使用 poi-ooxml 子模块。在 build.gradle.kts 中添加依赖:



dependencies {    implementation("org.apache.poi:poi:5.3.0")    implementation("org.apache.poi:poi-ooxml:5.3.0")}


在 Kotlin 中读取 Excel 文件

从第一个工作表读取数据的示例:

import org.apache.poi.ss.usermodel.*import org.apache.poi.xssf.usermodel.XSSFWorkbookimport java.io.FileInputStream

fun readExcel(filePath: String) { val file = FileInputStream(filePath) val workbook: Workbook = XSSFWorkbook(file) val sheet: Sheet = workbook.getSheetAt(0)

for (row in sheet) { for (cell in row) { when (cell.cellType) { CellType.STRING -> print("${cell.stringCellValue} ") CellType.NUMERIC -> print("${cell.numericCellValue} ") else -> print(" ") } } println() } workbook.close()}


创建 Excel 文件

创建一个带有标题的简单表格:

import org.apache.poi.xssf.usermodel.XSSFWorkbookimport java.io.FileOutputStream

fun createExcel() { val workbook = XSSFWorkbook() val sheet = workbook.createSheet("数据")

// 标题行 val headerRow = sheet.createRow(0) headerRow.createCell(0).setCellValue("姓名") headerRow.createCell(1).setCellValue("年龄") headerRow.createCell(2).setCellValue("城市")

// 数据 val data = listOf( listOf("安娜", 25, "莫斯科"), listOf("伊万", 30, "圣彼得堡"), listOf("玛丽亚", 22, "喀山") )

data.forEachIndexed { index, rowData -> val row = sheet.createRow(index + 1) rowData.forEachIndexed { cellIndex, value -> row.createCell(cellIndex).setCellValue(value.toString()) } }

workbook.write(FileOutputStream("output.xlsx")) workbook.close()}


2. poi-kotlin 库 — 以 Kotlin 为先的封装库



poi-kotlin(版本 0.3.0)是一个轻量级的 Apache POI 封装库,它添加了 Kotlin 特有的扩展函数和 DSL 语法。安装方式:



repositories {    maven("https://jitpack.io")}dependencies {    implementation("com.github.nicklausw.poi-kotlin:poi-kotlin:0.3.0")}


poi-kotlin 示例

import com.github.nicklausw.poi.kotlin.*

fun dslExample() { val workbook = workbook { sheet("报告") { row { cell("产品") cell("价格") cell("数量") } row { cell("笔记本电脑") cell(1200.0) cell(5) } row { cell("鼠标") cell(25.5) cell(10) } } } workbook.writeToFile("report.xlsx")}

代码变得更易读,嵌套的 sheet { row { ... } } 块类似于构建 HTML 标记。



3. kotlinpoi 库 — 函数式方法



kotlinpoi(版

推荐