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页的需求, 使用本工具类时 ...
随机推荐
- eclipse中文字体大小修改
貌似有不少人苦恼eclipse中文字体大小修改问题,默认的eclipse中文字体很小,和英文字体大小完全不在一个调子上,因为默认的eclipse juno中英文字体是Consolas,字体大小是10, ...
- JXOI2018简要题解
JXOI2018简要题解 T1 排序问题 题意 九条可怜是一个热爱思考的女孩子. 九条可怜最近正在研究各种排序的性质,她发现了一种很有趣的排序方法: Gobo sort ! Gobo sort 的算法 ...
- 蓝牙 link timeout分析
蓝牙主机和蓝牙设备建立连接之后,会在l2cap 层面上建立相应的channel,这些channel 基本上是用于各种不同的profile 或者protocol 进行通信用的. 当相应的profile或 ...
- Mybatis教程-实战看这一篇就够了
转自:https://blog.csdn.net/hellozpc/article/details/80878563 1.从JDBC谈起 1.1.使用IDEA创建maven工程 1.2.引入mysql ...
- 从统计局采集最新的省市区县数据,纯js
本文更新(移步查阅): 19-04-15 新采集了2018的省市区三级坐标和行政区域边界 19-03-22 采集了2018的城市数据 18-11-28 采集了2017的城市数据 数据下载 GitHub ...
- Jmeter(三十二)_搭建本地接口自动化环境
我们在学习接口自动化的时候,最理想的状态是在公司有项目可以操作.大部分时候我们并没有可以练习的项目,因此练习接口无从谈起,只能找一些开放的api来练一练,但是这样并不能提高我们的技术.因此我们需要搭建 ...
- 基于HTML5 Canvas WebGL制作分离摩托车
工业方面制作图表,制作模型方面运用到 3d 模型是非常多的,在一个大的环境中,构建无数个相同的或者不同的模型,构建起来对于程序员来说也是一件相当头疼的事情,我们利用 HT 帮大家解决了很大的难题,无数 ...
- Nginx报错: "Too many open files accept" 和 "could not build the server_names_hash"
一.访问Nginx时,报错:"accept() failed (24: Too many open files)"原因时:nginx的连接数超过了系统设定的最大值造成的. 处理办法 ...
- 熟记这些git命令,你就是大神
1.git log 查看 提交历史 默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面 2.git log -p -2 常用 -p 选项展开显示每次提交的内容差异 ...
- individual reading task ---12061183 叶露婷
Different people deserve different tasks; Once team roles are settled, there comes along a lot of ot ...