• 关于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;
    }

    重点解决方法

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

    非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输出 ,而如果你不是那就按照我的方式来吧
  • 相关阅读:
    DHCP配置实例
    upupw phpmyadmin写shell
    网络配置课学期总结
    c#写一个网站后台扫描器
    移位运算符
    JavaScript 事件
    JS自动爆炸案例
    生成树协议
    暴力操作节点
    为博客园添加统计访问量的工具
  • 原文地址:https://www.cnblogs.com/af826/p/14289275.html
Copyright © 2020-2023  润新知