java用easyexcel按模版导出

2023-09-19 11:19:15

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

名称为 financeReportBillStandardTemplateExcel.xlsx:

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

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

接下来是实体类

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<StandardBillFieldsDTO> 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("未查询到账单信息");
        }
    }

更多推荐

C++核心编程——P36-友元

友元客厅就是Public,你的卧室就是Private客厅所有人都可以进去,但是你的卧室只有和你亲密的人可以进。在程序中,有些私有属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元技术。友元的目的就是让一个函数或者类访问另一个类中的私有元素。友元的关键字——friend友元的三种实现全局函数做友元类做友元成员函数

进入docker容器内部使用命令行工具

进入Docker容器内部后,你可以使用以下命令行工具和方式来进行交互和操作容器内部的环境:bash/shell:大多数基于Linux的Docker容器提供了bash或shell作为默认的命令行工具。可以使用以下命令进入容器的shell环境:dockerexec-it<container_name_or_id>bash或

Mybatis&MybatisPlus 操作 jsonb 格式数据

最近有用到postgresql,里面的一个特色数据类型便是jsonb,和json差不多,但是查询比较快,关于概念,这里就提一句,不赘述。我们先来看下用mybatisplus,首先是查询数据。依赖:<dependency><groupId>com.baomidou</groupId><artifactId>mybatis

java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统

鸿鹄工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统1.项目背景一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的要求。二、企业通过

Spring Boot + Vue3前后端分离实战wiki知识库系统<十三>--单点登录开发二

接着https://www.cnblogs.com/webor2006/p/17608839.html继续往下。登录功能开发:接下来则来开发用户的登录功能,先准备后端的接口。后端增加登录接口:1、UserLoginReq:先来准备用户登录的请求实体:packagecom.cexo.wiki.req;importjava

新一代爬虫工具 katana 配置及使用

新一代爬虫工具katana配置及使用。功能:快速且完全可配置的网络爬行标准和无外设模式支持JavaScript解析/爬网可定制的自动表单填写范围控制-预配置字段/正则表达式可自定义的输出-预配置字段输入-标准输入、URL和列表输出-标准输出、文件和JSON0x01工具安装Katana需要Go1.18才能成功安装。要安装

21天学会C++:Day14----模板

·CSDN的uu们,大家好。这里是C++入门的第十四讲。·座右铭:前路坎坷,披荆斩棘,扶摇直上。·博客主页:@姬如祎·收录专栏:C++专题目录1.知识引入2.模板的使用2.1函数模板2.2类模板3.模板声明和定义分离3.1同一文件中的声明与定义分离3.2分文件的声明与定义分离4.非类型模板参数5.模版的特化5.1模板的

服务器租用多少钱一年?

租用服务器的费用是企业非常关心的问题,一般来说这个价格是由多种因素决定的,包括服务器商、服务器自身的配置、带宽、地域、服务时长等都有关系,大概在几百、几千到几万元不等,今天就来讲一讲这些影响服务器租用价格的因素吧!正规的服务器供应商,这个每个供应商根据成本的不同价格会有所差异但是变化不会很大,因为机房以及技术人员员工的

C++11 关于{}的初始化简析

C++11花括号/大括号的初始化序言聚合初始化有构造的{}初始化普通类使用initializer_list的类序言别问我为什么都是标记简析,深入分析我还没那个精力,为什么写这个这么简单的文章?在某次与群友探讨时才发现自己对于{}的理解是错的,我原来以为{}的使用并没有使用其本身的构造函数,所以特记录铭记。聚合初始化在以

垃圾收集器

1.前言结合之前介绍的垃圾回收算法,算法只是我们将无效对象回收的一种方式,最终将这些算法运用起来的,是垃圾收集器,随着java应用的业务场景越来越多,java在不停的版本迭代过程中,推出了很多种垃圾收集器,来应对不同的业务以及服务场景。2.七种垃圾收集器2.1Serial收集器(新生代)概述:Serial(串行)收集器

基于minist数据集用VAE训练生成图片(VAE基础入门学习)

文章目录参考的代码VAE介绍代码实现与解读代码块累计损失函数的变化迭代100次后生成的图像参考的代码复现的代码VAE介绍VAE是变分自编码器(VariationalAuto-Encoder)的缩写。它是一种深度生成模型,由Kingma等人于2014年提出的基于变分贝叶斯(VariationalBayes,VB)推断的生

热文推荐