1.首先前端代码如下:

一个导出按钮:<input id="export" class="btn btn-primary" type="button" onclick="a();" value="导出"/>

实现按钮的点击事件:

function a(currentPage) {
console.log("你好");
var dateFrom = document.getElementById("todayStart").value;
var dateTo = document.getElementById("todayEnd").value;
var url = "<c:url value='/'/>communityOrder/export?dateFrom="+dateFrom+"&dateTo="+dateTo;
window.location.href = url;
}

其中dateTo和var dateFrom是条件查询,url是请求后台的路径

2.后台代码如下:

/**
* 导出数据
* @param response
*/
@RequestMapping(value = "/export")
public void export(HttpSession session,HttpServletResponse response, HttpServletRequest request,
Model model,
@RequestParam(value = "dateFrom",required = false)String dateFrom,
@RequestParam(value = "dateTo",required = false)String dateTo,
@ModelAttribute("pageSupport")PageResult pageResult) throws IOException{
Date dDateFrom = null;
Date dDateTo = null;
Long startTime=null;
Long endTime=null;
// 处理申请日
if (!ComUtil.isEmpty(dateFrom) && dateFrom.matches("2[0-9]{7}")) {
dDateFrom = ComUtil.parseDate(dateFrom + "000000");
startTime=dDateFrom.getTime()/1000;
}
if (!ComUtil.isEmpty(dateTo) && dateTo.matches("2[0-9]{7}")) {
dDateTo = ComUtil.parseDate(dateTo + "235959");
endTime=dDateTo.getTime()/1000;
}
//三大步
//第一步:查询数据
Integer totalCount =communityOrderService.getAllCount(startTime,endTime);
List<CommunityOrderObject> list = communityOrderService.findByPage(startTime,endTime,1, totalCount);
//第二步:将列表写成excel文件流
//平时如何写excel?
//1.创建一个excel的工作簿(创建是97格式还是2007的格式)
try (HSSFWorkbook workbook = new HSSFWorkbook()) {

//2.创建一个工作表(sheet)
//workbook.createSheet();
HSSFSheet sheet = workbook.createSheet("物业订单");

//3.先创建第一行,写excel表格:标题一列的信息
HSSFRow headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("编号");
headerRow.createCell(1).setCellValue("会员编号");
headerRow.createCell(2).setCellValue("订单号");
headerRow.createCell(3).setCellValue("房间编号");
headerRow.createCell(4).setCellValue("支付金额");
headerRow.createCell(5).setCellValue("支付方式");
headerRow.createCell(6).setCellValue("支付时间");
headerRow.createCell(7).setCellValue("创建时间");

//创建其他行,数据行
for (CommunityOrderObject CommunityOrderObject : list) {
HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum()+1);
dataRow.createCell(0).setCellValue(CommunityOrderObject.getId());
dataRow.createCell(1).setCellValue(CommunityOrderObject.getMobile());
dataRow.createCell(2).setCellValue(CommunityOrderObject.getSn());
dataRow.createCell(3).setCellValue(CommunityOrderObject.getRoomId());
dataRow.createCell(4).setCellValue(CommunityOrderObject.getPayFee());
if(StringUtils.equals(CommunityOrderObject.getPayType(),"offline")){
dataRow.createCell(5).setCellValue("线下支付");
}
if(StringUtils.equals(CommunityOrderObject.getPayType(),"alipay")){
dataRow.createCell(5).setCellValue("线上支付");
}
String payTime = CommunityOrderObject.getPayTime();
/* Date d =new Date();
if(null!=payTime&&!"".equals(payTime.trim())){
d= new Date(Long.valueOf(payTime)*1000l);
}
String format1 = sdf2.format(d);*/
if(null!=payTime&&!"".equals(payTime)&&"1970-01-01".equals(payTime.trim())){
dataRow.createCell(6).setCellValue("");
}else{
dataRow.createCell(6).setCellValue(payTime);
}
Date createdOn = CommunityOrderObject.getCreatedOn();
String format1 = sdf2.format(createdOn);
dataRow.createCell(7).setCellValue(format1);
}

//第三步:将文件流写入响应,交给客户端浏览器
//1。设置文件类型
//文件名
StringBuffer sb = new StringBuffer();
Date date = new Date();
String time = sdf2.format(date);
sb.append(time).append("物业订单.xls");
String downFilename= sb.toString();
//获取文件的MIME类型:
String contentType = request.getContentType();
//String contentType=" multipart/form-data";两种方式都可以
//将MIME类型放入响应
response.setContentType(contentType);
//2,文件名和附件打开方式
//浏览器类型
String agent = request.getHeader("user-agent");
//附件名编码,解决中文乱码问题
downFilename = ComUtil.encodeDownloadFilename(downFilename, agent);
//获取附件的名字和下载方式
String contentDisposition="attachment;filename="+downFilename;
//将附件名字和下载方式放入响应头信息中
response.setHeader("Content-Disposition", contentDisposition);
response.setCharacterEncoding("UTF-8");

//3.写入到响应
workbook.write(response.getOutputStream());
}//end of try (HSSFWorkbook workbook = new HSSFWorkbook()) {
}

在这里需要注意的是条件查询和没有条件查询结果的导出

在java中实现数据导入excel表格中的更多相关文章

  1. python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...

  2. C# 将List中的数据导入csv文件中

    //http://www.cnblogs.com/mingmingruyuedlut/archive/2013/01/20/2849906.html C# 将List中的数据导入csv文件中   将数 ...

  3. 如何将数据库中的数据导入到Solr中

    要使用solr实现网站中商品搜索,需要将mysql数据库中数据在solr中创建索引. 1.需要在solr的schema.xml文件定义要存储的商品Field. 商品表中的字段为: 配置内容是: < ...

  4. 利用java反射机制实现读取excel表格中的数据

    如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.Lis ...

  5. MySQL中导入Excel表格中的数据

    在数据库中建立好响应的数据库.表(参考excel表格中列中的名字和内容): 将excel表格另存为txt文件,选择“文本文件(制表符分割)”: 打开相应的txt文件,只留下要导入的数据(windows ...

  6. oracle数据库中导入Excel表格中的数据

    1.点击[工具]-->[ODBC 导入器],如图: 2.在导入器里选择第一个[来自ODBC的数据],用户名/系统DSN-->填写[Excel Files],输入用户名和密码,点击 [连接] ...

  7. c#导出ListView中的数据到Excel表格

    1.添加组件:Microsoft.Office.Interop.Excel 步骤:右键点击“引用”--->添加引用--->COM--->Microsoft.Office.Intero ...

  8. Java将数据库数据导入EXCEL

    一般的数据库数据怎么导入excel中呢??这让人非常疑惑,今天我找到了一个方法能够实现 须要导入一个第三方包下载地址 详细内容例如以下: 里面含有指导文档,index.html里面含有怎样读取数据库文 ...

  9. jstl-将List中的数据展示到表格中

    功能: 使用jstl将List中的数据动态展示到Jsp表格中,并实现隔行换色功能. 效果图: Jsp代码: <%@ page import="java.util.ArrayList&q ...

随机推荐

  1. STL中的二分查找

    本文转载于https://blog.csdn.net/riba2534/article/details/69240450 使用的时候注意:必须用在非递减的区间中 二分查找的原理非常简单,但写出的代码中 ...

  2. 安装python--环境配置

    1.下载Python:https://www.python.org/ 2.下载setuptools: https://pypi.Python.org/pypi/setuptools 3.下载pip: ...

  3. svn的简单学习与日常使用

  4. Android多种样式的进度条

    原创 2016年04月26日 16:46:35 标签: android / clip / 进度条 / 8473 编辑 删除 ---- The mark of the immature man is t ...

  5. OO第二次阶段性总结

    前两次作业我都无效了……用了很久时间但还是没能弄明白多线程的写法,以后还是要学会即时的多问问会的同学吧…… 以及我的Mertrics在挣扎很久之后还是用不了……跪了 第七次作业 第七次作业能够完成的原 ...

  6. iOS APP打开其他应用

    1.限于iOS的沙盒机制,一般的app都只在沙盒内操作运行,针对app之间的通讯苹果还是给出了一些解决方案的. 最常见的场景就是在一个APP中打开另一个APP. 核心就是一个API,通过制定一个一个U ...

  7. 新手上路、安装JDK教程

    按照以下的图片步骤,登录http://www.oracle.com 下载 JDK (J2SE)  JDK 1.0, 1.1, 1.2, 1.3, 1.4    1.5.(JDK5.0) → 支持注解. ...

  8. openLayers,常见地图实例

    http://openlayers.org/en/master/examples/epsg-4326.html -- 标尺 http://openlayers.org/en/master/exampl ...

  9. k8s-N0.4-service

    本章目录 k8s中的三种网络 service的构建及参数说明 一  k8s的三种网络 在k8s集群中,k8s是有三种网络类型的,下面我们看一下下面这个图 1 节点网络:顾名思义,节点网络就是你每台物理 ...

  10. delphi 中实现当期日期 减去 若干小时的方法

    假定当期日期为:2011-08-01 15:00:00 now - 1      :代表前一天的日期 返回值:2011-07-31 15:00:00 now - 1/3   :代表8小时前       ...