1.项目的目录结构

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

package csh.entity;/*** @author 悦文* @create 2018-10-24 18:41**/
public class Order {private int id;private String name;private int status;private String updatetime;public Order(int id, String name, int status, String updatetime) {this.id = id;this.name = name;this.status = status;this.updatetime = updatetime;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getStatus() {return status;}public void setStatus(int status) {this.status = status;}public String getUpdatetime() {return updatetime;}public void setUpdatetime(String updatetime) {this.updatetime = updatetime;}
}

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

package jdbc.dao;import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment;/*** 创建Excel基础类** @author 悦文* @create 2018-11-15 10:07**/
public class ExcelUtil {public static HSSFWorkbook getHSSFWorkbook(String sheetName, String[] title, String[][] values, HSSFWorkbook wb) {// 第一步,创建一个HSSFWorkbook,对应一个Excel文件if (wb == null) {wb = new HSSFWorkbook();}// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheetHSSFSheet sheet = wb.createSheet(sheetName);// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制HSSFRow row = sheet.createRow(0);// 第四步,创建单元格,并设置值表头 设置表头居中HSSFCellStyle style = wb.createCellStyle();style.setAlignment(HorizontalAlignment.CENTER); // 创建一个居中格式//声明列对象HSSFCell cell = null;//创建标题for (int i = 0; i < title.length; i++) {cell = row.createCell(i);cell.setCellValue(title[i]);cell.setCellStyle(style);}//创建内容for (int i = 0; i < values.length; i++) {row = sheet.createRow(i + 1);for (int j = 0; j < values[i].length; j++) {//将内容按顺序赋给对应的列对象
                row.createCell(j).setCellValue(values[i][j]);}}return wb;}
}

4.查询数据库得到导出的数据
public static List<Order> getOrderByDate(String start, String end, int currentpage, int maximum) throws SQLException {//int id = -1;try {//HH:mm:ss:SSS//currentpage=currentpage-1;//分页起始点int maximumstart = maximum * (currentpage - 1);Long startstamp = Timestamp.dateToStamp(start + ":000");Long endstamp = Timestamp.dateToStamp(end + ":000");Connection conn = Dao.getConnection();//select * from order_user WHERE update_time BETWEEN 1541001600000 AND 1543507200000 GROUP BY update_time DESC limit 0,2 ;PreparedStatement ps = (PreparedStatement) conn.prepareStatement("select * from order_user WHERE update_time BETWEEN ? AND ? GROUP BY id DESC  limit " + maximumstart + "," + maximum);ps.setLong(1, startstamp);ps.setLong(2, endstamp);
//            ps.setInt(3, Integer.parseInt(contrller));// ps.setString(1, name);ResultSet rs = ps.executeQuery();List<Order> orderlist = new ArrayList();while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");int status = rs.getInt("status");long updatetime = rs.getLong("update_time");String updatetimes = String.valueOf(updatetime);Order order = new Order(id, name, status, Timestamp.stampToDate(updatetimes));orderlist.add(order);}Dao.close(rs, ps, conn);return orderlist;} catch (SQLException e) {e.printStackTrace();return null;} catch (ParseException e) {e.printStackTrace();}return null;}

5.ExportExcelServlet.java,创建Excel响应流
package com.csh.servlet;import csh.entity.Order;
import jdbc.dao.ExcelUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import search.SearchDao;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;/*** Created by admin on 2018/11/16.*/
@WebServlet(name = "ExportExcelServlet")
public class ExportExcelServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String start = "";String end = "";String contrller = "";String uri = request.getRequestURL() + (request.getQueryString() != null ? "?" + request.getQueryString() : "");System.out.println(uri);Map<String, String[]> querymap = request.getParameterMap();//判断不为空for (String key : querymap.keySet()) {String t = querymap.get(key)[0];if (key.equals("startdate")) {if (!t.equals("")) {start = querymap.get(key)[0];}} else if (key.equals("startend")) {if (!t.equals("")) {end = querymap.get(key)[0];}} else if (key.equals("contrller")) {if (!t.equals("")) {contrller = querymap.get(key)[0];}}}if (start.equals("") || end.equals("") || start.equals("null") || end.equals("null")) {//判断时间为空且状态为空if (contrller.equals("") || contrller.equals("null")) {try {export(request, response,SearchDao.getAll());} catch (Exception e) {e.printStackTrace();}//判断时间为空但是状态不为空} else {try {export(request, response,SearchDao.exportOrderByStatus(contrller));} catch (Exception e) {e.printStackTrace();}}} else {//判断时间不为空且状态不为空if (!contrller.equals("") && !contrller.equals("null")) {try {export(request, response,SearchDao.exportOrderByDateAndContrller(start, end, contrller));} catch (Exception e) {e.printStackTrace();}} else {//判断时间不为空,状态为空try {export(request, response,SearchDao.exportOrderByDate(start, end));} catch (Exception e) {e.printStackTrace();}}}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}public void export(HttpServletRequest request, HttpServletResponse response,List<Order> order) throws Exception {//获取数据List<Order> list = order;//excel标题String[] title = {"ID", "name", "status", "update_time", "comment"};//excel文件名String fileName = "订餐统计表" + System.currentTimeMillis() + ".xls";//sheet名String sheetName = "订餐统计";String[][] content=new String[list.size()][title.length];for (int i = 0; i < list.size(); i++) {content[i] = new String[title.length];Order obj = list.get(i);content[i][0] = String.valueOf(obj.getId());content[i][1] = obj.getName();if(obj.getStatus()==1){content[i][2] = "加班已订餐";}else if(obj.getStatus()==2){content[i][2] = "加班未订餐";}//content[i][2] = String.valueOf(obj.getStatus());content[i][3] = obj.getUpdatetime();//content[i][4] = obj.get("comment").tostring();
        }
//------------------------以下是向excel中导入查询的数据----------------------
//创建HSSFWorkbookHSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);//响应到客户端try {this.setResponseHeader(response, fileName);OutputStream os = response.getOutputStream();wb.write(os);os.flush();os.close();} catch (Exception e) {e.printStackTrace();}}//发送响应流方法public void setResponseHeader(HttpServletResponse response, String fileName) {try {try {fileName = new String(fileName.getBytes(), "ISO8859-1");} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch block
                e.printStackTrace();}response.setContentType("application/octet-stream;charset=ISO8859-1");response.setHeader("Content-Disposition", "attachment;filename=" + fileName);response.addHeader("Pargam", "no-cache");response.addHeader("Cache-Control", "no-cache");} catch (Exception ex) {ex.printStackTrace();}}
}

 
6.请求页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><meta charset="UTF-8"><title>欢迎页面-X-admin2.0</title><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport"content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/><link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"/><link rel="stylesheet" href="./css/font.css"><link rel="stylesheet" href="./css/xadmin.css"><script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script><script type="text/javascript" src="./lib/layui/layui.js" charset="utf-8"></script><script type="text/javascript" src="./js/xadmin.js"></script><!-- 让IE8/9支持媒体查询,从而兼容栅格 --><!--[if lt IE 9]><script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script><script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script><![endif]-->
</head><body><xblock><button class="layui-btn layui-btn-danger" οnclick="exporExcel()">导出Excel</button></xblock><script>function exporExcel() {var obj = document.getElementById("contrller"); //定位idvar index = obj.selectedIndex; // 选中索引//var text = obj.options[index].text; // 选中文本var contrller = obj.options[index].value; // 选中值var startdate = document.getElementById("start").value;var startend = document.getElementById("end").value;window.location.href = "/javawebservlet/ExportExcelServlet?startdate="+startdate+"&"+"startend="+startend+"&"+"contrller="+contrller;}
</script></body></html>

转载于:https://www.cnblogs.com/appium/p/10008801.html

jsp+servlet 导出Excel表格相关推荐

  1. java代码实现导出Excel表格、工具ssm框架、maven、idea

    第一步.导入依赖 <!--生成excel文件--><dependency><groupId>org.apache.poi</groupId><ar ...

  2. 简单的 Java 导出 Excel 表格 小例子《一抹茶CSDN》

    Java 导出 Excel 为什么要有导出Excel表格的功能呢? 因为我们在使用软件时会有,一些数据需要导出来,进行留存,大多数人使用的都是office的办公软件,就会使用常用的Excel表格.因此 ...

  3. 使用EasyPoi利用excel模板导出excel表格下载

    前言:使用excel模板导出excel的好处在于可以事先在模板上定义颜色.格式等,适用于模板设计得比较灵活复杂的场景 一.添加jar包 <dependency><groupId> ...

  4. java使用模板导出Excel表格

    java使用模板导出Excel表格 文章目录 java使用模板导出Excel表格 模板示例 一.引入依赖 二.使用步骤 1.添加工具类 2.导出Excel 模板示例 一.引入依赖 <depend ...

  5. Java web项目利用POI导出EXCEL表格

    SSH2 POI导出EXCEL表格 1.首先导入poi的jar包 HSSFWorkbook :工作簿,代表一个excel的整个文档 HSSFSheet:工作表 HSSFRow :行 HSSFCell: ...

  6. 天易26----java导出excel表格(支持wps和office excel)

    一:页面图片显示预览: 1) 2)点击导出按钮后预览: 3)最终生成的excel表格图片预览: 二:代码演示: 说明:执行操作时,请先引进导出excel表格的jar文件包,在本人的资源里面可以下载,网 ...

  7. java中poi导出Excel表格(前台流文件接收)

    java中poi导出Excel表格,前端以流的方式接收,而非直接生成文件再下载,解决多台服务器部署后,路径地址不统一导致的下载问题. 生成Excel示例图: 2.代码说明 ① 在上次的基础上增加了底部 ...

  8. java实现这个无表头空表格,《java程序导出excel表格是空白的没有数据?》 java怎么导入数据库...

    java程序导出excel表格是空白的没有数据? 看一下是否可以链接上数据库,或者查看一下链接的数据库是否有数据 java从数据库中导出excel poi 建议你使用pageoffice. java ...

  9. 上传文件、下载文件、数据导出excel表格整理模板

    上传文件 思路: 1.设置上传的路径,上传名 2.在这个路径path上新建名为filename的文件 file 3.判断该文件的父目录是否存在,若不存在就新建一个 4.用.transferTo方法将文 ...

最新文章

  1. android44投屏开发,ARDC(B1425)android投屏利器,开发好帮手.zip
  2. mysql建表影响效率_MySQL建表查询优化技巧
  3. 平时,需要查看电脑运行情况报告,就用这个工具查看统计出来
  4. php -q poller.php --force,cacti 安装后没有图像
  5. 实现秒杀的几个想法(续)
  6. Matplotlib基础全攻略
  7. 衡量试卷难度信度_我们可以通过数字来衡量语言难度吗?
  8. tcpcopy使用方法
  9. Qt值得学习吗?详解Qt的几种开发方式
  10. C#操作 excel表格
  11. [Python] 增加维度或者减少维度:a.squeeze(axis) 和 a.unsqueeze(axis)
  12. asp 文本转时间_[译]使用LazZiya.ExpressLocalization开发多语言支持的ASP.NET Core 2.x项目...
  13. 华为手机耳机sws音效是什么_耳机sws音效是什么 华为手机耳机sws音效是什么
  14. php读取excel公式取值,通用PHPExcel导出函数代码
  15. stm32 读取sd卡图片显示_全面测试雷克沙1667x 性能,你懂什么叫超高速SD卡吗
  16. 蒟蒻的控制台贪吃蛇(新手实验)
  17. python数据分析——简单且有用的代码
  18. App Store 评分和评论:用户评论如何影响 App Store 排名
  19. ​浅谈 Java 后端开发工程师腾讯面试经历分享总结
  20. hp-ux系统备份与恢复常用命令

热门文章

  1. css之其它技巧和经验列表
  2. 边工作边刷题:70天一遍leetcode: day 33-3
  3. Linux学习笔记:Linux分区
  4. 关于在linux python源文件头部添加 “#!/usr/bin/env python” 不能直接运行的问题
  5. 快速写出较好CSS的5种方法
  6. 透過 OpenNI 建立 Kinect 3D Point Cloud
  7. query如何全选或不全选时,不操作已经禁用的checkbox
  8. [svc]ext4文件删除访问原理
  9. Markdown语法记录
  10. Oracle dump 分析secondary key