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

Apache POI的write方法无法写入空白Excel表格问题求助

Android POI写入Excel失败问题解决

核心故障原因

  • 写入路径非法:Android应用的assets目录为安装时内置的只读资源目录,应用本身没有该目录的写入权限,向assets\\workbook.xls路径写入数据的操作会被系统直接拦截
  • 路径格式错误:Android基于Linux内核,路径分隔符使用正斜杠/,而非Windows系统的反斜杠\\,非法的路径格式也会导致写入失败

修复方案

将写入路径替换为应用有权限操作的内部私有存储路径,同时添加异常捕获逻辑方便排查问题,修正后代码如下:

fun writeToExcel(view: View) {
    try {
        // 从assets读取模板Excel
        val assetManager: AssetManager = applicationContext.assets
        val myInput: InputStream = assetManager.open("workbook.xls")
        val myFileSystem = POIFSFileSystem(myInput)
        val xlwb = HSSFWorkbook(myFileSystem)
        val xlWs = xlwb.createSheet("name")

        // 写入单元格内容
        val rowNumber = 0
        val columnNumber = 0
        val xlRow = xlWs.createRow(rowNumber)
        val xlCol = xlRow.createCell(columnNumber)
        xlCol.setCellValue("Chercher Tech")

        // 更换为应用内部私有存储路径
        val outputFile = File(filesDir, "workbook.xls")
        val fos = FileOutputStream(outputFile)
        xlwb.write(fos)
        fos.flush()
        fos.close()
        xlwb.close()
        
        // 可通过日志确认写入路径,路径格式为 /data/data/[应用包名]/files/workbook.xls
        Log.d("Excel写入成功", "文件路径:${outputFile.absolutePath}")
    } catch (e: Exception) {
        e.printStackTrace()
        Log.e("Excel写入失败", "错误信息:${e.message ?: "未知异常"}")
    }
}

验证方法

写入完成后,可通过Android Studio的Device File Explorer工具,进入对应应用的/data/data/[你的应用包名]/files目录,即可查看生成的Excel文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:18:01