关于org.apache.poi 导出excel时引发的No such file or directory

java.lang.RuntimeException: java.io.IOException: No such file or directory    
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:569)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:558)

  

原因:这个问题是指 文件目录不存在

poi默认将导出的excel导出到系统的临时目录

我直接跟源码贴图

首先跟进这个方法

//首先跟进这个方法
public Sheet createSheet(String sheetname){
    return createAndRegisterSXSSFSheet(_wb.createSheet(sheetname));
}
继续跟进
public Sheet createSheet(String sheetname){
    return createAndRegisterSXSSFSheet(_wb.createSheet(sheetname));
}SXSSFSheet createAndRegisterSXSSFSheet(XSSFSheet xSheet){ 
   SXSSFSheet sxSheet=null;    
try   
 {
        sxSheet=new SXSSFSheet(this,xSheet);    
}   
 catch (IOException ioe)    {
        throw new RuntimeException(ioe);   
 }    registerSheetMapping(sxSheet,xSheet); 
   return sxSheet;
}

 

 

关于org.apache.poi 导出excel时引发的No such file or directory

关于org.apache.poi 导出excel时引发的No such file or directory

关于org.apache.poi 导出excel时引发的No such file or directory

关于org.apache.poi 导出excel时引发的No such file or directory

关于org.apache.poi 导出excel时引发的No such file or directory

关于org.apache.poi 导出excel时引发的No such file or directory

关于org.apache.poi 导出excel时引发的No such file or directory

关于org.apache.poi 导出excel时引发的No such file or directory

重点解决方法

我直接粘贴 最终解决的代码了

非serverlet应用用这个

      //设置临时目录解决 系统回收默认 临时文件
File file = new File("/mnt/soft/spring-boot/tomcat_basedir");
file.mkdirs();
TempFile.setTempFileCreationStrategy(new TempFile.DefaultTempFileCreationStrategy(file));
把这段代码放到
Sheet sh = wb.createSheet("sheet1");
这个之前就ok了

当然网上的普遍做法是tomcat根目录创建temp 文件夹而这种做法也只是针对serverlet容器内调用poi输出 ,而如果你不是那就按照我的方式来吧

 

关于org.apache.poi 导出excel时引发的No such file or directory

上一篇:Js实用小技巧


下一篇:netty-lean1