1.项目的目录结构

2.创建一个用户类,下面会通过查询数据库把数据封装成用户实例列表

  1. package csh.entity;
  2.  
  3. /**
  4. * @author 悦文
  5. * @create 2018-10-24 18:41
  6. **/
  7. public class Order {
  8. private int id;
  9. private String name;
  10. private int status;
  11. private String updatetime;
  12.  
  13. public Order(int id, String name, int status, String updatetime) {
  14. this.id = id;
  15. this.name = name;
  16. this.status = status;
  17. this.updatetime = updatetime;
  18. }
  19.  
  20. public int getId() {
  21. return id;
  22. }
  23.  
  24. public void setId(int id) {
  25. this.id = id;
  26. }
  27.  
  28. public String getName() {
  29. return name;
  30. }
  31.  
  32. public void setName(String name) {
  33. this.name = name;
  34. }
  35.  
  36. public int getStatus() {
  37. return status;
  38. }
  39.  
  40. public void setStatus(int status) {
  41. this.status = status;
  42. }
  43.  
  44. public String getUpdatetime() {
  45. return updatetime;
  46. }
  47.  
  48. public void setUpdatetime(String updatetime) {
  49. this.updatetime = updatetime;
  50. }
  51. }

3.ExcelUtil.java文件,创建Excel基础类

  1. package jdbc.dao;
  2.  
  3. import org.apache.poi.hssf.usermodel.*;
  4. import org.apache.poi.ss.usermodel.HorizontalAlignment;
  5.  
  6. /**
  7. * 创建Excel基础类
  8. *
  9. * @author 悦文
  10. * @create 2018-11-15 10:07
  11. **/
  12. public class ExcelUtil {
  13. public static HSSFWorkbook getHSSFWorkbook(String sheetName, String[] title, String[][] values, HSSFWorkbook wb) {
  14.  
  15. // 第一步,创建一个HSSFWorkbook,对应一个Excel文件
  16. if (wb == null) {
  17. wb = new HSSFWorkbook();
  18. }
  19.  
  20. // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
  21. HSSFSheet sheet = wb.createSheet(sheetName);
  22.  
  23. // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
  24. HSSFRow row = sheet.createRow(0);
  25.  
  26. // 第四步,创建单元格,并设置值表头 设置表头居中
  27. HSSFCellStyle style = wb.createCellStyle();
  28. style.setAlignment(HorizontalAlignment.CENTER); // 创建一个居中格式
  29.  
  30. //声明列对象
  31. HSSFCell cell = null;
  32.  
  33. //创建标题
  34. for (int i = 0; i < title.length; i++) {
  35. cell = row.createCell(i);
  36. cell.setCellValue(title[i]);
  37. cell.setCellStyle(style);
  38. }
  39.  
  40. //创建内容
  41. for (int i = 0; i < values.length; i++) {
  42. row = sheet.createRow(i + 1);
  43. for (int j = 0; j < values[i].length; j++) {
  44. //将内容按顺序赋给对应的列对象
  45. row.createCell(j).setCellValue(values[i][j]);
  46. }
  47. }
  48. return wb;
  49. }
  50. }
  1. 4.查询数据库得到导出的数据
  1. public static List<Order> getOrderByDate(String start, String end, int currentpage, int maximum) throws SQLException {
  2. //int id = -1;
  3. try {
  4. //HH:mm:ss:SSS
  5. //currentpage=currentpage-1;
  6. //分页起始点
  7. int maximumstart = maximum * (currentpage - 1);
  8. Long startstamp = Timestamp.dateToStamp(start + ":000");
  9. Long endstamp = Timestamp.dateToStamp(end + ":000");
  10. Connection conn = Dao.getConnection();
  11. //select * from order_user WHERE update_time BETWEEN 1541001600000 AND 1543507200000 GROUP BY update_time DESC limit 0,2 ;
  12. PreparedStatement ps = (PreparedStatement) conn
  13. .prepareStatement("select * from order_user WHERE update_time BETWEEN ? AND ? GROUP BY id DESC limit " + maximumstart + "," + maximum);
  14. ps.setLong(1, startstamp);
  15. ps.setLong(2, endstamp);
  16. // ps.setInt(3, Integer.parseInt(contrller));
  17. // ps.setString(1, name);
  18. ResultSet rs = ps.executeQuery();
  19. List<Order> orderlist = new ArrayList();
  20. while (rs.next()) {
  21. int id = rs.getInt("id");
  22. String name = rs.getString("name");
  23. int status = rs.getInt("status");
  24. long updatetime = rs.getLong("update_time");
  25. String updatetimes = String.valueOf(updatetime);
  26. Order order = new Order(id, name, status, Timestamp.stampToDate(updatetimes));
  27. orderlist.add(order);
  28. }
  29. Dao.close(rs, ps, conn);
  30. return orderlist;
  31. } catch (SQLException e) {
  32. e.printStackTrace();
  33. return null;
  34. } catch (ParseException e) {
  35. e.printStackTrace();
  36. }
  37. return null;
  38. }
  1.  
  1. 5.ExportExcelServlet.java,创建Excel响应流
  1. package com.csh.servlet;
  2.  
  3. import csh.entity.Order;
  4. import jdbc.dao.ExcelUtil;
  5. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  6. import search.SearchDao;
  7.  
  8. import javax.servlet.ServletException;
  9. import javax.servlet.annotation.WebServlet;
  10. import javax.servlet.http.HttpServlet;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13. import java.io.IOException;
  14. import java.io.OutputStream;
  15. import java.io.UnsupportedEncodingException;
  16. import java.util.List;
  17. import java.util.Map;
  18.  
  19. /**
  20. * Created by admin on 2018/11/16.
  21. */
  22. @WebServlet(name = "ExportExcelServlet")
  23. public class ExportExcelServlet extends HttpServlet {
  24.  
  25. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  26. String start = "";
  27. String end = "";
  28. String contrller = "";
  29. String uri = request.getRequestURL() + (request.getQueryString() != null ? "?" + request.getQueryString() : "");
  30. System.out.println(uri);
  31. Map<String, String[]> querymap = request.getParameterMap();
  32.  
  33. //判断不为空
  34. for (String key : querymap.keySet()) {
  35. String t = querymap.get(key)[0];
  36. if (key.equals("startdate")) {
  37. if (!t.equals("")) {
  38. start = querymap.get(key)[0];
  39. }
  40. } else if (key.equals("startend")) {
  41. if (!t.equals("")) {
  42. end = querymap.get(key)[0];
  43. }
  44.  
  45. } else if (key.equals("contrller")) {
  46. if (!t.equals("")) {
  47. contrller = querymap.get(key)[0];
  48. }
  49. }
  50. }
  51.  
  52. if (start.equals("") || end.equals("") || start.equals("null") || end.equals("null")) {
  53. //判断时间为空且状态为空
  54. if (contrller.equals("") || contrller.equals("null")) {
  55. try {
  56. export(request, response,SearchDao.getAll());
  57. } catch (Exception e) {
  58. e.printStackTrace();
  59. }
  60. //判断时间为空但是状态不为空
  61. } else {
  62. try {
  63. export(request, response,SearchDao.exportOrderByStatus(contrller));
  64. } catch (Exception e) {
  65. e.printStackTrace();
  66. }
  67. }
  68. } else {
  69. //判断时间不为空且状态不为空
  70. if (!contrller.equals("") && !contrller.equals("null")) {
  71. try {
  72. export(request, response,SearchDao.exportOrderByDateAndContrller(start, end, contrller));
  73. } catch (Exception e) {
  74. e.printStackTrace();
  75. }
  76. } else {
  77. //判断时间不为空,状态为空
  78. try {
  79. export(request, response,SearchDao.exportOrderByDate(start, end));
  80. } catch (Exception e) {
  81. e.printStackTrace();
  82. }
  83. }
  84. }
  85. }
  86.  
  87. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  88. doPost(request, response);
  89. }
  90.  
  91. public void export(HttpServletRequest request, HttpServletResponse response,List<Order> order) throws Exception {
  92. //获取数据
  93. List<Order> list = order;
  94.  
  95. //excel标题
  96. String[] title = {"ID", "name", "status", "update_time", "comment"};
  97.  
  98. //excel文件名
  99. String fileName = "订餐统计表" + System.currentTimeMillis() + ".xls";
  100.  
  101. //sheet名
  102. String sheetName = "订餐统计";
  103.  
  104. String[][] content=new String[list.size()][title.length];
  105. for (int i = 0; i < list.size(); i++) {
  106. content[i] = new String[title.length];
  107. Order obj = list.get(i);
  108. content[i][0] = String.valueOf(obj.getId());
  109. content[i][1] = obj.getName();
  110. if(obj.getStatus()==1){
  111. content[i][2] = "加班已订餐";
  112. }else if(obj.getStatus()==2){
  113. content[i][2] = "加班未订餐";
  114. }
  115. //content[i][2] = String.valueOf(obj.getStatus());
  116. content[i][3] = obj.getUpdatetime();
  117. //content[i][4] = obj.get("comment").tostring();
  118. }

  119. //------------------------以下是向excel中导入查询的数据----------------------
  120. //创建HSSFWorkbook
  121. HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);
  122.  
  123. //响应到客户端
  124. try {
  125. this.setResponseHeader(response, fileName);
  126. OutputStream os = response.getOutputStream();
  127. wb.write(os);
  128. os.flush();
  129. os.close();
  130. } catch (Exception e) {
  131. e.printStackTrace();
  132. }
  133. }
  134.  
  135. //发送响应流方法
  136. public void setResponseHeader(HttpServletResponse response, String fileName) {
  137. try {
  138. try {
  139. fileName = new String(fileName.getBytes(), "ISO8859-1");
  140. } catch (UnsupportedEncodingException e) {
  141. // TODO Auto-generated catch block
  142. e.printStackTrace();
  143. }
  144. response.setContentType("application/octet-stream;charset=ISO8859-1");
  145. response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
  146. response.addHeader("Pargam", "no-cache");
  147. response.addHeader("Cache-Control", "no-cache");
  148. } catch (Exception ex) {
  149. ex.printStackTrace();
  150. }
  151. }
  152. }
  1.  
  1.  
  1. 6.请求页面

  1.  
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <html>
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>欢迎页面-X-admin2.0</title>
  7. <meta name="renderer" content="webkit">
  8. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  9. <meta name="viewport"
  10. content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/>
  11. <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"/>
  12. <link rel="stylesheet" href="./css/font.css">
  13. <link rel="stylesheet" href="./css/xadmin.css">
  14. <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
  15. <script type="text/javascript" src="./lib/layui/layui.js" charset="utf-8"></script>
  16. <script type="text/javascript" src="./js/xadmin.js"></script>
  17. <!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
  18. <!--[if lt IE 9]>
  19. <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
  20. <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
  21. <![endif]-->
  22. </head>
  23.  
  24. <body>
  25. <xblock>
  26. <button class="layui-btn layui-btn-danger" onclick="exporExcel()">导出Excel</button>
  27. </xblock>
  28.  
  29. <script>
  30. function exporExcel() {
  31. var obj = document.getElementById("contrller"); //定位id
  32. var index = obj.selectedIndex; // 选中索引
  33. //var text = obj.options[index].text; // 选中文本
  34. var contrller = obj.options[index].value; // 选中值
  35. var startdate = document.getElementById("start").value;
  36. var startend = document.getElementById("end").value;
  37.  
  38. window.location.href = "/javawebservlet/ExportExcelServlet?startdate="+startdate+"&"+"startend="+startend+"&"+"contrller="+contrller;
  39. }
  40. </script>
  41.  
  42. </body>
  43.  
  44. </html>

jsp+servlet 导出Excel表格的更多相关文章

  1. 利用Servlet导出Excel

    -----因为Excel可以打开HTML文件,因此可以利用页面的Form表单把页面中的table内容提交给Servlet,然后后台把提交上来的table内容转换成文件流的形式,并以下载的形式转给客户端 ...

  2. java导出excel表格

    java导出excel表格: 1.导入jar包 <dependency> <groupId>org.apache.poi</groupId> <artifac ...

  3. Spring Boot 导出Excel表格

    Spring Boot 导出Excel表格 添加支持 <!--添加导入/出表格依赖--> <dependency> <groupId>org.apache.poi& ...

  4. 使用poi导出Excel表格,jar包冲突

    HTTP Status 500 – Internal Server Error Type Exception Report Message Handler processing failed; nes ...

  5. java 实现用户自由选择字段实现导出EXCEL表格

    package com.thinkgem.jeesite.common.utils.excel; import java.io.File; import java.io.OutputStream; i ...

  6. PHP导入导出excel表格图片(转)

    写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...

  7. java中使用jxl导出Excel表格详细通用步骤

    该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...

  8. .NET环境下导出Excel表格的两种方式和导入两种类型的Excel表格

    一.导出Excel表格的两种方式,其中两种方式指的是导出XML数据类型的Excel(即保存的时候可以只需要修改扩展名为.xls)和真正的Excel这两种. using System; using Sy ...

  9. 使用NPOI将数据库里信息导出Excel表格并提示用户下载

    使用NPOI进行导出Excel表格大家基本都会,我在网上却很少找到导出Excel表格并提示下载的 简单的代码如下 //mvc项目可以传多个id以逗号相隔的字符串 public ActionResult ...

随机推荐

  1. TOYS POJ 2318 计算几何 叉乘的应用

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15060   Accepted: 7270 Description Calc ...

  2. Spring MVC-集成(Integration)-生成RSS源示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_rss_feed.htm 说明:示例基于Spring MVC 4.1.6. 以下示 ...

  3. trigger dependencies

    有时候,会想知道某个表是不是会有一些trigger去更新它. 但是一般更新语句是写在trigger 内部,所以我不确定 dba_dependencies这个视图能不能存储这种依赖关系. 做个试验: 创 ...

  4. 查看OS 各项参数

    查看CPU 在linux下 cat /proc/cpuinfo 可以得到CPU信息. 要注意的是CPU型号有不同的种类比如AMD Intel.可能在这个文件中显示的信息也不同.但终归是存在这个文件中的 ...

  5. Apache OFBIZ高速上手(二)--MVC框架

    继续上一篇博客,本篇博客介绍OFBiz的MVC框架. 1.OFBiz特点 OFBiz最基本的特点是OFBiz提供了一整套的开发基于Java的web应用程序的组件和工具.包含实体引擎.服务引擎.消息引擎 ...

  6. Java-java-com-util-common-service:TreeService.java

    ylbtech-Java-java-com-util-common-service:TreeService.java 1.返回顶部 1. package com.shineyoo.manager.ut ...

  7. GROUPPING和ROLLUP的基本知识

    1.GROUPPING 是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0. ...

  8. E20170829-mk

    Parse   vt. 从语法上描述或分析(词句等); serial    adj. 连续的; 连载的; 顺序排列的; 分期偿付的; MultiThread n. 多线程; 多流; concurren ...

  9. 2205 等差数列(dp)

    2205 等差数列  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 钻石 Diamond     题目描述 Description 等差数列的定义是一个数列S,它满足了(S[i] ...

  10. 使用JQuery制作幻灯片(轮播图)

    1.首先看一下目录结构 images文件夹放所需要播放的图片. js文件夹放jquery库和main.js 2.html代码: <!DOCTYPE html> <html lang= ...