JAVA实现文件导出Excel-JAVA-Excel工具

加粗样式

项目场景:

简述项目相关背景:
例如:后台列表数据,使用Excel工具简单生成execl文件导出


Maven依赖:

pom.xml:
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>4.0.0</version>
        </dependency>

@Excel注解:

注解说明

/**
 * 自定义导出Excel数据注解
 *
 * @author sunziwen
 * @version 1.0
 * @date 2018-12-29 15:00
 **/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Excel {
    /**
     * 导出到Excel中的名字.
     */
    public String name();
 
    /**
     * 日期格式, 如: yyyy-MM-dd
     */
    public String dateFormat() default "";
 
    /**
     * 读取内容转表达式 (如: 0=男,1=女,2=未知)
     */
    public String readConverterExp() default "";
 
    /**
     * 导出时在excel中每个列的高度 单位为字符
     */
    public double height() default 14;
 
    /**
     * 导出时在excel中每个列的宽 单位为字符
     */
    public double width() default 20;
 
    /**
     * 文字后缀,如% 90 变成90%
     */
    public String suffix() default "";
 
    /**
     * 当值为空时,字段的默认值
     */
    public String defaultValue() default "";
 
    /**
     * 提示信息
     */
    public String prompt() default "";
 
    /**
     * 设置只能选择不能输入的列内容.
     */
    public String[] combo() default {};
 
    /**
     * 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写.
     */
    public boolean isExport() default true;
}

实体类使用注解说明:

使用多线程批量处理数据,下面是线程类,直接复制即可

package com.yq.common.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import com.yq.common.emums.OrderStateEnum;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import lombok.Data;

/**
 * @author longteng
 * @Description 特产商品订单表
 * @date 2020/11/4 17:02
 */
@ExcelTarget("GoodsOrderExportVo")
@Data
public class GoodsOrderExportVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @Excel(name = "序号", orderNum = "0")
    @ApiModelProperty("id")
    private Long id;

    /**
     * 订单编号
     */
    @Excel(name = "订单编号", width = 30, orderNum = "1")
    @ApiModelProperty("订单编号")
    private String orderNo;

    /**
     * 客户id
     */
    @ApiModelProperty("客户id")
    private Long customerId;


    /**
     * 配送地址id
     */
    @ApiModelProperty("配送地址id")
    private Long shippingId;

    /**
     * 收货人
     */
    @Excel(name = "收货人", width = 30, orderNum = "2")
    @ApiModelProperty("收货人")
    private String name;

    /**
     * 联系方式
     */
    @Excel(name = "联系方式", width = 30, orderNum = "3")
    @ApiModelProperty("联系方式")
    private String mobile;

    /**
     * 省
     */
    @Excel(name = "省", width = 20, orderNum = "4")
    @ApiModelProperty("省")
    private String province;

    /**
     * 市
     */
    @Excel(name = "市", width = 20, orderNum = "5")
    @ApiModelProperty("市")
    private String city;

    /**
     * 区
     */
    @Excel(name = "区", width = 20, orderNum = "6")
    @ApiModelProperty("区")
    private String district;

    /**
     * 详细地址
     */
    @Excel(name = "详细地址", width = 50, orderNum = "7")
    @ApiModelProperty("详细地址")
    private String address;

    /**
     * 订单总金额
     */
    @Excel(name = "订单总金额", width = 30, orderNum = "8")
    @ApiModelProperty("订单总金额")
    private BigDecimal orderAmount;


    /**
     * 订单支付金额
     */
    @Excel(name = "订单支付金额", width = 30, orderNum = "9")
    @ApiModelProperty("订单支付金额")
    private BigDecimal payAmount;

    /**
     * 支付修正金额,出现退款时【订单支付金额】减去【退款金额】为支付修正金额
     */
    @Excel(name = "支付修正金额", width = 30, orderNum = "10")
    @ApiModelProperty("支付修正金额")
    private BigDecimal actualAmount;

    /**
     * 0 待付款 1 已付款(代发货) 2 部分发货 3 已发货 4 交易完成 5 交易关闭
     */
     @Excel(name = "人员类型",readConverterExp = "1=已付款,2=部分发货,3=已发货,4=交易完成 ,5=交易关闭")
    @ApiModelProperty("0 待付款 1 已付款(待发货) 2 部分发货 3 已发货 4 交易完成 5 交易关闭 6 已退款 7 待退货 8 待退款 9 待审核")
    private Integer state;

    @Excel(name = "状态", width = 30, orderNum = "11")
    private String statusValue;
    /**
     * 订单备注
     */
    @Excel(name = "订单备注", width = 30, orderNum = "12")
    @ApiModelProperty("订单备注")
    private String remark;


    private Date createTime;

    /**
     * 添加时间
     */
    @Excel(name = "添加时间", width = 30, orderNum = "13")
    @ApiModelProperty("添加时间")
    private String createTimeShow;

    /**
     * 时间格式转换
     *
     * @return返回字符串格式 yyyy-MM-dd HH:mm:ss
     */
    public static String getStringDate(Date currentTime) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = formatter.format(currentTime);
        return dateString;
    }

    public String getCreateTimeShow() {
        return getStringDate(this.createTime);
    }

    public String getStatusValue() {
        OrderStateEnum stateEnum = OrderStateEnum.getEnum(this.state);
        return stateEnum == null ? "" : stateEnum.getValue();
    }

}

项目使用场景:

    /**
     * 导出-中台认养商品订单
     *
     * @param ids 批量id
     * @return
     */
    @RequestMapping(value = "/exportAdoptOrder", method = RequestMethod.GET)
    @ApiOperation(value = "导出-中台认养商品订单")
    public void exportAdoptOrder(String ids,
            HttpServletResponse response)
            throws IOException {
            //数据处理
        List<Integer> idList = new ArrayList<>();
        String[] id = ids.split(",");
        for (int i = 0; i < id.length; i++) {
            idList.add(Integer.valueOf(id[i]));
        }

//查询结果
        List<AdoptOrderExportVo> adoptOrderVo = adoptOrderService.exportAdoptOrderList(idList);//导出数据
        //AdoptOrderExportVo.class 实体类,adoptOrderVo导出数据集
        ExcelUtils.exportExcel(adoptOrderVo, "认养订单", "认养订单", AdoptOrderExportVo.class, "认养订单", response);
    }


    /**
     * excel 导出
     *
     * @param list      数据
     * @param title     标题
     * @param sheetName sheet名称
     * @param pojoClass pojo类型
     * @param fileName  文件名称
     * @param response
     */
    public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, HttpServletResponse response) throws IOException {
        defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName, ExcelType.XSSF));
    }

Excle工具下载:

到我的下载资源里免费下载: 下载链接:https://download.csdn.net/download/tiantian929/22242265?spm=1001.2014.3001.5503

你可能感兴趣的:(java)