我必须生成几个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();
}
}
}
1条答案
按热度按时间gmxoilav1#
https://poi.apache.org/apidocs/4.0/org/apache/poi/emptyfileexception.html
如果提供了空(零字节)文件,则引发异常
您正在传递的列表包含0字节的文件。
==========已编辑===========
如果您正在执行fileinputstream fin:list,则会锁定该文件。
如果要释放系统资源,需要关闭inputstream。
在forloop的下一次迭代之前,您需要fin.close()。