1.导入依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.14</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
3.定义实体
String excelName = "订单详情表";
//获取需要转出的excel表头的map字段
LinkedHashMap<String, String> fieldMap = new LinkedHashMap<>();
fieldMap.put("id","编号");
fieldMap.put("link_man","姓名");
fieldMap.put("amount_real","价格");
fieldMap.put("date_add","日期");
fieldMap.put("status_str","订单状态");
fieldMap.put("mobie","收货电话");
fieldMap.put("address","地址");
fieldMap.put("detailValue","订单详情");
注:@Data是lombok注解,可以自动创建get,set方法和构造方法,具体可参考网上lombok详细适用方法。如果没有引入,可以自己创建get,set方法。
package org.emall.website.entity;
import lombok.Data;
import org.emall.website.anno.ExportEntityMap;
import java.math.BigInteger;
@Data
public class ExportDto {
private BigInteger id;
private String order_number;
@ExportEntityMap(CnName="价格",EnName="amount_real")
private String amount_real;
@ExportEntityMap(CnName="日期",EnName="date_add")
private String date_add;
@ExportEntityMap(CnName="订单状态",EnName="status_str")
private String status_str;
@ExportEntityMap(CnName="姓名",EnName="link_man")
private String link_man;
@ExportEntityMap(CnName="收货电话",EnName="mobie")
private String mobie;
@ExportEntityMap(CnName="地址",EnName="address")
private String address;
@ExportEntityMap(CnName="订单详情",EnName="detailValue")
private String detailValue;
}
4.创建导出工具类
其中主要关注Export方法,包括以下几个知识点:
设置文件名
设置文件格式
创建workBook,对应一个excel文件
在workbook中创建一个sheet,对应excel中的sheet
设置边距,页眉,页脚
设置打印方向,缩放,纸张大小
创建单元格,设置表头和表头居中
设置居中和字体
自定义注解操作
文件输出
其中最重要的是对自定义注解的操作:
package org.emall.website.util;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.Footer;
import org.apache.poi.ss.usermodel.Header;
import org.emall.website.anno.ExportEntityMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletResponse