赞
踩
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi</artifactId>
- <version>4.1.2</version>
- </dependency>
- <dependency>
- <groupId>cn.afterturn</groupId>
- <artifactId>easypoi-base</artifactId>
- <version>4.2.0</version>
- </dependency>
1.定义实体User类,实体类上有注解,注解属性: name 导出excel的表头 orderNum 字段在excel的顺序 replace 替换 将数字转为对应的含义
- public class User implements Serializable {
- private static final long serialVersionUID = -6909818297910280264L;
-
- @Excel(name = "用户id",orderNum = "0")
- private Integer userId;
-
- @Excel(name = "用户姓名",orderNum = "1")
- private String userName;
-
- @Excel(name = "用户年龄",orderNum = "2")
- private Integer age;
-
- @Excel(name = "用户地址",orderNum = "3")
- private String userAddress;
-
- @Excel(name = "性别", replace = {"男_10", "女_20"} ,orderNum = "4")
- private Integer sex;
-
- }

2.controller层代码 注意:方法的请求格式只能是get请求,post将失败
- @GetMapping("/exportOrderList")
- public String exportOrderList(HttpServletResponse response,HttpServletRequest request){
- List<User> exportList = getUserList();
- try {
- String excelName = "用户信息表";
- response.setHeader("content-Type","application/vnd.ms-excel");
- response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(excelName , "UTF-8") + ".xls");
- response.setCharacterEncoding("UTF-8");
- Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(null, excelName), User.class, exportList);
- workbook.write(response.getOutputStream());
- } catch (IOException e) {
- return "exportOrderList=====ERROR=====";
- }
-
- return null;
- }
-
- private List<User> getUserList(){
- List<User> resultList = new ArrayList<>();
- User user = new User();
- user.setUserId(1);
- user.setUserName("李玉刚");
- user.setAge(32);
- user.setUserAddress("新贵妃醉酒");
- user.setSex(20);
- User user1 = new User();
- user1.setUserId(2);
- user1.setUserName("刘德华");
- user1.setAge(59);
- user1.setUserAddress("冰雨");
- user1.setSex(10);
- resultList.add(user);
- resultList.add(user1);
- return resultList;
- }

3.导出截图
1.创建一个表头实体
- public class DynamicTablePo implements Serializable{
-
- private static final long serialVersionUID = 8991244829305414889L;
-
- //表头名字
- private String filedShowName;
-
- //表头key值和查询出来的数据的实体相对应
- private String filedCode;
-
- //表头顺序
- private Integer orderNum;
-
- //字段数据类型
- private Integer dataType;
- }

2.创建想要的表头集合(这里是实现动态表头的定义)
- private List<DynamicTablePo> getTalePoList() {
- List<DynamicTablePo> resultList = new ArrayList<>();
- DynamicTablePo tablePo = new DynamicTablePo();
- tablePo.setFiledShowName("用户名称");
- tablePo.setFiledCode("userName");
- tablePo.setOrderNum(1);
- tablePo.setDataType(0);
- DynamicTablePo tablePo1 = new DynamicTablePo();
- tablePo1.setFiledShowName("用户地址");
- tablePo1.setFiledCode("userAddress");
- tablePo1.setOrderNum(2);
- tablePo1.setDataType(0);
- resultList.add(tablePo);
- resultList.add(tablePo1);
- return resultList;
- }

3.controller层代码
- @GetMapping("/moveExport")
- public String moveExport(HttpServletResponse response,HttpServletRequest request){
-
- List<User> exportList = getUserList();
- List<DynamicTablePo> tablePoList = getTalePoList();
-
- List<ExcelExportEntity> beanList = new ArrayList<ExcelExportEntity>(tablePoList.size());
- for (DynamicTablePo tablePo : tablePoList){
- ExcelExportEntity entity = new ExcelExportEntity();
- entity.setName(tablePo.getFiledShowName());
- entity.setKey(tablePo.getFiledCode());
- entity.setOrderNum(tablePo.getOrderNum());
- if (tablePo.getDataType() == 1){//TODO 这块控制一下,是不是要写成数值型,默认
- entity.setType(BaseEntityTypeConstants.DOUBLE_TYPE);
- }
- beanList.add(entity);
- }
- try {
- String excelName = "用户信息表";
- ExportParams exportParams = new ExportParams(excelName, "sheet1");
- Workbook workbook = ExcelExportUtil.exportExcel(exportParams, beanList , exportList);
- response.setHeader("content-Type","application/vnd.ms-excel");
- response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(excelName + "导出表", "UTF-8") + ".xls");
- response.setCharacterEncoding("UTF-8");
- workbook.write(response.getOutputStream());
- workbook.close();
- } catch (FileNotFoundException e) {
- return "导出选中的单据 exportOrderList=====ERROR=====";
- } catch (IOException e) {
- return "导出选中的单据 exportOrderList=====ERROR=====";
- }
-
- return null;
- }

重点代码:ExcelExportUtil.exportExcel(exportParams, beanList , exportList);
beanList :动态表头集合
exportList:动态数据集合
4.导出截图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。