/*
* 导出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(带数据)的更多相关文章

  1. PHP导出excel文件,第一步先实现PHP模板导出不带数据

    今天继续研究PHP导出excel文件,把复杂的事情简单化,一步步实现功能,首先实现模板文件的导出,随后再实现写入数据后导出,最终实现功能,这是基本思路.中间可以加一步,先自己写入数据导出试试,随后再数 ...

  2. 基于C#语言MVC框架NPOI控件导出Excel表数据

    控件bin文件下载地址:https://download.csdn.net/download/u012949335/10610726@{ ViewBag.Title = "dcxx" ...

  3. ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)

    要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...

  4. MVC学习笔记---MVC导出excel(数据量大,非常耗时的,异步导出)

    要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...

  5. java 导出Excel 大数据量,自己经验总结!

    出处: http://lyjilu.iteye.com/ 分析导出实现代码,XLSX支持: /** * 生成<span style="white-space: normal; back ...

  6. java中使用poi导出excel表格数据并且可以手动修改导出路径

    在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下

  7. java导出excel模板数据

    Java导出excel数据模板,这里直接贴代码开发,流程性的走下去就是步骤: String[] colName=new String[]{"期间","科目代码" ...

  8. 基于C#语言MVC框架Aspose.Cells控件导出Excel表数据

    控件bin文件下载地址:https://download.csdn.net/download/u012949335/10610726 @{ ViewBag.Title = "xx" ...

  9. POI 导出excel带小数点的数字格式显示不对解决方法

    最近看到了一个问题就是java导出excel中带小数点的数字显示不对, 比如我想在excel中第一行显示:  3,000.0 但是在excle中导出的格式总是不带小数点 3000(非文本格式),而且也 ...

  10. java基础篇 -- 导出excel表格数据

    本篇文章基于java把数据库中的数据以Excel的方式导出,欢迎各位大神吐槽: 1.基于maven jar包引入如下: <dependency> <groupId>net.so ...

随机推荐

  1. proxy-target-class="false"与proxy-target-class="true"区别

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484063.html <aop:aspectj-autoproxy proxy-target- ...

  2. 【leetcode】988. Smallest String Starting From Leaf

    题目如下: Given the root of a binary tree, each node has a value from 0 to 25representing the letters 'a ...

  3. hdu 3060 Area2 (计算几何模板)

    Problem Description 小白最近又被空军特招为飞行员,参与一项实战演习.演习的内容还是轰炸某个岛屿(这次的岛屿很大,很大很大很大,大到炸弹怎么扔都能完全在岛屿上引爆),看来小白确实是飞 ...

  4. IP地址的定义和划分

    IP地址分类:                IP地址根据首首字节开始位可以分为5大类:             分类        首字节开始位         首字节数字范围           ...

  5. layui多图上传加隐藏域

    我的情况是,通过layui上传图片调用后端,后端将图片上传后返回图片路径,上传成功后将图片在页面显示出来(避免用户网速不稳定,图片其实还没上传成功就进行下一步操作),然后同步每个图片增加隐藏域,最终表 ...

  6. 【PowerOJ1740&网络流24题】圆桌聚餐(最大流)

    题意: 来自n个不同国家的代表开会,每个国家代表数为ci 会场有m张圆桌,每张桌子可容纳mi人 不希望有同一个国家的代表在同一张桌子上就餐 设计一个合法方案 (n,m<=300) 思路:最大流, ...

  7. python selenium模拟登陆163邮箱。

    selenium是可以模拟浏览器操作. 有些爬虫是异步加载的,通过爬取网页源码是得不到需要的内容.所以可以模拟浏览器去登陆该网站进行爬取操作. 需要安装selenium通过pip install xx ...

  8. (10)C++ 使用类

    一.运算符重载 1. #include<iostream> using namespace std; class Sum { int add; public: Sum(int add) { ...

  9. MySQL高级学习笔记(七):MySql主从复制

    文章目录 复制的基本原理 slave会从master读取binlog来进行数据同步 三步骤+原理图 复制的基本原则 复制的最大问题 一主一从常见配置 mysql版本一致且后台以服务运行(双方能够pin ...

  10. 16. Django基础数据访问

    如果我们想使用Django对数据库进行访问,我们可以使用django自带的shell. 进入blog目录,打开cmd命令窗口,输入python manage.py shell,如下图所示: 插入数据 ...