欢迎访问生活随笔!

生活随笔

您现在的位置是:首页 > 形式科学 > 操作系统 > Windows

Windows

java导出大量excel数据(用Java导出各种风格的excel)

发布时间:2022-11-15Windows 电脑专家
我们使用hutool的工具类导出实体类,映射到excel。首先,我们创建一个实体类:@Data //,它实现了:1。获取和设置所有属性的方法;2.toString方法;3、哈希

  我们采用的hutool的工具类,对实体类和map进行的excel导出操作

  首先创建一个实体类:

  @Data // 实现了:1、所有属性的get和set方法;2、toString 方法;3、hashCode方法;4、equals方法

  @Builder // 建造者模式

  @NoArgsConstructor // 无参构造函数

  @AllArgsConstructor // 有参构造函数

  public class UserInfo {

  private String name;

  private Integer age;

  private String idCard;

  private String gender;

  private String birthday;

  }

  然后,我们以接口的形式进行调用

  @RestController

  @RequestMapping(value = '/excel')

  public class TestExcel {

  @GetMapping(value = '/export')

  public void excelExport(HttpServletResponse response) {

  // 以map的方式

  Map row1 = new LinkedHashMap();

  row1.put('姓名', '苹果');

  row1.put('颜色', '红/黄/绿');

  row1.put('口感', '酸甜');

  row1.put('产地', '全国');

  Map row2 = new LinkedHashMap();

  row2.put('姓名', '香蕉');

  row2.put('颜色', '黄');

  row2.put('口感', '甜');

  row2.put('产地', '南方');

  ArrayList rows_1 = CollUtil.newArrayList(row1,row2);

  UserInfo userInfo = new UserInfo();

  userInfo.setName('张三');

  userInfo.setAge(10);

  userInfo.setGender('男');

  userInfo.setIdCard('3013');

  List rows_2 = new ArrayList();

  rows_2.add(userInfo);

  // 通过工具类创建writer,默认创建xls格式

  ExcelWriter writer = ExcelUtil.getWriter();

  writer.setSheet('sheet1');

  writer.merge(3, '水果信息');

  // 一次性写出内容,使用默认样式,强制输出标题

  writer.write(rows_1, true);

  writer.setSheet('sheet2');

  writer.addHeaderAlias('name', '姓名');

  writer.addHeaderAlias('age', '年龄');

  writer.addHeaderAlias('idCard', '证件号');

  writer.addHeaderAlias('gender', '性别');

  writer.addHeaderAlias('birthday', '生日');

  writer.merge(4, '人员信息');

  writer.write(rows_2, true);

  //response为HttpServletResponse对象

  response.setContentType('application/vnd.ms-excel;charset=utf-8');

  //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码

  response.setHeader('Content-Disposition','attachment;filename=test.xls');

  ServletOutputStream out = null;

  try {

  out = response.getOutputStream();

  writer.flush(out, true);

  } catch(Exception e) {

  e.printStackTrace();

  } finally {

  // 关闭writer,释放内存

  writer.close();

  //此处记得关闭输出Servlet流

  IoUtil.close(out);

  }

  }

  }

  注意:我们第一个sheet用的map,第二个sheet用的实体类

  接下来,我们使用postman进行调用

  然后生成的excel如下: