0
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没有正确保存。我对这个问题感到非常沮丧。很想知道为什么会这样。

谢谢。

- - 更新 - -

好的,更新,出于某种原因,它偶尔会起作用。看看我是否创建了文件,使用上述方法它不会正确复制。但是,如果我将方法的构造函数中的文件名更改为outputstreamexcel 文档上的不同名称,它会开始计算行数。然后它会正确保存数据并按预期工作。这有意义吗?

基本上,创建文件后,我必须返回,更改代码,然后保存并复制数据,然后我可以继续编辑文件。该解决方案不实用。

4

2 回答 2

2

您必须关闭流,尤其是输出流。否则,您可能会丢失数据。

最后你必须做

 output.close();
 inp.close();
于 2013-07-18T07:07:22.307 回答
1

将结束语句放在 finally 块中

try{
...
}catch(Exception ex){

}finally{
output.close();
inp.close();
}

确保即使抛出异常也关闭/释放输入/输出流。

于 2013-07-18T07:24:15.870 回答