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输出 ,而若是你不是那就按照个人方式来吧