导出EXCEL(带数据)
/*
* 导出EXCEL
* @param req
* @param resp
* @param model
* @param info
* @return
*/
@RequestMapping(value = { "exportExcel" })
@ResponseBody
public String exportExcel(HttpServletRequest req,HttpServletResponse resp, Model model, ClearCheckErr info) {
List<ClearCheckErr> list = ClearCheckErrService.queryList(info);
String sumAmt=ClearCheckErrService.getSumAmt(info);
//String size=list==null?"0":String.valueOf(list.size());
//合计
String coretranSumAmt="0";
String acqtranSumAmt="0";
String sumFee="0";
if(list!=null&&list.size()>0){
if(sumAmt!=null&&!"".equals(sumAmt)&&sumAmt.contains("#")){
coretranSumAmt=sumAmt.split("#")[0].toString();
sumFee=sumAmt.split("#")[1].toString();
acqtranSumAmt=sumAmt.split("#")[2].toString();
}
} resp.setContentType("application/vnd.ms-excel;charset=UTF-8");
resp.setCharacterEncoding("UTF-8");
try{
String headName="财务报表—差错流水表 ("+this.getNowDt("yyyyMMddHHmmss",0)+")";
// 选择模板文件:
String path =req.getSession().getServletContext().getRealPath("/")+ "reportTemp/clearCheckErrReport.xls"; // excel模板
InputStream in = new FileInputStream(new File(path));
HSSFWorkbook work = new HSSFWorkbook(in);
// 得到excel的第1个sheet
HSSFSheet sheet =work.getSheetAt(0); //设置表头和制表时间
HSSFRow row = sheet.createRow((short) 1);
HSSFCellStyle style = work.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFFont font = work.createFont();
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
font.setFontName("宋体");
font.setFontHeightInPoints((short) 16);// 设置字体大小
style.setFont(font);
POIUtils.createCell(row, (short) 9, headName,style);
row.setHeight((short)(27 * 20)); int startRow=3;//表头往上多少行,开始循环填数据行数,从0开始
//获取样式
row = sheet.getRow(startRow);
style = row.getCell(2).getCellStyle();
ClearCheckErr cce = null;
for (int i = 0; i < list.size(); i++) {
cce = list.get(i);
if(cce!=null){
String stlFlag=cce.getStlFlag();
if("0".equals(stlFlag)){
stlFlag="初登记";
}else if("1".equals(stlFlag)){
stlFlag="需要结算";
}else{
stlFlag="无需结算";
}
String adjustFlag=cce.getAdjustFlag();
if("0".equals(adjustFlag)){
adjustFlag="初登记";
}else if("1".equals(adjustFlag)){
adjustFlag="需要调账";
}else{
adjustFlag="无需调账";
}
String status=cce.getStatus();
if("0".equals(status)){
status="初登记";
}else if("1".equals(status)){
status="一审完成";
}else if("2".equals(status)){
status="二审完成";
}else{
status="作废";
} row = sheet.createRow(startRow+i);
row.setHeight((short)(25 * 20)); POIUtils.createCell(row, (short) 0,i+1+"",style);
POIUtils.createCell(row, (short) 1,cce.getMerNo(),style);
POIUtils.createCell(row, (short) 2,cce.getMerName()==null||"".equals(cce.getMerName())?"":cce.getMerName(),style);
POIUtils.createCell(row, (short) 3,cce.getTermNo()==null||"".equals(cce.getTermNo())?"":cce.getTermNo(),style);
POIUtils.createCell(row, (short) 4,cce.getCardNo()==null||"".equals(cce.getCardNo())?"":cce.getCardNo(),style);
POIUtils.createCell(row, (short) 5,"0".equals(cce.getTranType())?"消费":"退货",style);
POIUtils.createCell(row, (short) 6,cce.getTranDate()==null||"".equals(cce.getTranDate())?"":cce.getTranDate(),style);
POIUtils.createCell(row, (short) 7,cce.getTranTime()==null||"".equals(cce.getTranTime())?"":cce.getTranTime(),style);
POIUtils.createCell(row, (short) 8,cce.getCoretranAmt()==null?"":cce.getCoretranAmt().toString(),style);
POIUtils.createCell(row, (short) 9,cce.getAcqtranAmt()==null?"":cce.getAcqtranAmt().toString(),style);
POIUtils.createCell(row, (short) 10,cce.getFee()==null?"":cce.getFee().toString(),style);
POIUtils.createCell(row, (short) 11,cce.getCheckTime(),style);
POIUtils.createCell(row, (short) 12,stlFlag,style);
POIUtils.createCell(row, (short) 13,adjustFlag,style);
POIUtils.createCell(row, (short) 14,"D".equals(cce.getDcFlag())?"借记":"贷记",style);
POIUtils.createCell(row, (short) 15,"0".equals(cce.getGenType())?"系统录入":"手工录入",style);
POIUtils.createCell(row, (short) 16,status,style);
POIUtils.createCell(row, (short) 17,cce.getCorebatNo()==null?"":cce.getCorebatNo().toString(),style);
POIUtils.createCell(row, (short) 18,cce.getCorejonlNo()==null?"":cce.getCorejonlNo().toString(),style);
POIUtils.createCell(row, (short) 19,cce.getCoreRrn()==null||"".equals(cce.getCoreRrn())?"":cce.getCoreRrn(),style);
POIUtils.createCell(row, (short) 20,cce.getAcqbatNo()==null?"":cce.getAcqbatNo().toString(),style);
POIUtils.createCell(row, (short) 21,cce.getAcqjonlNo()==null?"":cce.getAcqjonlNo().toString(),style);
POIUtils.createCell(row, (short) 22,cce.getAcqRrn()==null||"".equals(cce.getAcqRrn())?"":cce.getAcqRrn(),style);
POIUtils.createCell(row, (short) 23,cce.getComments()==null?"":cce.getComments().toString(),style);
POIUtils.createCell(row, (short) 24,cce.getComments1()==null?"":cce.getComments1().toString(),style);
POIUtils.createCell(row, (short) 25,cce.getComments2()==null?"":cce.getComments2().toString(),style);
}
} //设置合计交易金额、手续费金额和条数
row = sheet.createRow(list.size()+startRow);
row.setHeight((short)(27 * 20));
POIUtils.createCell(row, (short) 2, "合计 卡核心交易金额:"+coretranSumAmt+" 收单交易金额:"+acqtranSumAmt+" 交易手续费:"+sumFee,null);
/**************************** 输出流 *****************************************/
OutputStream os = resp.getOutputStream();// 取得输出流
String filename = POIUtils.encodeFileName(req, headName);
resp.setHeader("Content-disposition","attachment;filename=" + filename+ ".xls");
work.write(os);
if(in!=null){
in.close();
}
os.close();
}catch (Exception e) {
if (log.isDebugEnabled())
e.printStackTrace();
log.error("ClearCheckErrController.exportExcel()调用出现异常。");
} return null;
}
导出EXCEL(带数据)的更多相关文章
- PHP导出excel文件,第一步先实现PHP模板导出不带数据
今天继续研究PHP导出excel文件,把复杂的事情简单化,一步步实现功能,首先实现模板文件的导出,随后再实现写入数据后导出,最终实现功能,这是基本思路.中间可以加一步,先自己写入数据导出试试,随后再数 ...
- 基于C#语言MVC框架NPOI控件导出Excel表数据
控件bin文件下载地址:https://download.csdn.net/download/u012949335/10610726@{ ViewBag.Title = "dcxx" ...
- ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)
要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...
- MVC学习笔记---MVC导出excel(数据量大,非常耗时的,异步导出)
要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...
- java 导出Excel 大数据量,自己经验总结!
出处: http://lyjilu.iteye.com/ 分析导出实现代码,XLSX支持: /** * 生成<span style="white-space: normal; back ...
- java中使用poi导出excel表格数据并且可以手动修改导出路径
在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下
- java导出excel模板数据
Java导出excel数据模板,这里直接贴代码开发,流程性的走下去就是步骤: String[] colName=new String[]{"期间","科目代码" ...
- 基于C#语言MVC框架Aspose.Cells控件导出Excel表数据
控件bin文件下载地址:https://download.csdn.net/download/u012949335/10610726 @{ ViewBag.Title = "xx" ...
- POI 导出excel带小数点的数字格式显示不对解决方法
最近看到了一个问题就是java导出excel中带小数点的数字显示不对, 比如我想在excel中第一行显示: 3,000.0 但是在excle中导出的格式总是不带小数点 3000(非文本格式),而且也 ...
- java基础篇 -- 导出excel表格数据
本篇文章基于java把数据库中的数据以Excel的方式导出,欢迎各位大神吐槽: 1.基于maven jar包引入如下: <dependency> <groupId>net.so ...
随机推荐
- Git分支,合并,切换分支的使用
1.创建合并分支 在我们每次的提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD指针严格来说不是指向提交 ...
- 2019 牛客暑期多校 G subsequence 1 (dp+组合数)
题目:https://ac.nowcoder.com/acm/contest/885/G 题意:给你两个串,要求上面哪个串的子序列的值大于下面这个串的值的序列个数,不含前导零 思路:我们很容易就可以看 ...
- Nginx加载多个CPU核心,worker_cpu_affinity
配置Nginx多核CPU,worker_cpu_affinity使用方法和范例1. 2核CPU,开启2个进程 worker_processes 2;worker_cpu_affinity 01 10; ...
- mysql5.6配置详解
系统 4核 16G Centos6.5 x64 优化后测试结果如下 #mysqlslap #--concurrency=2 #--iterations=1 #--number-int-cols=10 ...
- windows环境下如何安装memcached教程
Memcached 是一个开源免费高性能的分布式内存对象缓存系统,能够加快网站访问速度和减轻数据库压力,本文向大家介绍下windows环境下如何安装memcached. 工具/原料 memcach ...
- Java Software Engineer Skill Map
# Java Software Engineer Skill Map## Basic### Core Java- Java The Complete Reference Ninth Edition.p ...
- yum安装apache
一.查询是否已经安装apache rpm -qa httpd 注:Apache在linux系统里的名字是httpd 如果有返回的信息,则会显示已经安装的软件.如果没有则不会显示其它的信息.如下图是 ...
- Vue环境搭建及第一个helloWorld
Vue环境搭建及第一个helloWorld 一.环境搭建 1.node.js环境安装配置 https://www.cnblogs.com/liuqiyun/p/8133904.html 或者 htt ...
- Eureka 系列(04)客户端源码分析
Eureka 系列(04)客户端源码分析 [TOC] 0. Spring Cloud 系列目录 - Eureka 篇 在上一篇 Eureka 系列(01)最简使用姿态 中对 Eureka 的简单用法做 ...
- Eureka 系列(02)Eureka 一致性协议
目录 Eureka 系列(02)Eureka 一致性协议 0. Spring Cloud 系列目录 - Eureka 篇 1. 服务发现方案对比 1.1 技术选型 1.2 数据模型 2. Eureka ...