需要的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");
}
}

作者:那一抹大伤感
来源:CSDN
原文:https://blog.csdn.net/xpf_user/article/details/78180974
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/txwd9107/p/10849767.html

文件下载成excel相关推荐

  1. 怎么把PDF格式改成EXCEL

    有个PDF文件里面全是表格,想转换成EXCEL表格,方便后续计算,一开始本人是打算转换成WORD进行运算的,转换完成后发现表格都变成了纯数据,线条也被拆分了,后来朋友告诉了我一个PDF转EXCE的方法 ...

  2. 怎样把PDF换成EXCEL

    众所周知,现如今有很多可以把PDF文件转换成为EXCEL文件的方法,但是这其中大多数的方法转换出来后表格内容十分混乱,甚至因为识别率低而导致转换出来的文字乱码以及识别不清楚的现象,哪怎样把PDF换成E ...

  3. 怎样将PDF转成EXCEL

    EXCEL和PDF这两种文档大家应该都比较熟悉,EXCEL表格是使用于数据图表得整理,而PDF文件是用于扫描或者存档,但是这两者之间经常需要进行转换得,比如说经常需要将归档的PDF文件转换成EXCEL ...

  4. pdf转换成excel文件_将PDF文件转换为Excel

    pdf转换成excel文件 When I got back to my office after a recent vacation, there was an email from Una, abo ...

  5. 怎么把PDF转换成Excel表格?两分钟教会你如何转换

    如何将PDF文件转换成Excel表格的格式呢?大家在办公过程中还是会经常使用到PDF文件的,因为这种格式的文件表现出来特征非常稳定,因此我们很多时候下载或者是接收到的文件都是PDF文件,但是我们需要使 ...

  6. 如何把pdf转换成excel转换器免费使用

    现在网络上大部分的PDF转换器支持PDF转换成Excel格式的很普遍,支持pdf转换成excel转换器却很少.而把含有表格的PDF转换成Excel格式,却是很多用户急切需要的. 迅捷Excel转PDF ...

  7. PDF怎么转换成excel免费?快收藏这几个方法

    在我们日常处理的的工作文件中,PDF文件的数量是越来越高的,而且因为PDF文件比较方便观看,所以很多数据文件也都是PDF格式的,不过PDF文件是不可编辑的,所以在一定程度上还是有限制的,这样我们就不能 ...

  8. Word转换成excel的方法有哪些?

    Word文档中有些数据是需要通过excel表格进行表达出来的,那么我们有什么样的方法将Word转换成excel的?下面小编简单给大家介绍一下. 辅助工具:迅捷PDF在线转换器 步骤一:在有网的电脑上我 ...

  9. 报表如何批量导出成 excel 文件

    需求说明 报表展现后可以通过工具栏中的导出按钮将当前展现的报表导出成 excel 文件,但是在实际使用中通常会要求报表不需要展现,直接通过一些操作将报表导出成 excel 文件,并且往往会要求批量导出 ...

最新文章

  1. 关于正则表达式 \1 \2之类的问题
  2. 解决403跨域问题之——————JSONP
  3. c++ override final关键字
  4. Python使用数字与字符串的技巧
  5. 在两个静态HTML页面之间传递参数的一个方法
  6. 美术师关于自己的报酬与工作的看法
  7. 2011年数据库大会纪行
  8. redis 缓存 @class: 会有 $hibernateproxy_微信亿级在线点赞系统,用Redis如何实现?
  9. Node mysql mvc vue_net MVC +Vue.js+Element UI 笔记
  10. (day 23 - 中位数 投票法 )剑指 Offer 39. 数组中出现次数超过一半的数字
  11. f4小组专用3306mysql抓鸡工具_【技术】3306端口手动入侵之mysql写入启动项提权
  12. Linux学习基础一 【安装 目录 系统命令 常用vim操作】
  13. 计算机表格中格式隐藏了怎么办,excel表格第一列被隐藏起来了怎么办
  14. Android 添加GridView中图片的圆角样式
  15. idea git 颜色代表什么意思
  16. 从零开始做游戏 - 上上下下左右左右BABA
  17. kru生成树变种 poj3522 bzoj 1196
  18. Test meeting 11.23
  19. phpwind和discuz比较
  20. C# 设置文件默认打开程序

热门文章

  1. FormData 类型
  2. 小米诚意之作:骁龙8Gen1+IMX766+OIS+120Hz,已跌至两千元档
  3. Linux-查询登入用户信息
  4. java同步与死锁_Java入门——同步与死锁
  5. 修复WKWebView的白屏问题
  6. 基于python的游戏设计与实现-基于python的飞机大战小游戏毕业论文设计和代码
  7. Weblogic 线程的几种状态 - STUCK,ACTIVE,STANDBY - 你了解它们的含义吗
  8. 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法
  9. uniapp打包WGT背景图不显示问题
  10. 如何将一个对象中的List对象添加为子集,且父结构不存在重复数据