1:controller类
@GetMapping("/export")
public void export(Integer couponId, HttpServletResponse response) throws Exception {
ExcelWriter writer = null;
OutputStream outputStream = response.getOutputStream();
try {
//添加响应头信息
response.setHeader("Content-disposition", "attachment; filename=" + ""+ System.currentTimeMillis() +".xls");
response.setContentType("application/msexcel;charset=UTF-8");//设置类型
response.setHeader("Pragma", "No-cache");//设置头
response.setHeader("Cache-Control", "no-cache");//设置头
response.setDateHeader("Expires", 0);//设置日期头
//实例化 ExcelWriter
writer = new ExcelWriter(outputStream, ExcelTypeEnum.XLS, true);
//实例化表单
Sheet sheet = new Sheet(1, 0, LitemallCouponUser.class);
sheet.setSheetName("sheet1");
//获取数据(这个根据你实际情况获取到的数据)
List<LitemallCouponUser> couponUserList = couponUserService.queryAll2(couponId);
//输出
writer.write(couponUserList, sheet);
writer.finish();
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
response.getOutputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2:实体类
@Getter
@Setter
public class LitemallCouponUser extends BaseRowModel {
@ExcelIgnore
private Integer id;
@ExcelProperty(value = "用户id", index = 0)
@ColumnWidth(15)
private Integer userId;
@ExcelProperty(value = "优惠券id", index = 1)
@ColumnWidth(15)
private Integer couponId;
@ExcelProperty(value = "使用状态", index = 2, converter = StatusConverter.class)
@ColumnWidth(15)
private Short status;
@ExcelProperty(value = "使用时间", index = 3, converter = LocalDateTimeConverter.class)
@ColumnWidth(20)
private LocalDateTime usedTime;
@ExcelIgnore
private LocalDateTime startTime;
@ExcelIgnore
private LocalDateTime endTime;
@ExcelProperty(value = "订单id", index = 4)
@ColumnWidth(15)
private Integer orderId;
@ExcelIgnore
private Integer ordersId;
@ExcelProperty(value = "领取时间", index = 5, converter = LocalDateTimeConverter.class)
@ColumnWidth(20)
private LocalDateTime addTime;
@ExcelIgnore
private LocalDateTime updateTime;
@ExcelIgnore
private Boolean deleted;
3:自定义转换器
3.1 easyexcel自定义转换器(LocalDateTime)
package org.linlinjava.litemall.db.util.converter;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* easyexcel自定义转换器(LocalDateTime)
*/
public class LocalDateTimeConverter implements Converter<LocalDateTime> {
@Override
public Class<LocalDateTime> supportJavaTypeKey() {
return LocalDateTime.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public LocalDateTime convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
return LocalDateTime.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
@Override
public CellData<String> convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
return new CellData<>(value.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
}
3.2:easyexcel自定义转换器 (状态)
package org.linlinjava.litemall.db.util.converter;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
public class StatusConverter implements Converter<Short> {
@Override
public Class supportJavaTypeKey() {
return Short.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public Short convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
if(cellData.getStringValue().equals("未使用")) {
return 0;
}else if (cellData.getStringValue().equals("已使用")) {
return 1;
}else if (cellData.getStringValue().equals("已过期")) {
return 2;
}else {
return 3;
}
// return "男".equals(cellData.getStringValue()) ? 1 : 0;
}
@Override
public CellData convertToExcelData(Short value, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
System.out.println(value);
if(value == 0) {
return new CellData("未使用");
}else if(value == 1) {
return new CellData("已使用");
}else if(value == 2) {
return new CellData("已过期");
}else {
return new CellData("已下架");
}
// return new CellData(value.equals(1) ? "男" : "女");
}
}