使用easyexcel快速导出xlsx表格(简洁、高效、易懂)

Easyexcel是一款非常好用的POI框架,是为了让开发者快速的实现excel,word,pdf的导入导出,基于Apache poi基础上的一个工具包。

  • 基于注解的导入导出,修改注解就可以修改Excel
  • 支持常用的样式自定义
  • 基于map可以灵活定义的表头字段
  • 支持一对多的导出,导入
  • 支持模板的导出,一些常见的标签,自定义标签
  • 支持HTML/Excel转换
  • 支持word的导出,支持图片,Excel

    目  录

一、引入依赖

二、在实体类中添加注解

三、controller层增加导出接口

四、在serviceImpl层编写导出表格方法

五、访问接口,下载表格



一、引入依赖


        
            com.alibaba
            easyexcel
            3.1.1
        

二、在实体类中添加注解

@Data
@HeadRowHeight(30)  //表头行高
@ContentRowHeight(15)  //内容行高
@ColumnWidth(18)  //列宽
@ContentFontStyle(fontHeightInPoints = (short) 12) //字体大小
@ApiModel(value = "ExportEntity", description = "ExportEntity")
public class ExportEntity {

  /** id */
  @ApiModelProperty(value = "id")
  @ExcelProperty("id")
  private Long id;
  /** 名称 */
  @ApiModelProperty(value = "名称")
  @ExcelProperty("名称")
  private String name;
  /** 年龄 */
  @ApiModelProperty(value = "年龄")
  @ExcelProperty("年龄")
  private Integer age;
  /** 性别 */
  @ApiModelProperty(value = "性别")
  @ExcelIgnore
  private String sex;
}

默认所有字段都会和excel去匹配,使用@ExcelIgnore注解会忽略该字段。

@ExcelProperty:指定当前字段对应 excel 中的那一列。可以根据名字或者Index去匹配,默认第一个字段就是index=0,以此类推。⚠️要么全部不写,要么全部用index,要么全部用名字去匹配,切勿混合使用。

其他表格样式注解:

@HeadRowHeight(30)  表头行高
@ContentRowHeight(15)  //内容行高
@ColumnWidth(18)  //列宽
@ContentFontStyle(fontHeightInPoints = (short) 12)  //字体大小

三、controller层增加导出接口

  @GetMapping("/export")
  public void Export(HttpServletResponse response) {
	  service.export(response);
  }

四、在serviceImpl层编写导出表格方法

  @Override
  public void export(HttpServletResponse response) {
	  List list = new ArrayList<>();
        for (int i = 1; i <= 3; i++) {
            Export export = new Export(i,"张三","20");
            list.add(export);
        }
	  try {
		  //HttpServletResponse消息头参数设置
		  response.setCharacterEncoding("UTF-8");
		  response.setHeader("Content-Transfer-Encoding", "binary");
		  response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
		  response.setHeader("Pragma", "public");
		  response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8");
		  String fileName = "导出列表"+ ".xlsx";
		  fileName = new String(fileName.getBytes(), "ISO-8859-1");
		  response.setHeader("Content-Disposition", "attachment;filename=" + fileName );
		  EasyExcel.write(response.getOutputStream(), Export.class)
			  .autoCloseStream(Boolean.FALSE)
			  .sheet("导出列表")
			  .doWrite(list);
	  } catch (Exception e) {
		  e.printStackTrace();
	  }
  }

五、访问接口,下载表格

你可能感兴趣的:(java,servlet,开发语言)