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
相关产品推荐
相关产品推荐

