You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jetpack Compose Desktop中用Kotlin读写Excel文件

在Jetpack Compose Desktop中用Kotlin读写Excel文件

1. 依赖配置说明

Jetpack Compose Desktop项目默认使用Gradle构建,因此没有pom.xml(这是Maven的配置文件)。你需要将Apache POI的依赖添加到Gradle构建脚本中,分两种配置格式:

Kotlin DSL(build.gradle.kts)

在脚本的dependencies代码块中添加:

dependencies {
    // 处理.xls格式文件
    implementation("org.apache.poi:poi:5.2.5")
    // 处理.xlsx格式文件
    implementation("org.apache.poi:poi-ooxml:5.2.5")
    // 保留Compose Desktop基础依赖
    implementation(compose.desktop.currentOs)
}

Groovy DSL(build.gradle)

如果你的项目使用Groovy格式的Gradle脚本,在dependencies块中添加:

dependencies {
    // 处理.xls格式文件
    implementation 'org.apache.poi:poi:5.2.5'
    // 处理.xlsx格式文件
    implementation 'org.apache.poi:poi-ooxml:5.2.5'
    // 保留Compose Desktop基础依赖
    implementation(compose.desktop.currentOs)
}

提示:可以将5.2.5替换为Apache POI的最新稳定版本,确保两个依赖的版本号一致。

2. 读写Excel的基础示例

读取.xlsx文件

import org.apache.poi.xssf.usermodel.XSSFWorkbook
import java.io.FileInputStream

fun readXlsxFile(filePath: String) {
    FileInputStream(filePath).use { fis ->
        val workbook = XSSFWorkbook(fis)
        val sheet = workbook.getSheetAt(0) // 获取第一个工作表
        
        for (row in sheet) {
            row.forEach { cell -> print("${cell.toString()} ") }
            println()
        }
        workbook.close()
    }
}

写入.xlsx文件

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

fun writeXlsxFile(filePath: String) {
    val workbook = XSSFWorkbook()
    val sheet = workbook.createSheet("Sheet1")
    
    // 创建表头行
    val headerRow = sheet.createRow(0)
    headerRow.createCell(0).setCellValue("姓名")
    headerRow.createCell(1).setCellValue("年龄")
    
    // 创建数据行
    val dataRow = sheet.createRow(1)
    dataRow.createCell(0).setCellValue("张三")
    dataRow.createCell(1).setCellValue(25)
    
    FileOutputStream(filePath).use { fos ->
        workbook.write(fos)
    }
    workbook.close()
}

若要处理.xls格式文件,只需将代码中的XSSFWorkbook替换为HSSFWorkbook即可。

3. 注意事项

  • 确保文件路径正确,Compose Desktop中可通过System.getProperty("user.dir")获取项目根目录,或直接使用绝对路径。
  • 读写文件时推荐使用use代码块,可自动释放流资源,避免内存泄漏。

内容的提问来源于stack exchange,提问作者Bumba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 02:12:08