SSM poi通过模板 反射导出excel

1 import java.lang.reflect.Field;
2 import java.lang.reflect.Method;
3 import java.util.Iterator;
4 import java.util.List;
5
6 import org.apache.poi.hssf.usermodel.HSSFCell;
7 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
8 import org.apache.poi.hssf.usermodel.HSSFRow;
9 import org.apache.poi.hssf.usermodel.HSSFSheet;
10 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
11
12 /**
13 * Excel通用工具类
14 * @param sheetName 表格名字
15 * @param headers 表头
16 * @param columns 列(对象属性名)对应表头
17 * @param lists 数据源
18 */
19 public class ExcelUtil<T> {
20 public HSSFWorkbook export(String sheetName, String[] headers, String[] columns, List<T> lists) throws Exception {
21 HSSFWorkbook wb = new HSSFWorkbook();
22 HSSFSheet sheet = wb.createSheet(sheetName);
23 sheet.setDefaultColumnWidth(11);
24 HSSFCellStyle style = wb.createCellStyle();
25 HSSFRow row = sheet.createRow(0);
26 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
27 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
28 for (int i = 0; i < headers.length; i++) {
29 HSSFCell headerCell = row.createCell(i);
30 headerCell.setCellValue(headers[i]);
31 headerCell.setCellStyle(style);
32 }
33 Iterator<T> it = lists.iterator();
34 int rowIndex = 0;
35 while (it.hasNext()) {
36 rowIndex++;
37 row = sheet.createRow(rowIndex);
38 T t = it.next();
39 Field[] fields = t.getClass().getDeclaredFields();
40 for (int i = 0; i < fields.length; i++) {
41 Field field = fields[i];
42 String fieldName = field.getName();
43 for (int j = 0; j < columns.length; j++) {
44 if (fieldName.equals(columns[j])) {
45 String getMethodName ="get"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
46 Class<? extends Object> cls = t.getClass();
47 Method getMethod = cls.getMethod(getMethodName, new Class[] {});
48 Object val = getMethod.invoke(t, new Object[] {});
49 String textVal = null;
50 if (null != val) {
51 textVal = val.toString();
52 } else {
53 textVal = null;
54 }
55 HSSFCell hssfCell=row.createCell(j);
56 hssfCell.setCellValue(textVal);
57 hssfCell.setCellStyle(style);
58 }
59 }
60 }
61 }
62 return wb;
63 }
64 }


1 Server层
2
3 /**
4 * 导出数据
5 * @throws Exception
6 */
7 public HSSFWorkbook outputExcel() throws Exception {
8 List<Distribution> lists = mapper.selectByExample(new DistributionExample());
9 String sheetName = "债券分销表";
10 String[] headers = {"指令日期","组合代码","组合名字","业务类型","缴款金额","缴款日期",
11 "O32状态","是否加急","出款状态","主承状态","交收状态"}; //表头
12 String[] columns = {"instructionDate","compositeCode","combinationName","interestType",
13 "paymentAmount","paymentDate","o32Status","urgentStatus","cashFlowStatus",
14 "underwritingStatus","settlementState"}; //bean 属性名 需对应表头
15 ExcelUtil<Distribution> excelUtil = new ExcelUtil<Distribution>();
16 HSSFWorkbook wb=excelUtil.export(sheetName, headers, columns, lists);
17 //FileOutputStream fos= new FileOutputStream("E://dis.xls");
18 //wb.write(fos);
19 return wb;
20 }
21


1 @RequestMapping(produces="application/vnd.ms-excel;charset=UTF-8",value="qwangxiao.com /downloadExcel",method = RequestMethod.GET)
2 public void downloadExcel(HttpServletResponse response){
3 response.addHeader("Content-Disposition","attachment; filename=\"债券分销列表.xls\"" );
4 HSSFWorkbook wk=null;
5 OutputStream oStream=null;
6 try {
7 oStream = response.getOutputStream();
8 wk = distributionService.outputExcel();
9 wk.write(oStream);
10 }catch (Exception e) {
11 e.printStackTrace();
12 logger.info("导出Excel表格出现异常"+e);
13 }finally {
14 if(oStream!=null){
15 try {
16 oStream.close();
17 } catch (IOException e) {
18 e.printStackTrace();
19 }
20 }
21 }
22 }

SSM poi通过模板 反射导出excel的更多相关文章
- vue Excel导入,下载Excel模板,导出Excel
vue Excel导入,下载Excel模板,导出Excel vue Excel导入,下载Excel模板 <template> <div style="display: ...
- 使用POI插件,提取导出excel的工具类
在网站的不同的模块都需要使用到导入导出excel的功能,我们就需要写一个通用的工具类ExcelUtil. 我的思路:首先,导入和导出的Excel的文件格式固定:主标题,二级标题,数据行(姑且就这么叫) ...
- 反射导出 Excel
/// <summary> /// List 数据导出Excel /// </summary> /// <param name="list">数 ...
- 【poi】解决java导出excel 海量数据内存溢出问题
转自百度经验:http://jingyan.baidu.com/article/4853e1e5202c331909f72627.html 那里排版忒恶心,转来这里. 由于项目中有导出海量数据的需求, ...
- poi操作oracle数据库导出excel文件2
package com.test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFound ...
- 尝试做一个.NET模板填充导出Excel工具
园友好,最近晚辈延续上篇后尝试进阶做成Excel模板填充数据生成工具 MiniExcel Template. 主要特点 同样以Stream流.延迟查询避免全部数据载入内存情况,做到1GB内存降低到只需 ...
- poi操作oracle数据库导出excel文件
HSSFWorkbook workBook = new HSSFWorkbook();// 创建 一个excel文档对象 HSSFSheet sheet = workBook.createSheet( ...
- 反射导出excel案例
1.代码案例: protected void btnExportExcel_Click(object sender, EventArgs e) { SetSearchValue(); Dictiona ...
- 根据模板导出Excel报表并生成多个Sheet页
因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为 根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时 ...
随机推荐
- url 传递中文参数乱码问题的终极解决方法。
估计很多人在做web开发的时候,都会碰到过url传递中文参数,有时候会出现乱码的问题,但有些项目或者环境,又不会有问题.当遇到乱码的时候,上网找了很多解决方案,比如: 页面设置它的编码方式,改成utf ...
- JVM调优——之CMS 常见参数解析
最近在学习使用CMS这个GC,这里记录下常用的参数. 1. UseCMSCompactAtFullCollection 与 CMSFullGCsBeforeCompaction 有一点需要注意的是:C ...
- Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
问题描述 今天写jsp的时候想用JSTL的一些标签,但是引用的时候碰到这个问题. 解决办法 一.看是否引用jstl.jar包,如果没有,则可以下载相应版本的jstr.jar包,并放入WEB-INF的l ...
- AT3611 Tree MST
题面 题解 考虑最小化\(dis(x, y)\) 这里需要对一种奇怪的最小生成树算法:Boruvka算法有深刻的理解. 考虑该算法的执行过程,我们可以考虑进行点分治,每次找到离分治重心最近的点,然后将 ...
- 欧拉函数(小于或等于n的数中与n互质的数的数目)&& 欧拉函数线性筛法
[欧拉函数] 在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler’s totient function.φ函数.欧拉商数等. 例如φ( ...
- ARM-GPIO
操作GPIO有三种方法: 调用库函数读取IO的输入电平:uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_t GPIO_pin): 操作寄 ...
- Spring RPC 入门学习(3)-获取Student对象
Spring RPC传递对象. 1. 新建RPC接口:StudentInterface.java package com.cvicse.ump.rpc.interfaceDefine; import ...
- 对MSF八个原则的思考
第一个原则,也是MSF中最基础的一个原则,推动信息共享与沟通.这个原则的一个特点是,对于团队成员的所有工作,都会被记录下来,包括走了弯路的.出现bug但已调试解决的部分.对于新加入团队的成员或者以前没 ...
- Rop框架学习笔记
1. 提供了开发服务平台的解决方案:比如应用认证.会话管理.安全控制.错误模型.版本管理.超时限制 2. 启动:RopServlet截获http请求 配置: <servlet> < ...
- android 活动的生命周期
掌握活动的生命周期非常重要,因为一个正常的android应用,会有很多的活动,如何在这些活动之间进行切换.数据的交互等,就经常会用到活动的生命周期这一块的知识.可以说,只要掌握了活动的生命周期,才能更 ...