1.关于“下载”

需要设置页面header的一个属性为:Content-Disposition: attachment; filename=下载的文件.txt

如:

  1. <a href="down.jsp">下载</a>
  2.  
  3. down.jsp:
  4. <%
  5. response.setHeader("Content-Disposition", "attachment;fileName=download.txt");
  6. %>

2.关于Execl

使用jxl的

jxl地址:http://www.andykhan.com/jexcelapi/download.html

这里面有jar包和api文档,还有一些例子。

下面看正文了。

一、写个页面index.jsp:

  1. <%@ page language="java" contentType="text/html; charset=utf-8"
  2. pageEncoding="utf-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  7. <title>导出Execl</title>
  8. <script type="text/javascript" src="jquery-1.10.2.min.js"></script>
  9. <script type="text/javascript">
  10. function toExecl(){
  11. //解析表格
  12. var arrData=new Array();
  13. var jsonData = "[";
  14. var objTable=document.getElementById("tab");
  15. if(objTable)
  16. {
  17. for(var i=0;i<objTable.rows.length;i++)//行
  18. {
  19. //每一行开始
  20. var rowData = "{";
  21. for(var j=0;j<objTable.rows[i].cells.length;j++)//列
  22. {
  23. //每一行的数据
  24. if(j > 0){
  25. rowData = rowData + "," + objTable.rows[i].cells[j].innerText;
  26. }else{
  27. rowData = rowData + objTable.rows[i].cells[j].innerText;
  28. }
  29. }
  30. //每一行结尾
  31. if(i < (objTable.rows.length -1)){
  32. rowData = rowData + "},"
  33. }else{
  34. rowData = rowData + "}"
  35. }
  36. //添加每一行到json字符串中
  37. jsonData = jsonData + rowData;
  38. }
  39. }
  40. jsonData = jsonData + "]";
  41. //alert(jsonData);
  42.  
  43. /* //发送ajax请求
  44. $.ajax({
  45. url: "toExecl",
  46. type: "POST",
  47. data: {"jsonData": jsonData},
  48. dataType: "text",
  49. cache: false,
  50. success: function (result) {
  51. alert("success");
  52. }
  53. }); */
  54.  
  55. var form=$("<form>");//定义一个form表单
  56. form.attr("style","display:none");
  57. form.attr("target","");
  58. form.attr("method","post");
  59. form.attr("action","toExecl");//跳转到servlet
  60. var input1=$("<input>");
  61. input1.attr("type","hidden");
  62. input1.attr("name","jsonData");
  63. input1.attr("value",jsonData);
  64. $("body").append(form);//将表单放置在web中
  65. form.append(input1);
  66.  
  67. form.submit();//表单提交
  68. }
  69.  
  70. //下载
  71. function downloadDoc(filePath,fileName){
  72. var path = filePath+fileName;
  73. var contextLength = "<%=request.getContextPath()%>";
  74. var sp = path.substring(contextLength.length,path.length);
  75. document.getElementById("path").value = sp;
  76. document.getElementById("fileName").value = fileName;
  77. //down_frame.location.href = path;decodeURI(path);encodeURIComponent
  78. var sForm1 = document.form1;
  79. sForm1.action = "<%=request.getContextPath()%>/com/icss/mdm/usermanual/servlet/StandardDocDownServlet";
  80. sForm1.submit();
  81.  
  82. }
  83. </script>
  84. </head>
  85. <body>
  86. <div id="tableExcel">
  87.  
  88. <table id="tab">
  89. <tr height="18" style="height: 13.5pt">
  90. <td height="18" width="72" style="height: 13.5pt; width: 54pt">姓名</td>
  91. <td width="72" style="width: 54pt">性别</td>
  92. <td width="72" style="width: 54pt">年龄</td>
  93. </tr>
  94. <tr height="18" style="height: 13.5pt">
  95. <td height="18" style="height: 13.5pt">杨xx</td>
  96. <td></td>
  97. <td align="right">27</td>
  98. </tr>
  99. <tr height="18" style="height: 13.5pt">
  100. <td height="18" style="height: 13.5pt">测试1</td>
  101. <td></td>
  102. <td align="right">18</td>
  103. </tr>
  104. <tr height="18" style="height: 13.5pt">
  105. <td height="18" style="height: 13.5pt">测试2</td>
  106. <td></td>
  107. <td align="right">18</td>
  108. </tr>
  109. <tr height="18" style="height: 13.5pt">
  110. <td height="18" style="height: 13.5pt">测试3</td>
  111. <td></td>
  112. <td align="right">18</td>
  113. </tr>
  114. <tr height="18" style="height: 13.5pt">
  115. <td height="18" style="height: 13.5pt">刘德华</td>
  116. <td></td>
  117. <td align="right">48</td>
  118. </tr>
  119. </table>
  120. </div>
  121. <a href="javascript:void(0)" onclick="toExecl()">导出execl</a>
  122.  
  123. <a href="down.jsp">下载</a>
  124.  
  125. </body>
  126. </html>

二、链接地址跳转到一个servlet

web.xml

  1. <servlet>
  2. <servlet-name>toExecl</servlet-name>
  3. <servlet-class>com.mlxs.execl.servlet.ToExecl</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6. <servlet-name>toExecl</servlet-name>
  7. <url-pattern>/toExecl</url-pattern>
  8. </servlet-mapping>

ToExeclServlet:

  1. package com.mlxs.execl.servlet;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.io.OutputStream;
  7.  
  8. import javax.servlet.ServletException;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12.  
  13. import jxl.Workbook;
  14. import jxl.format.Alignment;
  15. import jxl.format.VerticalAlignment;
  16. import jxl.write.Label;
  17. import jxl.write.WritableCellFormat;
  18. import jxl.write.WritableFont;
  19. import jxl.write.WritableSheet;
  20. import jxl.write.WritableWorkbook;
  21. import jxl.write.WriteException;
  22. import jxl.write.biff.RowsExceededException;
  23.  
  24. public class ToExecl extends HttpServlet{
  25.  
  26. @Override
  27. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  28. this.doPost(req, resp);
  29. }
  30.  
  31. @Override
  32. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  33. req.setCharacterEncoding("UTF-8");
  34. resp.setContentType("multipart/form-data");
  35. resp.setHeader("Content-Disposition", "attachment;fileName=text.xls");
  36. //处理前台传的数据
  37. String dataStr = req.getParameter("jsonData");
  38. dataStr = dataStr.replace("[{", "").replace("}]", "").replace("{", "");
  39. String[] dataArr = dataStr.split("},");
  40.  
  41. try {
  42. //1.创建一个workbook(对应Excel文件 )
  43. WritableWorkbook workbook = Workbook.createWorkbook(resp.getOutputStream());
  44. //2.在workbook中添加一个sheet(Excel文件中的sheet)
  45. WritableSheet sheet = workbook.createSheet("导出数据", 0);
  46. //3.创建表头单元格,并设置文字格式
  47. WritableFont wf = new WritableFont(WritableFont.ARIAL, 12, WritableFont.NO_BOLD);
  48. WritableCellFormat wcf = new WritableCellFormat(wf);
  49. wcf.setVerticalAlignment(VerticalAlignment.CENTRE);
  50. wcf.setAlignment(Alignment.CENTRE);
  51. //4.设置行数
  52. sheet.setRowView(1, 100);
  53.  
  54. //5.设置数据
  55. for (int i = 0; i < dataArr.length; i++) {
  56. //每一行的数据
  57. System.out.println("data:"+dataArr[i]);
  58. String[] str = dataArr[i].split(",");
  59. //每一列
  60. for (int j = 0; j < str.length; j++) {
  61. if(i==0){
  62. sheet.addCell(new Label(j, i, str[j], wcf));//new Label(列号, 行号, 数据, 单元格)
  63. continue;
  64. }
  65. sheet.addCell(new Label(j, i, str[j]));
  66. }
  67.  
  68. }
  69. //6.end
  70. workbook.write();
  71. workbook.close();
  72. } catch (RowsExceededException e) {
  73. e.printStackTrace();
  74. } catch (WriteException e) {
  75. e.printStackTrace();
  76. } catch (IOException e) {
  77. e.printStackTrace();
  78. }
  79. }
  80.  
  81. }

三、效果图:

jsp表格数据导出到Execl的更多相关文章

  1. 将页面中表格数据导出excel格式的文件(vue)

    近期由于项目需要,需要将页面中的表格数据导出excel格式的文件,折腾了许久,在网上各种百度,虽然资料不少,但是大都不全,踩了许多坑,总算是皇天不负有心人,最后圆满解决了. 1.安装相关依赖(npm安 ...

  2. Vue+element UI实现表格数据导出Excel组件

    介绍 这是一个可以将页面中的表格数据导出为Excel文件的功能组件,该组件一般与表格一起使用,将表格数据传给组件,然后通过点击组件按钮可将表格中的数据导出成Excel文件. 使用方法 由于封装该组件内 ...

  3. 前端 vue表格数据导出Excel 文件实现

    实现思路 使用json2csv将后台json数据转化为csv格式数据 采用创建Blob(二进制大对象)的方式来存放缓存数据: 生成下载链接: 创建一个a标签,设置href和download属性 触发a ...

  4. Vue2.0---将页面中表格数据导出excel

    这不是教程,是随笔. 项目中将后台返回的数据v-for到表格中,然后需要将这个表格导出为EXCEL 只说怎么做. 一.需要安装三个依赖: npm install -S file-saver xlsx ...

  5. MVC 实现表格数据导出Excel(NPOI方式)

    前端View(@ViewBag为查询条件): <span id="exprobtn" class="btn_blue" style="dispa ...

  6. 前端表格数据导出excel

    使用tableExport.js导出bootstrap-table表格成excel并且支持中文 1. 下载tableExport.js https://github.com/hhurz/tableEx ...

  7. 导出网页表格数据为Excel文件的前端解决方案

    在工作中,我们有时会遇到这样的需求,比如:要把页面的表格数据导出为Excel文件.在此记录下自己用的解决方法.代码如下: function tableToExcel(data){ //要导出的数据,t ...

  8. Java读取Execl表格数据

    在前面提到用java代码新建一个Execl 表格并添加数据到表格中, 这次写了一个读取Execl表格数据并添加导数据库中的案列 给定对方一个Execl模板表格,如果导入的Execl表格和预订的表格不相 ...

  9. Java操作Jxl实现导出数据生成Excel表格数据文件

    实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...

随机推荐

  1. AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

    在使用SqlConnection.Open()连接到SQL Server 2008 R2 SP2时,一直报以下异常: AccessViolationException: 尝试读取或写入受保护的内存.这 ...

  2. python - ConfigParser

    ConfigParse 作用是解析配置文件. 配置文件格式如下 [test1]num1: 10[test2]num1: 35 配置文件两个概念section和option, 在这个例子中第一个sect ...

  3. vba 工作案例1

    手上有一份关于广东22个地市的数据,行列不符合预期的表结构,稍vba转换下,再text import 到oracle. Sub copy() ' ' copy 宏 ' ' 快捷键: Ctrl+Shif ...

  4. 解决python "Non-ASCII character"错误

    原文http://jingyan.baidu.com/article/219f4bf7d04887de442d3899.html 1.出现问题的原因:程序中的编码错误,python默认是acii模式, ...

  5. Array与ArrayBuffer

    一.概述 二:Array使用 1.建立方式三种(数组里可以有不同的数据类型) 2.Array的简单使用 三:ArrayBuffer的简单使用 1.ArrayBuffer建立 导包 2.添加元素(+=) ...

  6. StringBuffer与StringBuilder有什么区别

    package String比较; /* * StringBuffer与StringBuilder有什么区别 * StringBuilder是JDK5增加的一个新类,功能几乎与StringBuffer ...

  7. JAVASE02-Unit02: 正则表达式 、 Object 、 包装类

    正则表达式 . Object . 包装类 字符串支持正则表达式的方法一: package day02; /** * 字符串支持正则表达式的方法一: * boolean matches(String r ...

  8. 检测浏览器是否支持cookie方法

    cookie 摘自: http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html Cookie是什么? Cookie 是一小段文本信息 ...

  9. RDIFramework.NET ━ 9.8 用户权限管理 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.8 用户权限管理 -Web部分 在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色.用 ...

  10. Winform 进程、线程、treeview

    进程:一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况 进程要使用的类是:Process它在命名空间:System.Diagnostics; 静态方法Start();也可以实例化对象,来 ...