无法写入Excel文件(Apache POI)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法写入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'的代码片段。必须使用arraylists reg_id,doc_id和status的值来填充单元格。但是,当我运行程序时,只将索引位置0的列表值写入文件。我是否错放了for循环中的特定语句?
答案
您需要移动workbook.write(out);在循环之外。 workbook.write(下);将工作簿的内容写入文件流,并且您需要在处理完所有记录后写入文件,否则每次执行该文件时内容都会被覆盖。
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文件的基本示例。
以上是关于无法写入Excel文件(Apache POI)的主要内容,如果未能解决你的问题,请参考以下文章
Apache POI 4.0.1版本写入普通Excel文件(兼容 xls 和 xlsx)
JAVA - 编写Excel文件时的Apache POI OutOfMemoryError
用java的poi类读取一个excel表格的内容后再写入到一个新excel表格中的完整代码
使用 Apache POI 写入 excel。 FileNotFoundException:(请求的操作不能在用户映射部分打开的文件上执行)