POI导出,开发中经常会遇到数据导出这样的问题,下面是我在开发中采用的解决方法,大家可以参考,具体的实现害的结合你自身的业务逻辑
@RequestMapping(value = "/drawPayFailExport",method = RequestMethod.GET,produces = "application/json")
public ResponseData getAllDrawPayFailExport(HttpServletRequest request, HttpServletResponse response){
String startTime = null;
String endTime = null;
String userName = null;
String accountNumber = null;
if (!"undefined".equals(request.getParameter("startTime"))){
startTime = request.getParameter("startTime");
}
if (!"undefined".equals(request.getParameter("endTime"))){
endTime = request.getParameter("endTime");
}
if (StringUtils.isNotBlank(request.getParameter("userName"))){
userName = request.getParameter("userName");
}
if (StringUtils.isNotBlank(request.getParameter("accountNumber"))){
accountNumber = request.getParameter("accountNumber");
}
DrawPayFailDto drawPayFailDto = new DrawPayFailDto();
drawPayFailDto.setStartTime(startTime);
drawPayFailDto.setEndTime(endTime);
drawPayFailDto.setUserName(userName);
drawPayFailDto.setAccountNumber(accountNumber);
logger.info("兑换提现付款失败导出请求参数:"+JSON.toJSON(drawPayFailDto));
//第一步创建workbook
HSSFWorkbook wb = new HSSFWorkbook();
//第二步创建sheet
HSSFSheet sheet = wb.createSheet("兑换提现付款失败表");
//第三步创建行row:添加表头0行
HSSFRow row = sheet.createRow(0);
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //居中
//第四步创建单元格
HSSFCell cell = row.createCell(0); //第一个单元格
cell.setCellValue("序号"); //设定值
cell.setCellStyle(style); //内容居中
cell = row.createCell(1); //第二个单元格
cell.setCellValue("申请编号");
cell.setCellStyle(style);
cell = row.createCell(2); //第三个单元格
cell.setCellValue("申请时间");
cell.setCellStyle(style);
cell = row.createCell(3); //第四个单元格
cell.setCellValue("用户姓名");
cell.setCellStyle(style);
cell = row.createCell(4); //第五个单元格
cell.setCellValue("手机号");
cell.setCellStyle(style);
cell = row.createCell(5); //第六个单元格
cell.setCellValue("实际应付金额");
cell.setCellStyle(style);
cell = row.createCell(6); //第七个单元格
cell.setCellValue("退款银行");
cell.setCellStyle(style);
cell = row.createCell(7); //第八个单元格
cell.setCellValue("银行卡号");
cell.setCellStyle(style);
cell = row.createCell(8);//第九个单元格
cell.setCellValue("初审人");
cell.setCellStyle(style);
cell = row.createCell(9); //第十个单元格
cell.setCellValue("复审人");
cell.setCellStyle(style);
cell = row.createCell(10); //第十一个单元格
cell.setCellValue("支付渠道");
cell.setCellStyle(style);
cell = row.createCell(11); //第十二个单元格
cell.setCellValue("付款状态");
cell.setCellStyle(style);
ResponseData responseData = refundTicketDrawService.selectDrawPayFailList(drawPayFailDto);
List<DrawConfirmDetailVo> list = null;
if ("0".equals(responseData.getStatus())){
list = (List<DrawConfirmDetailVo>) responseData.getData();
}
if (list != null && list.size() > 0){
for (int i = 0; i < list.size(); i++){
DrawConfirmDetailVo drawConfirmDetailVo = list.get(i); //创建行
row = sheet.createRow(i+1); //创建单元格并且添加数据
row.createCell(0).setCellValue(i+1);
row.createCell(1).setCellValue(drawConfirmDetailVo.getApplyNo());
row.createCell(2).setCellValue(drawConfirmDetailVo.getApplytime());
row.createCell(3).setCellValue(drawConfirmDetailVo.getRealName());
row.createCell(4).setCellValue(drawConfirmDetailVo.getAccountNumber());
row.createCell(5).setCellValue(String.valueOf(drawConfirmDetailVo.getActualMoney()));
row.createCell(6).setCellValue(drawConfirmDetailVo.getBankName());
row.createCell(7).setCellValue(drawConfirmDetailVo.getBankAccount());
row.createCell(8).setCellValue(drawConfirmDetailVo.getFirstAuditPerson());
row.createCell(9).setCellValue(drawConfirmDetailVo.getSecondAuditPerson());
row.createCell(10).setCellValue(drawConfirmDetailVo.getPayChannel());
if (drawConfirmDetailVo.getPayState() == 0){
row.createCell(11).setCellValue(PayState.Pay_wait.getDesc());
} else if (drawConfirmDetailVo.getPayState() == 1){
row.createCell(11).setCellValue(PayState.Pay_success.getDesc());
}else if (drawConfirmDetailVo.getPayState() == 2){
row.createCell(11).setCellValue(PayState.Pay_fail.getDesc());
}else if (drawConfirmDetailVo.getPayState() == 3){
row.createCell(11).setCellValue(PayState.Pay_ing.getDesc());
}
}
}
//web浏览通过MIME类型判断文件是excel类型
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setCharacterEncoding("utf-8");
//第六步将生成excel文件保存到指定路径下
try { //FileOutputStream fout = new FileOutputStream("D:\\MediaPos.xls");
String fileName = URLEncoder.encode("兑换提现付款失败表.xls");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
OutputStream fout = response.getOutputStream(); wb.write(fout); fout.close();
} catch (IOException e) {
logger.error("导出兑换提现付款失败表出错",e);
}
return null;
}
POI导出,开发中经常会遇到数据导出这样的问题,下面是我在开发中采用的解决方法,大家可以参考,具体的实现害的结合你自身的业务逻辑的更多相关文章
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- AndroidStudio中利用git下载github或者git.oschina的代码时报错:repository test has failed解决方法
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 微博:http://weibo.com/mcxiaobing AndroidS ...
- win7或win2008系统中,出现【已停止工作,联机检查解决方案并关闭该程序,关闭程序】解决方法!
win7或win2008系统中,出现[已停止工作,联机检查解决方案并关闭该程序,关闭程序]解决方法! 经过摸索,点击[控制面板]-[操作中心]-[更改操作中心设置]-[问题报告设置]-[从不检查解决方 ...
- C# 实现将listview中已经显示的数据导出到Access 数据库
private void button1_Click(object sender, EventArgs e) { OleDbConnection dbconn = new OleDbConnectio ...
- 分页(将数据库中的多条数据一页一页的显示在jsp页面中)
一.显示数据库中的多条数据为什么要用分页 在真正的开发中,数据库中所存储的数据绝对不像我们平时所写的那样,仅仅有几条数据,而是有几十条甚至上百条,像淘宝京东的用户把都是上几十万甚至百万的.如果这时候在 ...
- C# 从集合A中取出集合B中不包含的数据(根据ID判断),并添加到集合B中
从一个集合A中取出另一个集合B中不包含的数据,并添加到集合B中 private void button2_Click(object sender, EventArgs e) { var ListA = ...
- asp.net MVC中使用Html.Checkbox提示该字符串未被识别为有效的布尔值错误的解决方法
在asp.net MVC中使用Html.CheckBox提交后出现该字符串未被识别为有效的布尔值错误,或从类型“System.String”到类型“System.Boolean”的参数转换失败. 错误 ...
- mysql数据库数据(字段数过大)太多导入不了的解决方法
mysql数据库数据(字段数过大)太多导入不了的决方法: 1.打开navicat 工具 2.在数据库上右键,执行右键菜单命令“命令列界面” 3.在打开的窗口中,运行set global max_all ...
- 数据库查询的数据导出到xls表,集合数据导出到xls表
//实体类package com.outxls; public class Student { private Integer studentId; private String studentNam ...
随机推荐
- pycharm 断点调试
转自; https://blog.csdn.net/chenggong2dm/article/details/9368641 PyCharm 作为IDE,断点调试是必须有的功能.否则,我们还真不如用纯 ...
- the little schemer 笔记(9)
第九章 ...and Again, and Again, and, Again, ... 你想来点鱼子酱吗? 那就去找它吧. (looking a lat)是什么,其中a是 caviar, lat是( ...
- C++构造函数与析构函数的解析
创建一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值. 注意,类的数据成员是不能在声明类时初始化的.如果一个类中所有的成员都是公用的,则可以在定义对象时对数据成员进行初始化.如: clas ...
- UWP 动画
一:StoryBoard 一般翻译成演示图版或者故事板,就像电影中的情节串联板,它是一个动画时间线的容器. 二:动画的分类 简单动画:以Animation结尾,例如DoubleAnimat ...
- Maven聚合模式
项目的打包类型:pom.jar.war 项目中一般使用maven进行模块管理,每个模块下对应都有一个pom文件,pom文件中维护了各模块之间的依赖和继承关系.项目模块化可以将通用的部分抽离出来,方便重 ...
- 144 Binary Tree Preorder Traversal 二叉树的前序遍历
给定一棵二叉树,返回其节点值的前序遍历.例如:给定二叉树[1,null,2,3], 1 \ 2 / 3返回 [1,2,3].注意: 递归方法很简单,你可以使用迭代方法来解决 ...
- MongoDB学习笔记~监控Http请求的消息链
在微服务架构里,你的一个任务可以需要经过多次中转,去多个接口获取数据,而在这个过程中,出现问题后的解决就成了一个大难点,你无法定位它的问题,这时,大叔的分布式消息树就出现了,费话不多说,主要看一下实现 ...
- canvas基础绘制-绚丽倒计时
效果图: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- android studio MQTT测试成功
package myself.mqtt.wenzheng.studio.mqtt; import android.app.Notification; import android.app.Notifi ...
- pandas DataFrame 警告(SettingWithCopyWarning)
转自:https://www.cnblogs.com/pig-fly/p/7875472.html 刚接触python不久,编程也是三脚猫,所以对常用的这几个工具还没有一个好的使用习惯,毕竟程序语言是 ...