我想覆盖excel文件,但覆盖的文件已损坏。我正在使用android studio,我想将信息保存到单个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());
}
}
我在pc上用excel文件测试了这段代码并且工作得很好,但是在android中文件被破坏了。
答案 0 :(得分:1)
Apache POI并不像您尝试的那样完全支持更改文件的就地写入。
有关通过新的write()方法提供此问题的讨论,但是目前您需要写入不同的文件以避免在关闭对象期间破坏内容。关闭工作簿后,如有必要,可以将新文件移到旧文件上。