java如何将导出的excel下载到客户端
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何将导出的excel下载到客户端相关的知识,希望对你有一定的参考价值。
求大神解答,另外 我使用这个 HttpServletResponse response = ServletActionContext.getResponse();ServletActionContext这个方法是不是struts中的,但是我没用struts开发
package com.mr;import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 利用Servlet导出Excel
* @author CHUNBIN
*
*/
public class ExportExcelServlet extends HttpServlet
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
doPost(request, response);
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
request.setCharacterEncoding("UTF-8");//设置request的编码方式,防止中文乱码
String fileName ="导出数据";//设置导出的文件名称
StringBuffer sb = new StringBuffer(request.getParameter("tableInfo"));//将表格信息放入内存
String contentType = "application/vnd.ms-excel";//定义导出文件的格式的字符串
String recommendedName = new String(fileName.getBytes(),"iso_8859_1");//设置文件名称的编码格式
response.setContentType(contentType);//设置导出文件格式
response.setHeader("Content-Disposition", "attachment; filename=" + recommendedName + "\\"");//
response.resetBuffer();
//利用输出输入流导出文件
ServletOutputStream sos = response.getOutputStream();
sos.write(sb.toString().getBytes());
sos.flush();
sos.close();
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>导出Excel</title>
<script type="text/javascript">
function test()
document.getElementById("tableInfo").value=document.getElementById("table").innerHTML;
</script>
<style>
bodyfont-family:宋体;font-size:11pt
</style>
</head>
<body>
<form action="<%=request.getContextPath()%>/servlet/ExportExcelServlet" method="post">
<span id="table">
<table bgcolor="#EEECF2" bordercolor="#A3B2CC" border="1" cellspacing="0">
<tr><th>学号</th><th>姓名</th><th>科目</th><th>分数</th></tr>
<tr><td>10001</td><td>赵二</td><td>高数</td><td>82</td></tr>
<tr><td>10002</td><td>张三</td><td>高数</td><td>94</td></tr>
<tr><td>10001</td><td>赵二</td><td>线数</td><td>77</td></tr>
<tr><td>10002</td><td>张三</td><td>线数</td><td>61</td></tr>
</table>
</span><br/>
<input type="submit" name="Excel" value="导出表格" onclick="test()"/>
<input type="hidden" id="tableInfo" name="tableInfo" value=""/>
</form>
</body>
</html>
以上代码来自网络:http://jtlyuan.iteye.com/blog/1322097
追问谢谢你,不过这个导出功能我事先了,怎么讲导出的excel下载到客户端啊
追答java代码34-37行,当你点击的时候,会把excel以流的方式返回给浏览器,浏览器就会弹出下载窗口了。。
ServletActionContext cannot be resolved这个错误是因为你没有导入struts的包。
我不是用struts开发的,你这个不必导sturts吧
追答不用的,在import里面没有任何关于struts的内容。。
参考技术A 导出的时候,选择一下路径,将这个路径回传给Action,再做导出保存功能! 参考技术B 你把生成的文件放到web-inf下面的一个文件夹,然后吧连接返回到客户端,客户端直接用location.href=连接,就可以了,注意定时清理那个文件夹 参考技术C 看名字都知道了ServletActionContext当然是Servlet的了跟struts有毛的关系,你的题目跟问题有什么关系?追问为何我报错ServletActionContext cannot be resolved,球大神解答啊
追答需要导入servlet.jar这个包
你是开发新手嘛?这些问题在网上都能找到的,直接把问题贴到百度,大部分都能找到为什么,只是你需要自己判断哪些是对的
servlet这个jar我已经有了,傻逼,不得不喷你了,周末没工夫屌你,装鸡巴会的,那个action方法就是sturts里面的,不会装逼懂,操,你看看其他人怎么回答的,不懂别装鸡巴
求java导出大量数据到excel解决方法
现在要通过web系统导出一张表的数据到excel,因为表的数据上百万条,所以直接导出到excel会出现内存溢出的异常,现在我把数据切成几份,按1万条一份生成一个excel,虽然可以解决内存溢出的问题,但是这样客户端下载的时候就不是一个文件了,而把几个文件压缩成一个文件供客户端下载的话,可以实现,但是用户体验不太好,客户要下载、解压、再对几个excel进行统计。请教有没有更好的解决方法?
昏。。你在这里问,,你疯了。。你想导出一个文件也可以,,但是一个excel文件的,一个工作薄大小好像是有限的。。你可以切成几分导到一个excel的几个工作薄里面。。 参考技术A 你生成一个XML文件就可以了,excel可以解析的,你只需要事先向用户提供一个架构文件就可以了 参考技术B 用PageOffice很简单的,网上搜有很多它的示例代码的。以上是关于java如何将导出的excel下载到客户端的主要内容,如果未能解决你的问题,请参考以下文章
java 导出excel 关于导出路径的配置 求解答 求配置文件的例子