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页的需求, 使用本工具类时 ...
随机推荐
- 4《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—目录
我们已经学习过许多处理文件的Unix工具,现在是时候来学习目录了,也就是文件夹(图20).正如我们所见,许多在文件中的开发思想也适用于目录,但同样也有许多区别.
- es5中for...in 和es6中 for..of遍历
//定义一个数组 var arr=['A','B','C']; //定义一个对象 var obj={name:'张三',age:20} // for..in 遍历数组 得到索引 for(var x i ...
- [Oracle]如何取Control File 的Dump
]如何取Control File 的Dump: SQL> alter session set events 'immediate trace name controlf level 3';SQL ...
- C# 爬虫 正则、NSoup、HtmlAgilityPack、Jumony四种方式抓取小说
心血来潮,想爬点小说.通过百度选择了个小说网站,随便找了一本小说http://www.23us.so/files/article/html/13/13655/index.html. 1.分析html规 ...
- 【下一代核心技术DevOps】:(三)私有代码库阿里云Git使用
1. 引言 使用DevOps肯定离不开和代码的集成.所以要想跑通整套流程,代码库的选型也是非常重要的.否则无法实现持续集成.目前比较常用的代码管理有SVN和GIt 如果还使用SVN的,建议尽早迁移到G ...
- 原创超清的 Webpack2 视频教程
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...
- react/React Native 在 import 导入时,有的带花括号{},有的不带原理解析
在使用import引用模块时,如何正确使用{} 例如:有两个文件,home.js.user.js 一:不使用{}: 当需要在home.js中引入user.js的时候 //home.js 文件中impo ...
- 个人阅读作业2:结合《No Silver Bullet》谈谈我在软件开发过程的遇到的困难与体会
英文捉急,只能挑一段看得比较懂的,而且正好和我们现在编程任务联系比较紧密的内容来谈一谈体会. 在<No Silver Bullet>中,作者描述了造成软件本质性困难(essence)的四个 ...
- 12.10 Daily Scrum
各种大作业,进度会放缓一些. Today's Task Tomorrow's Task 丁辛 完善餐厅列表,显示距离. 实现和菜谱相关的餐厅列表. 邓亚梅 ...
- 读书笔记(chapter3)
进程管理 3.1进程 1.进程:进程就是处于执行期的程序,实际上,进程就是正在执行的程序代码的实时结果: 2.执行线程,简称线程,是进程中活动的对象(每个线程拥有独立的程序计数器.进程栈.和一组进程寄 ...