使用 apache poi 和 java 生成几个 excel 文件
Generate several excel files using apache poi and java
我必须生成几个 excel 文件,但是当使用 for
循环创建不同的文件时,它会抛出一个 EmptyFileException:the supplied file was empty
。第一次它生成一个 excel 文件,但后来它抛出该异常。我试过关闭 FileInputStream
,但没有用。
public static void mergeExcelFiles(ArrayList<Employe> employeList, Enterprise enterprise, List<FileInputStream> list) throws IOException {
ArrayList<String> cell_formulas = generateCellToFormula();
File file = null;
for (int j = 0; j < employeList.size(); j++) {
XSSFWorkbook book = new XSSFWorkbook();
XSSFSheet sheet = null;
file = new File(listaEmpleados.get(j).getNombre() + ".xlsx");
try {
for (FileInputStream fin : list) {
XSSFWorkbook b = new XSSFWorkbook(fin);
for (int i = 0; i < b.getNumberOfSheets(); i++) {
sheet = book.createSheet(b.getSheetName(i));
copySheets(book, sheet, b.getSheetAt(i));
}
}
}
setDataWorkerInHoraryModel(book, enterpise, employeList.get(j));
passWeekendToSheets(book);
writeFile(book, file);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
https://poi.apache.org/apidocs/4.0/org/apache/poi/EmptyFileException.html
如果提供空(零字节)文件则抛出异常
for (FileInputStream fin : list) {
XSSFWorkbook b = new XSSFWorkbook(fin);
for (int i = 0; i < b.getNumberOfSheets(); i++) {
sheet = book.createSheet(b.getSheetName(i));
copySheets(book, sheet, b.getSheetAt(i));
}
}
}
您传递的列表包含 0 字节的文件。
========= 已编辑 ===========
您正在执行 FileInputStream fin : list,该文件将被锁定。
如果你想释放你的系统资源,你需要关闭输入流。
在 forloop 的下一次迭代之前,fin.close() 是您所需要的。
我必须生成几个 excel 文件,但是当使用 for
循环创建不同的文件时,它会抛出一个 EmptyFileException:the supplied file was empty
。第一次它生成一个 excel 文件,但后来它抛出该异常。我试过关闭 FileInputStream
,但没有用。
public static void mergeExcelFiles(ArrayList<Employe> employeList, Enterprise enterprise, List<FileInputStream> list) throws IOException {
ArrayList<String> cell_formulas = generateCellToFormula();
File file = null;
for (int j = 0; j < employeList.size(); j++) {
XSSFWorkbook book = new XSSFWorkbook();
XSSFSheet sheet = null;
file = new File(listaEmpleados.get(j).getNombre() + ".xlsx");
try {
for (FileInputStream fin : list) {
XSSFWorkbook b = new XSSFWorkbook(fin);
for (int i = 0; i < b.getNumberOfSheets(); i++) {
sheet = book.createSheet(b.getSheetName(i));
copySheets(book, sheet, b.getSheetAt(i));
}
}
}
setDataWorkerInHoraryModel(book, enterpise, employeList.get(j));
passWeekendToSheets(book);
writeFile(book, file);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
https://poi.apache.org/apidocs/4.0/org/apache/poi/EmptyFileException.html
如果提供空(零字节)文件则抛出异常
for (FileInputStream fin : list) {
XSSFWorkbook b = new XSSFWorkbook(fin);
for (int i = 0; i < b.getNumberOfSheets(); i++) {
sheet = book.createSheet(b.getSheetName(i));
copySheets(book, sheet, b.getSheetAt(i));
}
}
}
您传递的列表包含 0 字节的文件。
========= 已编辑 ===========
您正在执行 FileInputStream fin : list,该文件将被锁定。
如果你想释放你的系统资源,你需要关闭输入流。
在 forloop 的下一次迭代之前,fin.close() 是您所需要的。