zoukankan      html  css  js  c++  java
  • 关于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输出 ,而如果你不是那就按照我的方式来吧
  • 相关阅读:
    as3 变量默认值
    as3 判断移动方向
    as3 根据鼠标移动方向
    as3 XML类和XMLList类的区别
    as3 文档类判断是否被加载
    AS3获取对象类名,getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName
    as3 object与dictionary区别
    吹芯片
    stm32四种输入
    usart和uart 的区别
  • 原文地址:https://www.cnblogs.com/af826/p/14289275.html
Copyright © 2011-2022 走看看