struts中如何同时导出多个excel文件

yiweiposer 2010-06-30 01:08:20
用户有一个需求,需要将数据按一定规则,拆分成多个excel导出。
一次导出1个excel是没有问题。我的实现方式是:
response.setContentType("application/vnd.ms-excel;charset=GBK");
response.setHeader("Content-disposition","attachment;filename=" + fileName);
String strExcel = "";//excel内容
PrintWriter outW= response.getWriter();
outW.write(strExcel);
outW.flush();
outW.close();

多个excel不知道怎么实现,请教各位是否有解?
...全文
386 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiemeng09 2011-05-03
  • 打赏
  • 举报
回复
先生成多个excel,再打包成zip.客户端下载保存zip文件即可
这种方式怎么做
yiweiposer 2010-06-30
  • 打赏
  • 举报
回复
结贴给分!
yiweiposer 2010-06-30
  • 打赏
  • 举报
回复
非常感谢各位,已解决。先生成多个excel,再打包成zip.客户端下载保存zip文件即可。
dr_lou 2010-06-30
  • 打赏
  • 举报
回复
恩,server的多线程只是内部的,同时生成多个excel,但是下发肯定是串行啊。
用zip包试试吧。也许是我误导了,不好意思。
xiayuqijava 2010-06-30
  • 打赏
  • 举报
回复
不知道多线程可以不可以,但我有个想法就是,客户端请求一次,服务端返回一次,如果你想多线程不停的返回多次结果,我还没有见过这样的例子
yiweiposer 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 aoli444 的回复:]
可以实现为一个excel多个sheet
[/Quote]

这种方法,用户不接受
yiweiposer 2010-06-30
  • 打赏
  • 举报
回复
总是报错:16:19:23,984 ERROR [STDERR] at java.lang.System.arraycopy(Native Method)
16:19:23,984 ERROR [STDERR] at org.apache.tomcat.util.buf.ByteChunk.append(B
yteChunk.java:346)
16:19:23,984 ERROR [STDERR] at org.apache.coyote.http11.InternalOutputBuffer
$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:761)
16:19:23,984 ERROR [STDERR] at org.apache.coyote.http11.filters.ChunkedOutpu
tFilter.doWrite(ChunkedOutputFilter.java:129)
16:19:23,984 ERROR [STDERR] at org.apache.coyote.http11.InternalOutputBuffer
.doWrite(InternalOutputBuffer.java:570)
16:19:23,984 ERROR [STDERR] at org.apache.coyote.Response.doWrite(Response.j
ava:560)
16:19:23,984 ERROR [STDERR] at org.apache.catalina.connector.OutputBuffer.re
alWriteBytes(OutputBuffer.java:353)
16:19:23,984 ERROR [STDERR] at org.apache.tomcat.util.buf.ByteChunk.flushBuf
fer(ByteChunk.java:434)
16:19:23,984 ERROR [STDERR] at org.apache.tomcat.util.buf.ByteChunk.append(B
yteChunk.java:293)
16:19:23,984 ERROR [STDERR] at org.apache.catalina.connector.OutputBuffer.wr
iteByte(OutputBuffer.java:399)
16:19:23,984 ERROR [STDERR] at org.apache.catalina.connector.CoyoteOutputStr
eam.write(CoyoteOutputStream.java:77)
aoli444 2010-06-30
  • 打赏
  • 举报
回复
可以实现为一个excel多个sheet
yiweiposer 2010-06-30
  • 打赏
  • 举报
回复
多线程好像不可以哦。有问题。不知道我的写法是否有问题。
--------------------------------
new ExportExcelThread(response,requestPath).start()

public class ExportExcelThread extends Thread {
HttpServletResponse response;
String requestPath;

public ExportExcelThread(HttpServletResponse response,String requestPath) {
this.response = response;
this.requestPath = requestPath;
}

public void run() {
try {
OutputStream out = response.getOutputStream();
FileInputStream fis = new FileInputStream(requestPath);
int data = 0;
while((data = fis.read()) != -1){
out.write(data);
}
out.flush();
fis.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}


}

}
yiweiposer 2010-06-30
  • 打赏
  • 举报
回复
多线程的方式没有试,一会也试一下。
其实如果分拆文件超过10个,如果让用户保存10次,估计用户肯定要搞烦了。
这个再说,先看看能不能实现。
到时候让用户自己选择哪种方式了
yiweiposer 2010-06-30
  • 打赏
  • 举报
回复
太感谢了。没想到大家这么快就给我提出了很多新的思路。
我先试一下压缩文件的方式吧。
xiayuqijava 2010-06-30
  • 打赏
  • 举报
回复
只能导出个xsl压缩包给客户端了
xiayuqijava 2010-06-30
  • 打赏
  • 举报
回复
只能导出个给客户端了
dr_lou 2010-06-30
  • 打赏
  • 举报
回复
或者导出zip包,里面是多个excel。
lizhongyi188 2010-06-30
  • 打赏
  • 举报
回复
想同时到出多个,只能是在开辟一个线程了!
dr_lou 2010-06-30
  • 打赏
  • 举报
回复
串行或多线程并行不可以么?

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧