try {
System.out.println(f.getAbsoluteFile());
// FileInputStream input = new FileInputStream(f);
FileInputStream inp = new FileInputStream("C:\\Users\\Jamal\\Desktop\\Japaneseword1.xls");
Workbook workbook = new HSSFWorkbook(inp);
FileOutputStream output = new FileOutputStream("C:\\Users\\Jamal\\Desktop\\Japaneseword2.xls");
Sheet sheet2 = workbook.getSheet("Japaneseword");
int num = sheet2.getLastRowNum();
num=++;
System.out.print(num);
Row row = sheet2.createRow(num);
Cell cell = row.createCell(0);
cell.setCellValue(Japaneseword);
Cell cell2 = row.createCell(1);
cell2.setCellValue(Japaneseword);
Cell cell3 = row.createCell(2);
cell3.setCellValue(Japaneseword);
Cell cell4 = row.createCell(3);
cell4.setCellValue(Japaneseword);
Cell cell5 = row.createCell(4);
cell5.setCellValue(Japaneseword);
Cell cellwebsite = row.createCell(5);
workbook.write(output);
}
catch(Exception e){
e.printStackTrace();
}
}
此代码的目的只是保存内容,添加行,并将用户的输入添加到excel文件。我使用InputStream
尝试保存以前的条目,然后添加新条目,并使用outputstream
打印出excel文件。我在过去做过这个没有问题,但由于某种原因inputstream
没有正确保存。我对这个问题非常沮丧。很想知道为什么会这样。
感谢。
---更新---
好的,更新,由于某种原因,它偶尔会起作用。看看我是否使用上述方法创建文件,它将无法正确复制。但是,如果我将outputstream
方法的构造函数中的文件名更改为excel文档上的其他名称,则它会开始计算行数。然后它会正确保存数据并按预期工作。这有意义吗?
基本上,在我创建文件之后,我必须返回,更改代码,然后保存并复制数据,然后我可以继续编辑文件。这种解决方案不实用。
答案 0 :(得分:2)
您必须关闭流,尤其是输出流。否则你可能会丢失数据。
最后你必须
output.close();
inp.close();
答案 1 :(得分:1)
将结束语句放在finally块
中try{
...
}catch(Exception ex){
}finally{
output.close();
inp.close();
}
确保即使抛出异常也会关闭/释放输入/输出流。