tiangong-doc tiangong-doc
首页
  • 天宫体系

    • 前端架构
    • 后端架构
    • 扩展功能
    • 打包部署
    • 更新日志
    • 辅助开发平台 (opens new window)
    • 权限平台部署包下载 (opens new window)
  • 基础组件

    • 工作流引擎(待整理)
    • 跨境加签客户端(待整理)
    • 权限平台(待整理)
  • 数字化工具

    • 数字魔方
    • 数据采集
    • 智能导入
    • 数字员工
    • 规则引擎(开发中)
    • 消息引擎(待开发)
    • 智能导出(待开发)
  • 业务算法

    • 南京业务体检(待整理)
    • 智慧长江(待整理)
  • 识别模型

    • 空箱识别(待整理)
    • 智能客服(待整理)
    • OCR识别(待整理)
    • 车牌识别(待整理)
    • 超市停留识别(待整理)
    • 危险品识别(待开发)
    • 超长车识别(待开发)
    • 车辆靠台(待开发)
    • 车辆占用(待开发)
  • 算法模型(待整理)
  • 风控模型(待整理)
  • 海关规则(待整理)
  • 危险品知识(待整理)
  • 组件设计文档(待整理)
  • 数据服务

    • 商品归类服务(待开发)
    • RECP贸易服务(待开发)
    • 商品价格服务(待开发)
    • 业务申报解答(待开发)
    • 报关单状态查询(待开发)
  • 常用开发工具

    • BASE64编解码工具 (opens new window)
    • MD5编码工具 (opens new window)
    • AES/DES加解密 (opens new window)
    • JWT解码工具 (opens new window)
    • ASCII编解码工具 (opens new window)
    • Unicode编解码工具 (opens new window)
    • UTF-8编解码工具 (opens new window)
    • 字符串编解码工具 (opens new window)
    • 通用进制转换工具 (opens new window)
    • 浮点数十进制转换 (opens new window)
    • 在线JSON解析 (opens new window)
    • 在线JS代码格式化工具 (opens new window)
    • CSS可视化工具 (opens new window)
    • XML格式化工具
    • SQL压缩/格式化工具 (opens new window)
    • JSON/XML在线转换 (opens new window)
    • JSON/YAML在线转换 (opens new window)
    • IP地址查询 (opens new window)
    • HTTP在线接口测试 (opens new window)
    • UUID在线生成器 (opens new window)
    • 随机数生成器 (opens new window)
    • 在线文本比对 (opens new window)
  • 研发标准规范(待整理)
  • 国产化适配
首页
  • 天宫体系

    • 前端架构
    • 后端架构
    • 扩展功能
    • 打包部署
    • 更新日志
    • 辅助开发平台 (opens new window)
    • 权限平台部署包下载 (opens new window)
  • 基础组件

    • 工作流引擎(待整理)
    • 跨境加签客户端(待整理)
    • 权限平台(待整理)
  • 数字化工具

    • 数字魔方
    • 数据采集
    • 智能导入
    • 数字员工
    • 规则引擎(开发中)
    • 消息引擎(待开发)
    • 智能导出(待开发)
  • 业务算法

    • 南京业务体检(待整理)
    • 智慧长江(待整理)
  • 识别模型

    • 空箱识别(待整理)
    • 智能客服(待整理)
    • OCR识别(待整理)
    • 车牌识别(待整理)
    • 超市停留识别(待整理)
    • 危险品识别(待开发)
    • 超长车识别(待开发)
    • 车辆靠台(待开发)
    • 车辆占用(待开发)
  • 算法模型(待整理)
  • 风控模型(待整理)
  • 海关规则(待整理)
  • 危险品知识(待整理)
  • 组件设计文档(待整理)
  • 数据服务

    • 商品归类服务(待开发)
    • RECP贸易服务(待开发)
    • 商品价格服务(待开发)
    • 业务申报解答(待开发)
    • 报关单状态查询(待开发)
  • 常用开发工具

    • BASE64编解码工具 (opens new window)
    • MD5编码工具 (opens new window)
    • AES/DES加解密 (opens new window)
    • JWT解码工具 (opens new window)
    • ASCII编解码工具 (opens new window)
    • Unicode编解码工具 (opens new window)
    • UTF-8编解码工具 (opens new window)
    • 字符串编解码工具 (opens new window)
    • 通用进制转换工具 (opens new window)
    • 浮点数十进制转换 (opens new window)
    • 在线JSON解析 (opens new window)
    • 在线JS代码格式化工具 (opens new window)
    • CSS可视化工具 (opens new window)
    • XML格式化工具
    • SQL压缩/格式化工具 (opens new window)
    • JSON/XML在线转换 (opens new window)
    • JSON/YAML在线转换 (opens new window)
    • IP地址查询 (opens new window)
    • HTTP在线接口测试 (opens new window)
    • UUID在线生成器 (opens new window)
    • 随机数生成器 (opens new window)
    • 在线文本比对 (opens new window)
  • 研发标准规范(待整理)
  • 国产化适配
  • 天宫架构

    • 前端架构

    • 后端架构

    • 打包部署

    • 扩展功能

    • 业务组件

      • 内审功能
      • 定时任务
      • 导入
      • 邮件通知配置功能
      • 按模板导出excel
        • 功能介绍
        • 配置项相关
        • 单表
        • 一主一从
        • 一主多从
      • 模板导出excel(天宫版)
      • core版本导入
      • 消息通知组件
      • 集成Ueditor
      • 业务日志功能
    • 国际化

    • 迁移助手

    • 历史版本

    • 更新日志

    • 开发手册

    • 权限平台

  • 基础架构
  • 天宫架构
  • 业务组件
2024-03-20
目录

按模板导出excel

# 功能介绍

框架支持按照自定义模板的方式导出excel, 之前框架中就有这个功能, 整体的用法与之前没有区别

之前数据是存在DataTable中, 所以会存在一个List<Entity> 向DataTable对象转换的过程

后续会封装这转换的过程, 可以支持get一个DataTable对象

# 配置项相关

  1. excel模板放哪?

项目资源目录下templates/excel/

image-20240319184226226

  1. 导出的excel文件在哪?

    image-20240319184735974

    Http响应:

    image-20240319185551093

说明:

导出的位置在项目目录下EciReport中, 部署在服务器上, 文件存在于jar包当前目录下EciReport

DEMO文件夹是 bizType参数, 代码中指定的, excel名称也是代码中fileName指定的

下载链接: http://127.0.0.1:13001/EciReport/DEMO/20240319/代码生成测试.xlsx

# 单表

public String print1() {
    // 创建EciReport实例
    EciReport report = new EciReport();
    // 设置报告使用的模板文件路径
    String filePath = "/excel/print1.xlsx";
    report.templateFile = filePath;
    
    // 需要转成pdf, 不转就不用加
    report.toPdf = true;

    // 创建DataSet实例,并将其设置为报告的数据源
    DataSet dataSet = new DataSet();
    report.dataSource = dataSet;
    // 获取并添加数据表到数据源
    DataTable dt = getDataTable();
    dataSet.addTable(dt);

    // 执行报告生成流程
    report.execute();
    // 保存生成的报告到文件,指定示例名称和描述
    report.saveToFile("DEMO","代码生成测试");
    // 返回报告的web访问URL
    return report.webAccessUrl;
}

// 模拟构造一个DataTable
public DataTable getDataTable(){
    DataTable dt = new DataTable();
    // 这里需要固定的给 HEAD
    dt.setTableName("HEAD");
    EntityBase entity = new EntityBase();
    entity.put("id",123);
    entity.put("name","hello");
    entity.put("price",new BigDecimal("12.3"));
    entity.put("createTime",new Date());
    dt.rows.add(entity);
    return dt;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

模板

主表的字段使用的是 $

image-20240319190330842

结果

image-20240319190403921

说明:

代码给啥, 就展示啥, 所以这里的时间字段需要自己格式化成自己要展示的格式

# 一主一从

public Object print2() {
    // 创建EciReport实例
    EciReport report = new EciReport();
    // 设置报告使用的模板文件路径
    String filePath = "/excel/print2.xlsx";
    report.templateFile = filePath;

    // 获取并添加数据表到数据源
    DataTable head = getDataTableHead();
    DataTable list = getDataTableList();

    report.addDataTable(head,"GEN_HEAD");
    report.addDataTable(list,"GEN_LIST");
    // 指定list的一个名称列
    report.defineCell = "F";


    // 执行报告生成流程, 指定生成主表的名称
    report.executeSheet(0,"GEN_HEAD");

    // 保存生成的报告到文件,指定示例名称和描述
    report.saveToFile("DEMO","一主一从测试");
    // 返回报告的web访问URL
    return report.webAccessUrl;
}

// 表头的dataTable
private DataTable getDataTableList() {
    DataTable dt = new DataTable();
    dt.setTableName("GEN_LIST");
    List<EntityBase> list = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        EntityBase entity = new EntityBase();
        entity.put("id",i);
        entity.put("name","hello"+i);
        entity.put("price",new BigDecimal("12.3"));
        entity.put("createTime", DateUtils.dateTime(new Date()));
        list.add(entity);
    }
    dt.rows=list;
    return dt;
}

// 表体的dataTable
private DataTable getDataTableHead() {
    DataTable dt = new DataTable();
    dt.setTableName("HEAD");
    EntityBase entity = new EntityBase();
    entity.put("name","hello");
    entity.put("price",new BigDecimal("12.3"));
    dt.rows.add(entity);
    return dt;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

模板

主表是占位符替换, 从表是需要循环出来的

主表的字段使用的是 $ 从表使用的是 #

image-20240320081815065

结果

image-20240320081836101

# 一主多从

public Object print3() {
    // 创建EciReport实例
    EciReport report = new EciReport();
    // 设置报告使用的模板文件路径
    String filePath = "/excel/print3.xlsx";
    report.templateFile = filePath;

    report.toPdf = true;

    // 获取并添加数据表到数据源
    DataTable head = getDataTableHead();
    DataTable list = getDataTableList();
    DataTable list2 = getDataTableList2();

    report.addDataTable(head,"GEN_HEAD");
    // 从表1
    report.addDataTable(list,"GEN_LIST");
    // 从表2
    report.addDataTable(list2,"GEN_LIST2");
    // 指定list的一个名称列
    report.defineCell = "F";

    // 执行报告生成流程, 指定生成主表的名称
    report.executeSheet(0,"GEN_HEAD");

    // 保存生成的报告到文件,指定示例名称和描述
    report.saveToFile("DEMO","一主多从测试");
    // 返回报告的web访问URL
    return report.webAccessUrl;
}

private DataTable getDataTableList() {
    DataTable dt = new DataTable();
    dt.setTableName("GEN_LIST");
    List<EntityBase> list = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        EntityBase entity = new EntityBase();
        entity.put("id",i);
        entity.put("name","hello"+i);
        entity.put("price",new BigDecimal("12.3"));
        entity.put("createTime", DateUtils.dateTime(new Date()));
        list.add(entity);
    }
    dt.rows=list;
    return dt;
}

private DataTable getDataTableList2() {
    DataTable dt = new DataTable();
    dt.setTableName("GEN_LIST2");
    List<EntityBase> list = new ArrayList<>();
    for (int i = 20; i < 25; i++) {
        EntityBase entity = new EntityBase();
        entity.put("id",i);
        entity.put("name","hello"+i);
        entity.put("price",new BigDecimal("33"));
        entity.put("createTime", DateUtils.dateTime(new Date()));
        list.add(entity);
    }
    dt.rows=list;
    return dt;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

模板

image-20240320083525373

结果

image-20240320083554680

上次更新: 2024/5/21 14:16:13
邮件通知配置功能
模板导出excel(天宫版)

← 邮件通知配置功能 模板导出excel(天宫版)→

最近更新
01
EciReport模板导出_Core
09-10
02
EciReport模板导出
09-09
03
Core权限平台接口
07-25
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式