java用easyexcel按模版导出

首先在项目的resources下面建一个template包,之后在下面创建一个模版,模版格式如下:

名称为 financeReportBillStandardTemplateExcel.xlsx:

{.fee}类型的属性值,是下面实体类的属性,要注意这里面的格式,不能错,还需要注意就是驼峰,例如:{.stockMv},要跟实体类的属性名保持一致,否则在导入的时候就会出现null之类的问题。

要是需要给属性设置格式之类的,例如:我们这里设置千分符并且保留两位小数,可进行如下图所示的操作,先选中所要设置的单元格,然后右键点击,选中设置单元格格式,就会弹出下图的操作,可以进行配置格式

java用easyexcel按模版导出_第1张图片

接下来是实体类

package com.citicsc.galaxy.finance.lq;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @ClassName StandardBillFieldsDTO
 * @Description TODO
 * @Author houbing
 * @Date 2023/9/18 10:07
 */

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StandardBillFieldsDTO {

    private String id;

    //利息收入(利息归本)
    private BigDecimal interest;

    //股息红利
    private BigDecimal dividend;

    //资金余额
    private BigDecimal availableCash;

    //资产市值
    private BigDecimal assetMv;

    //非上市股票市值
    private BigDecimal unlistedMv;

    //当日国债逆回购发生额
    private BigDecimal debtReverseRepurchase;

    //出入金净额
    private BigDecimal netCash;

    //其他资金变动
    private BigDecimal otherCash;

    //总资金变动
    private BigDecimal totalCashInout;

    //交易费用
    private BigDecimal fee;

    //利息收入
    private BigDecimal interestIncome;

    //权利金收支
    private BigDecimal netPremium;

    //执行实收资金
    private BigDecimal realReceiveCash;

    //执行实付资金
    private BigDecimal realPaymentCash;

    //现金替代实收资金
    private BigDecimal realOffsetCashIn;

    //现金替代实付资金
    private BigDecimal realOffsetCashOut;

    //执行冻结资金
    private BigDecimal frozenCash;

    //市值权益
    private BigDecimal totalMv;

    //股票市值
    private BigDecimal stockMv;

    //买券金额
    private BigDecimal buySecuritiesAmount;

    //做市商交易经手费优惠
    private BigDecimal marketDiscount;

    //累计平仓盈亏
    private BigDecimal closePnl;

    //累计浮动盈亏
    private BigDecimal floatPnl;

    //其他交易费用
    private BigDecimal otherFee;

}

这里只展示部分字段。

 接下来就直接在controller层中进行导出

@ApiOperation(value = "交易账户基础数据查询表")
    @PostMapping("/exportBill")
    public void exportBill(@RequestBody @Validated TraAccBillReq req ,HttpServletResponse response) throws Exception {
        response.setContentType("application/octet-stream");
        String fileName = URLEncoder.encode("交易账户基础数据查询表" + DateUtils.formatStr(req.getTradingDay()), "utf-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        //查询数据库的数据
        List dtos = lqAppService.queryBillFieldList(req);
        if (CollectionUtils.isNotEmpty(dtos)) {
            FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
            WriteSheet sheet = EasyExcel.writerSheet(0).build();
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream())
                    .withTemplate(new ClassPathResource("template/financeReportBillStandardTemplateExcel.xlsx").getInputStream())
                    .build();
            excelWriter.fill(dtos, fillConfig, sheet);
            excelWriter.finish();
        } else {
            throw new BizException("未查询到账单信息");
        }
    }

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