java - 写入 excel 文件后抛出 File not found 异常
问题描述
因此,我获取了一个 Doubles 列表,并将它们写入现有的 Excel 表。据我所知,打开文件、创建新单元格和添加数据没有问题。但是,一旦循环完成设置新的单元格值,我就会抛出一个找不到文件的异常。
我已经盯着这个并尝试了几天不同的东西,只是看不出有什么问题。
列表输入是 29 个正负数。
这是完整的功能。有问题的循环将在完整代码块下方再次添加。
private static void ocrAddToExcel(List list, List Ion){
String templatePath = "/Users/pluebbert/NetBeansProjects/PDFtoExcel/OCR_Excel_Template.xls";
System.out.println("Template: " + templatePath);
File input = new File(templatePath);
List<Double> doubleList = new ArrayList<>();
for(int i = 0; i <= list.size()-1; i++){
Double conc = Double.parseDouble(list.get(i).toString());
System.out.println(conc);
doubleList.add(conc);
}
try{
if(input.exists()){
System.out.println("Found input stream file");
System.out.println(input.getAbsolutePath());
}
FileInputStream template = new FileInputStream(input);
System.out.println("FIS Created");
HSSFWorkbook book = new HSSFWorkbook(template);
System.out.println("Grabbed book");
HSSFSheet sheet = book.getSheetAt(0);
int firstNum = sheet.getFirstRowNum(); //0
int lastNum = sheet.getLastRowNum(); //33
System.out.println("First num: " + firstNum + " lastNum:" + lastNum);
//THIS LOOP BELOW//
for(int i = 0; i <= list.size(); i++){
Double conc = doubleList.get(i);
System.out.println("Conc: " + conc + " I:::: " + i + "n::: " + n);
Cell cell = sheet.getRow(i).createCell(i, n);
cell.setCellValue(conc);
System.out.println(cell.toString());
//Loop completes and prints every cell correctly
}
//Print below never gets executed.
System.out.println("Done adding data to cells for pdf number: " + n);
System.out.println("Iterator done");
String destinationPath = isEmpty ? "Test" + "_" + "Test" + "_Ions.xls" : outputName + ".xls";
// if empty, use default name, else user specified name
File outputFile = new File(destinationPath);
System.out.println("Created output file at: " + outputFile.getAbsolutePath());
FileOutputStream fileOut = new FileOutputStream(outputFile); //saves file
book.write(fileOut);
fileOut.flush();
template.close();
fileOut.close();
++n;
System.out.println("*************Template filled*************");
System.out.println("Now renaming file for you");
fileOut.close();
open(destinationPath);
}
catch(Exception e){
System.out.println("File not found");
}
}
因此,在循环完成并将所有正确的单元格值打印到控制台后,我得到了找不到文件的异常。
for(int i = 0; i <= list.size(); i++){
Double conc = doubleList.get(i);
System.out.println("Conc: " + conc + " I:::: " + i + "n::: " + n);
Cell cell = sheet.getRow(i).createCell(i, n);
cell.setCellValue(conc);
System.out.println(cell.toString());
//Loop completes and prints every cell correctly
}
解决方案
考虑一下:
if(input.exists()){
System.out.println("Found input stream file");
System.out.println(input.getAbsolutePath());
}
FileInputStream template = new FileInputStream(input);
最后一行抛出 FileNotFoundException。相反,您应该创建新工作簿:
HSSFWorkbook book=new HSSFWorkbook();
HSSFSheet sheet=book.createSheet("FirstSheet");
HSSFRow row=sheet.createRow(0);
cell.setCellValue(conc);
等等。
推荐阅读
- cygwin - 酒 + Cygwin 乱码 argv
- r - 如何将ggarrange(ggplotGrob + ggplot图)的大小自动调整为R中的pdf?
- amazon-web-services - 与禁用 CIS 基准相关的 Security Hub 日志
- python - pyodbc.ProgrammingError: ('无效的参数类型。param-index=1 param-type=StringVar', 'HY105')
- reactjs - 根据对象中键的值定义类型
- excel - 多列和多表的VBA GoalSeek for循环
- firebase - Firestore 模拟器返回缺少或不足的权限,上周工作
- swift - 从 SwiftUI 视图中更新 @State 属性
- javascript - 将 TypeORM 中的现有记录保存在 ManyToMany 表中
- python - 尝试在 heroku 上使用 DEBUG=False 部署 django 应用程序时出现服务器错误 (500)