Java Excel追加更新因Apache POI而失败
我从URL获取数据,并尝试使用以下代码将行附加到现有excel文件中Java Excel追加更新因Apache POI而失败,java,excel,apache-poi,Java,Excel,Apache Poi,我从URL获取数据,并尝试使用以下代码将行附加到现有excel文件中 if (file.exists()) { in=new FileInputStream(new File(path)); workbook = new HSSFWorkbook(in); sheet = workbook.getSheetAt(0); in.close();
if (file.exists()) {
in=new FileInputStream(new File(path));
workbook = new HSSFWorkbook(in);
sheet = workbook.getSheetAt(0);
in.close();
} else {
workbook = new HSSFWorkbook();
sheet = workbook.createSheet();
row = sheet.createRow(0);
row.createCell(0).setCellValue("keyTerm");
row.createCell(1).setCellValue("username");
row.createCell(2).setCellValue("Text");
row.createCell(3).setCellValue("Timestamp");
}
然后
int count = sheet.getLastRowNum();
for (int i = 0; i < tweets.length(); i++) {
tweet = tweets.getJSONObject(i);
count++;
row = sheet.createRow(count);
row.createCell(0).setCellValue(term);
row.createCell(1)
.setCellValue(tweet.getString("from_user"));
row.createCell(2).setCellValue(
tweets.getJSONObject(i).getString("text"));
row.createCell(3).setCellValue(
tweet.getString("created_at"));
}
write
方法不仅写入您在电子表格中添加的新内容。它将整个工作簿写入输出流。因此,如果您试图将整个新工作簿附加到旧工作簿中,我可以看出它不会按照您的想法执行
在将工作簿写入文件时,我从未附加到现有文件。您应该始终以(默认)覆盖模式打开流,这样整个工作簿(除了整个工作簿)都会转到流和目标文件
out = new FileOutputStream(file); // or new FileOutputStream(file, false);
当前代码仅在文件不存在时有效,因为没有可附加的内容。总之,不要附加;覆盖(或写入其他文件)。写入方法不会只写入您在电子表格中添加的新内容。它将整个工作簿写入输出流。因此,如果您试图将整个新工作簿附加到旧工作簿中,我可以看出它不会按照您的想法执行 在将工作簿写入文件时,我从未附加到现有文件。您应该始终以(默认)覆盖模式打开流,这样整个工作簿(除了整个工作簿)都会转到流和目标文件
out = new FileOutputStream(file); // or new FileOutputStream(file, false);
当前代码仅在文件不存在时有效,因为没有可附加的内容。总之,不要附加;覆盖(或写入其他文件)。谢谢。但是,从长远来看,这不是很昂贵吗?比如说,我有3万条记录,而且几乎没有添加10-12条记录,但这是没有帮助的。
write
方法是输出电子表格的唯一方法,它可以写入所有内容。谢谢。但是,从长远来看,这不是很昂贵吗?比如说,我有3万条记录,而且几乎没有添加10-12条记录,但这是没有帮助的。write
方法是输出电子表格的唯一方法,它可以写入所有内容。