jsp 导出excel异常

jame_tian 2009-03-02 11:49:59
我用的的JXL导出,可是当我取消时就出现下列异常,请问怎么解决啊?
ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:354)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:381)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:370)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
at jxl.write.biff.MemoryDataOutput.writeData(MemoryDataOutput.java:107)
at jxl.write.biff.CompoundFile.writeExcelData(CompoundFile.java:505)
at jxl.write.biff.CompoundFile.write(CompoundFile.java:455)
at jxl.write.biff.File.close(File.java:120)
at jxl.write.biff.WritableWorkbookImpl.close(WritableWorkbookImpl.java:447)
at com.akazam.util.ExportExcel.export(ExportExcel.java:51)
at org.apache.jsp.district.exporting_jsp._jspService(exporting_jsp.java:80)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.akazam.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:28)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:740)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)
at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:764)
at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:126)
at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:573)
at org.apache.coyote.Response.doWrite(Response.java:560)
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:353)
... 45 more
...全文
354 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sebatinsky 2009-03-03
  • 打赏
  • 举报
回复
你点击取消了,有时候会爆出异常,是因为你的程序里面由一个地方,也就是list之类的,得到了参数为空,你调试一下,这个我那天刚刚遇到了,也是同样的问题,刚开始没有遇到,突然间发现的,所以处理一下,加一个判断条件就可以了,这个我一看标题,呵呵,应该就是了,
jame_tian 2009-03-03
  • 打赏
  • 举报
回复
response.reset();
Vector outter = (Vector) request.getAttribute("outter");
response.setContentType("application/vnd.ms-excel");
excel.export(response.getOutputStream(), outter);
out.clear();
out = pageContext.pushBody();
这个就是jsp页面的东西,下面的就是主程序了!
public void export(OutputStream os, Vector outter) {
// District dbase = new District();
content = outter;// 以向量的形式存放所有的记录
try {
Vector inner = null;
String value = "";// 存放在cell中的文本值
WritableWorkbook workbook = Workbook.createWorkbook(os);// 创建工作薄
WritableSheet worksheet = workbook.createSheet("record", 0);// 创建第一个工作表,name:工作表名称
Label label = null;// 用于写入文本内容到工作表中去
// 开始写入第一行,即标题栏
for (int i = 0; i < title.length; i++) {
label = new Label(i, 0, title[i]);// 参数依次代表列数、行数、内容
worksheet.addCell(label);// 写入单元格
}
// 开始写入内容
for (int i = 0; i < content.size(); i++) {
inner = (Vector) content.get(i);// 获取一条记录
for (int j = 0; j < inner.size(); j++) { // 一个一个字段的放入excel中去
value = (String) inner.get(j);
label = new Label(j, i + 1, value);
worksheet.addCell(label);
}
}
workbook.write();
workbook.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
另外2楼说的那个我也都关了。
只要不点[color=#FF0000]取消[/color]程序是不会报错的,这个错误没有影响业务功能!
mssaide 2009-03-03
  • 打赏
  • 举报
回复
不清楚,关注了...
wangju309 2009-03-02
  • 打赏
  • 举报
回复
你的WritableWorkbook、OutputStream都close掉了么?
salana 2009-03-02
  • 打赏
  • 举报
回复
把你的jsp页面发上来看看吧

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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