關於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輸出 ,而若是你不是那就按照個人方式來吧
相關文章
相關標籤/搜索