转换器LocalDateStringConverter
package com.javasm.sales.common; 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; /** * @Author:Zxb * @Version:1.0 * @Date:2023/3/28-21:35 * @Since:jdk1.8 * @Description: */ /** * 自定义LocalDateStringConverter * 用于解决使用easyexcel导出表格时候,默认不支持LocalDateTime日期格式 * * 在需要的属性上添加注解 @ExcelProperty(value = "入职时间", converter = LocalDateStringConverter.class) */ public class LocalDateStringConverter implements Converter<LocalDateTime> { @Override public Class supportJavaTypeKey() { return LocalDateTime.class; } @Override public CellDataTypeEnum supportExcelTypeKey() { return CellDataTypeEnum.STRING; } @Override public LocalDateTime convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception { return LocalDateTime.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); } @Override public CellData convertToExcelData(LocalDateTime localDateTime, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String format = formatter.format(localDateTime); return new CellData(format); } }
实体类
package com.javasm.sales.domain.entity; import java.math.BigDecimal; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.baomidou.mybatisplus.annotation.IdType; import java.time.LocalDateTime; import java.util.Date; import com.baomidou.mybatisplus.annotation.TableId; import java.io.Serializable; import com.javasm.sales.common.LocalDateStringConverter; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.format.annotation.DateTimeFormat; /** * <p> * 销售订单表 * </p> * * @author lin * @since 2023-03-27 */ @Data @EqualsAndHashCode(callSuper = false) @ApiModel(value="SalesOrder对象", description="销售订单表") public class SalesOrder implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "序号") @TableId(value = "id", type = IdType.AUTO) private Integer id; @ApiModelProperty(value = "订单编号") @ExcelProperty(value = "订单编号") private String orderId; @ApiModelProperty(value = "收货人id") @ExcelProperty(value = "客户id") private Integer customerId; @ApiModelProperty(value = "订单类型:内部订单、电话订单、淘宝订单、京东订单") @ExcelProperty(value = "订单类型") private String orderType; @ApiModelProperty(value = "订单动作:订购、换购、支付") @ExcelProperty(value = "订单动作") private String orderActions; @ApiModelProperty(value = "业务类型:普通业务、号卡套餐") @ExcelProperty(value = "业务类型") private String businessType; @ApiModelProperty(value = "支付方式:支付宝、微信、银行、货到付款") @ExcelProperty(value = "支付方式") private String paymentMethods; @ApiModelProperty(value = "配送方式:EMS、京东物流、德邦快递") @ExcelProperty(value = "配送方式") private String shippingMethods; @ApiModelProperty(value = "配送费用") @ExcelProperty(value = "配送费用") private BigDecimal shippingCosts; @ApiModelProperty(value = "物流单号") @ExcelProperty(value = "物流单号") private String trackingNumber; @ApiModelProperty(value = "订单状态:待出库、已出库、已发货、已到货") @ExcelProperty(value = "订单状态") private String orderStatus; @ApiModelProperty(value = "下单日期") // @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ColumnWidth(20) @ExcelProperty(value = "下单日期", converter = LocalDateStringConverter.class) private LocalDateTime orderDate; @ApiModelProperty(value = "发货日期") // @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ColumnWidth(20) @ExcelProperty(value = "发货日期", converter = LocalDateStringConverter.class) private LocalDateTime shipDate; @ApiModelProperty(value = "签收日期") // @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ColumnWidth(20) //列宽 @ExcelProperty(value = "签收日期", converter = LocalDateStringConverter.class) //引入转换器 private LocalDateTime receiptDate; }
controller
package com.javasm.sales.controller; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.builder.ExcelWriterBuilder; import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder; import com.javasm.base.common.http.AxiosResult; import com.javasm.base.common.page.PageResult; import com.javasm.sales.domain.criteria.OrderInquiryCriteria; import com.javasm.sales.domain.entity.SalesOrder; import com.javasm.sales.service.SalesOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.List; /** * <p> * 销售订单表 前端控制器 * </p> * * @author lin * @since 2023-03-27 */ @RestController @RequestMapping("/sales/sales-order") public class SalesOrderController { @Autowired private SalesOrderService salesOrderService; @GetMapping("export") public void writeExcel(HttpServletResponse response) throws IOException { //必须用void response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); //防止中文乱码 String fileName = URLEncoder.encode("订单信息","UTF-8"); response.setHeader("Content-Disposition","attachment;filename*=UTF-8''"+fileName+".xlsx"); ServletOutputStream outputStream = response.getOutputStream(); //工作簿对象 ExcelWriterBuilder writeWorkBook = EasyExcel.write(outputStream,SalesOrder.class); //工作表对象 ExcelWriterSheetBuilder sheet = writeWorkBook.sheet(); //准备数据 List<SalesOrder> salesOrders = salesOrderService.list(); //写 sheet.doWrite(salesOrders); } }
前端


