Excel文件在用apache poi覆盖Android之后被破坏

我想覆盖一个Excel文件,但被覆盖的文件被损坏。 我正在与Android工作室,我想保存信息到单个Excel文件。 以下是我的代码:

private void saveIntoExcel(String fileName, String[] data) { try { String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + getString(R.string.app_name) + "/" + fileName; InputStream inp = new FileInputStream(new File(path)); HSSFWorkbook workbook = new HSSFWorkbook(inp); HSSFSheet sheet = workbook.getSheetAt(0); HSSFRow row; row = sheet.createRow(sheet.getLastRowNum() + 1); for (int i = 0; i < data.length; i++) { HSSFCell cell = row.createCell(i); cell.setCellValue(data[i]); } FileOutputStream fos = null; File file; file = new File(path); fos = new FileOutputStream(file); workbook.write(fos); fos.close(); showToast(str_success); } catch (Exception e) { showToast(e.getMessage()); } } 

我testing了这个代码与PC上的Excel文件,并完美的工作,但在Android的文件被损坏。

Apache POI并不完全支持以您尝试执行的方式就地编写更改后的文件。

有关于通过一个新的write()方法来提供这个的讨论,但是现在你需要写入一个不同的文件来避免在closures对象的过程中破坏事物。 工作簿closures后,如果需要,可以将新文件移到旧文件上。

看到一些相关的讨论和这个错误 。