导出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 ...
随机推荐
- Spark核心原理初探
一.运行架构概览 Spark架构是主从模型,分为两层,一层管理集群资源,另一层管理具体的作业,两层是解耦的.第一层可以使用yarn等实现. Master是管理者进程,Worker是被管理者进程,每个W ...
- Delphi ini文件结构简介
一.INI文件的结构:; 注释[小节名]关键字=值 INI文件允许有多个小节,每个小节又允许有多个关键字, “=”后面是该关键字的值. 值的类型有三种:字符串.整型数值和布尔值.其中字符串存贮在INI ...
- shell脚本编程运算
一算术运算 bash中的算术运算:help let+, -, *, /, %取模(取余), **(乘方)实现算术运算:(1) let var=算术表达式(2) var=$[算术表达式](3) var= ...
- qt学习 (五) 登陆界面之连接按钮
登陆步骤是比对输入的账号密码与数据库中的表项目是否一致 一样, 跳出mainwidget对话框 不一样,跳出消息错误框 今天就是要进去, 因为进去以后是widget的窗口,所以把用来核对消息的数据库 ...
- JavaScript 的 API设计原则
一.接口的流畅性 好的接口是流畅易懂的,他主要体现如下几个方面: 1.简单 操作某个元素的css属性,下面是原生的方法: document.querySelectorAll('#id').style. ...
- mysql中int的长度与值的问题
我们在数据库中设置一个int类型,设置好长度,然后会发现并没有受到长度的限制,这是因为,int值的范围和这个长度根本没有关系. int的存储大小是4个字节(B), 计算机存储单位的换算: 1B=8b ...
- js事件---同一个事件实现全选与反选功能
背景: 点击头部按钮,实现全选与反选功能 1.绑定事件,把当前勾选状态传递给方法 $event <el-checkbox v-model="ModelCheckAll" cl ...
- [CSP-S模拟测试]:简单的玄学(数学)
题目描述 有$m$个在$[0,2^n)$内均匀随机取值的整型变量,球至少有两个变量取值相同的概率.为了避免精度误差,假设你的答案可以表示成$\frac{a}{b}$的形式,(其中$(a,b)=1$), ...
- symantec SMG 抓包
1.使用putty连接SMG,先用admin账号登陆 执行set-support , 设置一个密码. 2.重新打开一个putty连接SMG,使用support账号登陆.用我们刚才设置的密码. 3.开 ...
- python re模块常用的正则表达式
'.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r&qu ...