POI 3.8版本导出excel问题

使用poi 3.8版本导出excel时,在本地和测试环境都是好使的,但是部署到线上环境(linux+tomcat)后直接报错,报错日志如下图:

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)

at com.app.util.ExcelIOUtil.write(ExcelIOUtil.java:46)

at com.app.controllers.DrivingSchoolController.download(DrivingSchoolController.java:106)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at com.mvc.invoke.ActionInvoker.invoke(ActionInvoker.java:75)

at com.mvc.MvcDispatcher.service(MvcDispatcher.java:119)

at com.mvc.MvcFilter.doFilter(MvcFilter.java:67)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)

at org.apache.tomcat.util.net.AprEndpoint$SocketWithOptionsProcessor.run(AprEndpoint.java:1810)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)

原因是:

poi3.8默认情况下,用到的临时目录是系统自带的临时目录。

代码如下

/**

* Write out this workbook to an Outputstream.

*

* @param stream - the java OutputStream you wish to write to

* @exception IOException if anything can‘t be written.

*/

public void write(OutputStream
stream) throws IOException

{

for (SXSSFSheet
sheet : _xFromSxHash.values())

{

sheet.flushRows();

}

//Save the template

File tmplFile = File.createTempFile("poi-sxssf-template",
".xlsx");

tmplFile.deleteOnExit();

FileOutputStream os =
new FileOutputStream(tmplFile);

_wb.write(os);

os.close();

//Substitute the template entries with the generated sheet data files

injectData(tmplFile,
stream);

tmplFile.delete();

}

解决办法:

查看tomcat目录下temp目录是否还存在,如果没有,新建一个即可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-10 15:04:02

POI 3.8版本导出excel问题的相关文章

TXLSReadWriteII2版本导出Excel文件:

//TXLSReadWriteII2版本导出Excel文件: procedure TForm1.N1Click(Sender: TObject); var i: Integer; aSaveDialog: TSaveDialog; aFileName, aStampTime: AnsiString; aXlsObj: TXLSReadWriteII2; p: PDataRec; begin aSaveDialog := TSaveDialog.Create(Self); try aSaveDia

POI 导出Excel 封装

package test; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import org.apache.poi.hss

jsp(servlet)使用poi导出excel数据文件

网站通过Excel导出数据已经成为各种网站的一个基本功能,下面就详细介绍下如何使用poi.jar方式来导出excel文件.具体步骤如下: 1.创建一个网站,下面我创建一个叫test的网站,然后将poi的jar包放入lib文件夹.我这里是下载链接poi-2.5.1.jar. 结构目录如下: 2.然后我们可以创建一个用来访问的jsp界面(主要是提交到servlet,可有可无) 代码如下: <%@ page language="java" import="java.util.

公共POI导出Excel方法--java

最早开始的时候做过一些数据Excel导出的功能,但是到后期每一次导出都需要写一些差不多类似的代码,稍微研究了一下写了个公共的导出方法. 这里用的是POI,然后写成了一个公共类,传入设置好格式的数据,就能弹出下载框. package com.hwt.glmf.common; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; impor

javaEE开发之导出excel工具类

web开发中,一个系统的普通需求也包含导出excel,一般採用POI做统计报表导出excel. 导出excel工具类: import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell; import o

springmvc 导出excel

1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <

Java导出Excel Sheet页

1.问题背景 导出Excel表格时,首先要生成Sheet页,下面将介绍如何生成Sheet页 2.实现源码 /** * * @Project: * @Title:ExcelExport.java * @Package:report.utils * @Description: * @Author:YouHaiDong * @Date:2015年11月2日 下午6:29:22 * @Version: */ package report.utils; import java.io.FileNotFoun

web开发之导出excel工具类

web开发中,一个系统的普通需求也包括导出excel,一般采用POI做统计报表导出excel. 导出excel工具类: import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell; import o

springmvc导出excel并弹出下载框

加入对应的jar包,包括springmvc,poi的, spring jar包在此不列举出来,主要是poi包,如下图所示 下载地址:http://download.csdn.net/download/huawei2010_2011_2012/5034041,或者搜poi3.9 实体类: public class Project { private Integer id; private String name; private String technology;//所用技术 private S