码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2021-01-18 11:31:01      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:lan   mic   存在   app   excel导出   代码   time   rgb   技术   

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;
}

 

 

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

重点解决方法

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

非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

标签:lan   mic   存在   app   excel导出   代码   time   rgb   技术   

原文地址:https://www.cnblogs.com/af826/p/14289275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!