写入 Excel 文件 (Apache POI) 时遇到问题


public static String already_exists(ArrayList<String> reg_id, ArrayList<String> doc_id, ArrayList<String> status) throws RowsExceededException, WriteException, IOException{
WritableWorkbook myFirstWbook = null;
FileOutputStream out = new FileOutputStream(new File("C://Users//Desktop//OP_demo.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Java Books");
int rowCount = 0;
int columnCount = 0;
for(int i=0;i<reg_id.size();i++)
{
Object[][] bookData={{reg_id.get(i),doc_id.get(i),status.get(i)}};
Row row = sheet.createRow(rowCount++); 
//System.out.println(reg_id.get(i)+doc_id.get(i)+status.get(i));
for (Object[] aBook : bookData) 
{
for (Object field : aBook) 
{
org.apache.poi.ss.usermodel.Cell cell = row.createCell(columnCount++);
{
cell.setCellValue(field.toString());
}
}
workbook.write(out);

}

}
out.close();  
return "";
}

以上是我用来写入 Excel 文件"OP_Demo"的代码片段。数组列表的值必须reg_id、doc_id和状态来填充单元格。但是,当我运行程序时,只有索引位置 0 的列表值被写入文件。我是否在 for 循环中放错了特定语句?

你需要移动工作簿.write(out(;循环之外。 工作簿.write(out(;将工作簿的内容写入文件流,并且在处理完所有记录后需要写入文件,否则每次执行此操作时都会覆盖文件的内容。

public static String already_exists(ArrayList<String> reg_id, ArrayList<String> doc_id, ArrayList<String> status) throws RowsExceededException, WriteException, IOException{
WritableWorkbook myFirstWbook = null;
FileOutputStream out = new FileOutputStream(new File("C://Users//Desktop//OP_demo.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Java Books");
int rowCount = 0;
int columnCount = 0;
for(int i=0;i<reg_id.size();i++)
{
Object[][] bookData={{reg_id.get(i),doc_id.get(i),status.get(i)}};
Row row = sheet.createRow(rowCount++); 
//System.out.println(reg_id.get(i)+doc_id.get(i)+status.get(i));
for (Object[] aBook : bookData) 
{
for (Object field : aBook) 
{
org.apache.poi.ss.usermodel.Cell cell = row.createCell(columnCount++);
{
cell.setCellValue(field.toString());
}
}
}
}
workbook.write(out); // writing the workbook to file-stream outside loop
out.close();  
return "";
}

您可以参考以下链接: https://www.mkyong.com/java/apache-poi-reading-and-writing-excel-file-in-java/它显示了使用apache POI读取和写入excel文件的基本示例。

最新更新