关于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

  

缘由:这个问题是指 文件目录不存在java

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

我直接跟源码贴图apache

首先跟进这个方法

//首先跟进这个方法
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;
}

 

 

重点解决方法tomcat

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

非serverlet应用用这个xss

      //设置临时目录解决 系统回收默认 临时文件
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输出 ,而若是你不是那就按照个人方式来吧
相关文章
相关标签/搜索