List集合导出成Excel表格
来源:互联网 发布:淘宝订单清洗三次机会 编辑:程序博客网 时间:2024/06/16 23:26
需要的jar包:poi-3.14.jar
List集合导出成Excel表格
实体类
package job.util;/** * * @className Employee * @deprecated 导出的实体 * @author pengfei.xiong * @date 2017年10月9日 */public class Employee { private String name; private String clazz; private Integer year; private Integer month; private Integer day; private double salary; public Employee() { }; public Employee(String name, String clazz, Integer year, Integer month, Integer day, double salary) { super(); this.name = name; this.clazz = clazz; this.year = year; this.month = month; this.day = day; this.salary = salary; } /** * @return name */ public String getName() { return name; } /** * @return year */ public Integer getYear() { return year; } /** * @return month */ public Integer getMonth() { return month; } /** * @return day */ public Integer getDay() { return day; } /** * @return salary */ public double getSalary() { return salary; } /** * @param name * set name */ public void setName(String name) { this.name = name; } /** * @param year * set year */ public void setYear(Integer year) { this.year = year; } /** * @param month * set month */ public void setMonth(Integer month) { this.month = month; } /** * @param day * set day */ public void setDay(Integer day) { this.day = day; } /** * @param salary * set salary */ public void setSalary(double salary) { this.salary = salary; } /** * @return clazz */ public String getClazz() { return clazz; } /** * @param clazz * set clazz */ public void setClazz(String clazz) { this.clazz = clazz; } @Override public String toString() { return "Employee [name=" + name + ", clazz=" + clazz + ", year=" + year + ", month=" + month + ", day=" + day + ", salary=" + salary + "]"; }}
工具类
package job.util;import java.io.FileOutputStream;import java.io.OutputStream;import java.lang.reflect.Method;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.Map;import java.util.UUID;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.util.CellRangeAddress;/** * * @className ExportExcel * @deprecated List集合导出成Excel表格工具类 * @author pengfei.xiong * @date 2017年10月9日 */public final class ExportExcel { /*** * 构造方法 */ private ExportExcel() { } /*** * 工作簿 */ private static HSSFWorkbook workbook; /*** * sheet */ private static HSSFSheet sheet; /*** * 标题行开始位置 */ private static final int TITLE_START_POSITION = 0; /*** * 时间行开始位置 */ private static final int DATEHEAD_START_POSITION = 1; /*** * 表头行开始位置 */ private static final int HEAD_START_POSITION = 2; /*** * 文本行开始位置 */ private static final int CONTENT_START_POSITION = 3; /** * * @param dataList * 对象集合 * @param titleMap * 表头信息(对象属性名称->要显示的标题值)[按顺序添加] * @param sheetName * sheet名称和表头值 */ public static void excelExport(List<?> dataList, Map<String, String> titleMap, String sheetName) { // 初始化workbook initHSSFWorkbook(sheetName); // 标题行 createTitleRow(titleMap, sheetName); // 时间行 createDateHeadRow(titleMap); // 表头行 createHeadRow(titleMap); // 文本行 createContentRow(dataList, titleMap); //设置自动伸缩 //autoSizeColumn(titleMap.size()); // 写入处理结果 try { //生成UUID文件名称 //UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。 UUID uuid = UUID.randomUUID(); String filedisplay = uuid+".xls"; //如果web项目,1、设置下载框的弹出(设置response相关参数);2、通过httpservletresponse.getOutputStream()获取 OutputStream out = new FileOutputStream("D:\\" + filedisplay); workbook.write(out); out.close(); } catch (Exception e) { e.printStackTrace(); } } /*** * * @param sheetName * sheetName */ private static void initHSSFWorkbook(String sheetName) { workbook = new HSSFWorkbook(); sheet = workbook.createSheet(sheetName); } /** * 生成标题(第零行创建) * @param titleMap 对象属性名称->表头显示名称 * @param sheetName sheet名称 */ private static void createTitleRow(Map<String, String> titleMap, String sheetName) { CellRangeAddress titleRange = new CellRangeAddress(0, 0, 0, titleMap.size() - 1); sheet.addMergedRegion(titleRange); HSSFRow titleRow = sheet.createRow(TITLE_START_POSITION); HSSFCell titleCell = titleRow.createCell(0); titleCell.setCellValue(sheetName); } /** * 创建时间行(第一行创建) * @param titleMap 对象属性名称->表头显示名称 */ private static void createDateHeadRow(Map<String, String> titleMap) { CellRangeAddress dateRange = new CellRangeAddress(1, 1, 0, titleMap.size() - 1); sheet.addMergedRegion(dateRange); HSSFRow dateRow = sheet.createRow(DATEHEAD_START_POSITION); HSSFCell dateCell = dateRow.createCell(0); dateCell.setCellValue(new SimpleDateFormat("yyyy年MM月dd日").format(new Date())); } /** * 创建表头行(第二行创建) * @param titleMap 对象属性名称->表头显示名称 */ private static void createHeadRow(Map<String, String> titleMap) { // 第1行创建 HSSFRow headRow = sheet.createRow(HEAD_START_POSITION); int i = 0; for (String entry : titleMap.keySet()) { HSSFCell headCell = headRow.createCell(i); headCell.setCellValue(titleMap.get(entry)); i++; } } /** * * @param dataList 对象数据集合 * @param titleMap 表头信息 */ private static void createContentRow(List<?> dataList, Map<String, String> titleMap) { try { int i=0; for (Object obj : dataList) { HSSFRow textRow = sheet.createRow(CONTENT_START_POSITION + i); int j = 0; for (String entry : titleMap.keySet()) { String method = "get" + entry.substring(0, 1).toUpperCase() + entry.substring(1); Method m = obj.getClass().getMethod(method, null); String value = m.invoke(obj, null).toString(); HSSFCell textcell = textRow.createCell(j); textcell.setCellValue(value); j++; } i++; } } catch (Exception e) { e.printStackTrace(); } } /** * 自动伸缩列(如非必要,请勿打开此方法,耗内存) * @param size 列数 */ private static void autoSizeColumn(Integer size) { for (int j = 0; j < size; j++) { sheet.autoSizeColumn(j); } }}
测试类
package job.util;import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;public class Test { public static void main(String[] args) { /**模拟数据开始*/ List<Employee> staffs = new ArrayList<Employee>(); staffs.add(new Employee("test01", "一组", 2017, 9, 20, 20000)); staffs.add(new Employee("test02", "一组", 2017, 9, 20, 20000)); staffs.add(new Employee("test03", "一组", 2017, 9, 20, 20000)); staffs.add(new Employee("test04", "一组", 2017, 9, 20, 20000)); staffs.add(new Employee("test05", "一组", 2017, 9, 20, 20000)); Map<String,String> titleMap = new LinkedHashMap<String,String>(); titleMap.put("name", "姓名"); titleMap.put("clazz", "组号"); titleMap.put("year", "年份"); titleMap.put("month", "月份"); titleMap.put("day", "天"); titleMap.put("salary", "薪资"); String sheetName = "信息导出"; /**模拟数据结束*/ System.out.println("start导出"); long start = System.currentTimeMillis(); ExportExcel.excelExport(staffs, titleMap, sheetName); long end = System.currentTimeMillis(); System.out.println("end导出"); System.out.println("耗时:"+(end-start)+"ms"); } }
阅读全文
1 0
- List集合导出成Excel表格
- java List集合转Excel表格文档
- list集合导出Excel文件(一)
- list集合导出Excel文件(二)
- ASP.Net 后台执行导出Excel list集合 有跨行合并
- 页面表格原样导出成Excel
- php动态导出数据成Excel表格
- javascript 将表格导出成Excel
- javascript表格导出Excel
- (表格)导出excel
- 【Java】导出excel表格
- JAVA 导出 excel 表格
- C#导出EXCEL表格
- Java导出excel表格
- 【Java】导出excel表格
- java 导出excel表格
- 导出Excel表格
- C#导出excel表格
- SpringBoot 使用@Aspect进行日志管理(基于反射代理模式+动态修改注解Log)
- XAMPP下mysql插入数据中文乱码问题
- android 浏览器 该网站的安全证书有问题
- [随笔] Mac版本SercureCRT安装及破解
- spring配置文件的启用
- List集合导出成Excel表格
- git diff 配置 meld diff
- mysql max 与 where 间的执行问题
- 使用eval("("+data+")")转json格式
- 页面请求包含中文的文件及URL--linux服务器
- linux命令--rm
- 今天被一个架构师面了
- 共享单车系统又被黑客盯上,多账户押金被盗
- 图片自适应和footer的定位方式