还在担心报表不好做?不用怕,试试这个方法(五)

前言

在上一篇文章《GcExcel 模板系列教程四-分组与扩展》中,小编为大家分享了如何使用 GcExcel 实现模板的分组与扩展,本文小编将为大家主要介绍如何在模板中进行全局设置。

GcExcel 模板中的全局设置是针对整个模板定义的设置。当需要在多个字段上应用相同属性时,全局设置能够极大地简化工作量。这些设置可以应用于所有模板布局,甚至可以涵盖工作簿中的多个工作表。

GcExcel

GcExcel 模板提供的全局设置说明如下:

  • KeepLineSize(保持行高与列宽)
  • InsertMode(插入整行或整列)
  • DebugMode(调试模式)
  • PaginationMode(分页模式)
  • EmbedFontForFormFields(嵌入字体文件)

本节小编将主要介绍前三个设置,对于其他的模式您可以参考 GcExcel 的官方文档了解更多全局设置的细节。

配置方法

全局设置,是通过 Excel 的公式名称管理器来配置的。需要注意的是,全局设置需要在模板填充之前配置,才可生效,可以使用如下的代码进行全局配置:

Workbook wb = new Workbook();
wb.open("template.xlsx");
//配置全局设置
wb.getNames().add("TemplateOptions.KeepLineSize", "true");
//配置数据源, ds 对象需要额外配置
wb.addDataSource("ds", ds);
//模板填充
wb.processTemplate();
//保存报表
wb.save("report.pdf");

除了使用代码设置之外,也可以通过 Excel 或者 SpreadJS,在模板中直接配置全局配置,这样就无需再在代码中显示设置了。

Excel:

SpreadJS:

全局设置

1. 保持行高与列宽(KeepLineSize)

通常情况下,GcExcel 在扩展单元格时不会改变单元格的行高和列宽,而是直接沿用已有单元格的行高和列宽,如下图所示:

导出后,可以看到,只有第一行的高度比较大,其余的新行高度并未修改,与模板中原有行高保持一致。

但往往为了布局整齐,美观,我们期望的结果应该是下面的这个样子:

这个时候我们就可以使用 KeepLineSize 属性,修改新增行列时,保持行高列宽一致。

使用如下代码实现:

Workbook workbook = new Workbook();
workbook.open("template.xlsx");
workbook.getNames().add("TemplateOptions.KeepLineSize","True");
workbook.addDataSource("ds",CreateData2());
workbook.processTemplate();

除了使用代码之外,还可以使用名称管理器,在模板中预先配置好:

2. 插入整行或整列(InsertMode)

GcExcel 在扩展单元格时,为了尽量避免对模板布局的影响,默认是以插入单元格的方式进行扩展,如下图所示:

然而,有时在实际情景中,这种操作可能会破坏布局,就像上图中绿色行单元格被切割一样。这种情况下,我们可以通过使用 InsertMode 属性来修改插入行为,让 GcExcel 在填充模板时按照行的方式进行插入:

Workbook workbook = new Workbook();
workbook.open("template.xlsx");
workbook.getNames().add("TemplateOptions.InsertMode","EntireRowColumn");
workbook.addDataSource("ds",CreateData());
workbook.processTemplate();

除了使用代码之外,也可以使用名称管理器,添加设置:

3. 调试模式(DebugMode)

调试模式,是为了方便对比模板与结果而设计的一种模式,当开启 DebugMode 后,模板填充时会保留模板工作表,并将名字改为 {sheetname}_template,例如原本工作表名字为 sales,则模板工作表为 sales_template。

如下图所示:

模板

报表

与前面的设置相同,您可以通过代码或者名称管理器来开启调试模式。

Workbook workbook = new Workbook();
workbook.open("template.xlsx");
workbook.getNames().add("TemplateOptions.DebugMode","True");
workbook.addDataSource("ds",CreateData());
workbook.processTemplate();

总结

GcExcel 的全局设置旨在有效解决不同工作表或模板中共享的配置问题。不同的配置方式各有其优势。通过代码配置,可以避免关注模板本身是否设置了全局属性,而使用名称管理器配置则更好地实现代码与模板的解耦,提高代码的可维护性和灵活性。这种灵活的配置方法为处理全局设置提供了多种选择,使得在不同需求下能够更好地应用和管理全局设置。

扩展链接:

轻松构建低代码工作流程:简化繁琐任务的利器

数据驱动创新:以Java编程方式定制数据透视表

Java批量操作Excel文件实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/788366.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

潜力大,可创业的Plan B自由副业

本文由 ChatMoney团队出品人生永远要有Plan B,在当下的市场经济环境中,工作收入和日常支出完全不能平衡,导致生活质量越来越不理想。如果觉得实在撑不下去,也许可以换个思路。我在工作之余,也研究了AI领域如何变现。最近对比发现一款Chatmoney全能知识库AI,在整个使用过程…

ChatMoney是你创业自由副业的plan B!

本文由 ChatMoney团队出品人生永远要有Plan B,在当下的市场经济环境中,工作收入和日常支出完全不能平衡,导致生活质量越来越不理想。如果觉得实在撑不下去,也许可以换个思路。我在工作之余,也研究了AI领域如何变现。最近对比发现一款Chatmoney全能知识库AI,在整个使用过程…

apifox使用后置操作自动配置全局变量

1、全局变量 默认值 设置token 2、后置操作 提取变量 变量名称同样设置为 token

P4655 [CEOI2017] Building Bridges

题意思路 设 \(sum_i = \sum\limits_{j = 1}^i w_j\)。 可以得到转移方程 \(f_i = f_j + (h_i - h_j) ^ 2 + sum_i - sum_j\)。 转化为 \(y = kx + b\) 的形式: \(f_i = f_j + (h_i - h_j) ^ 2 + sum_i - sum_j = f_j + h_i^2 + h_j^2 - 2 h_ih_j + sum_i - sum_j = (-2h_ih_j…

批量图片添加水印的方法

批量图片添加水印的方法将指定目录下的所有图片批量添加您配置的水印文字 下载地址 http://6laohu.com

元气日语 Genki-1 第 4 课 初次约会

初めてのデート 课文 I メアリー: すみません。マクドナルドはどこですか。 知らない人: あそこにホテルがありますね。マクドナルドはあのホテルの前ですよ。 メアリー: ありがとうございます。 II メアリー: ただいま。 お父さん: おかえりなさい。映画はどうでした…

【一文详解】内外网文件摆渡系统,解决网间数据安全传输问题

一、内外网文件摆渡系统的背景 数字化转型进一步推动了数据的移动,而随着攻击者加速利用日常生活中的数据依赖性,数据泄露也随之扩大。企业为保护网络安全和数据安全,使用网络隔离手段进行网络隔离,如银行内部将网络隔离为生产网、办公网、DMZ区;如生物制药企业、医院等机…

多叉共振战法(成交量、MACD、KDJ)

多叉共振战法 作者: 深海游鱼 QQ:396068801 日期:2024年8月 出现多叉共振后回踩上车,破位就割。

使用 perf probe测量Linux用户空间代码的执行时间

1 Linux perf 简介 perf 是 Linux 内核自带的一个强大的性能分析工具,它能够深入到内核和用户空间,提供丰富的性能计数器和事件跟踪功能,帮助开发者和系统管理员精确地定位系统性能瓶颈。1.1 perf 的主要功能:性能事件采样: 可以采样各种硬件性能事件,如 CPU 周期、缓存命…

【SpringBoot】SmartLifecycle 的执行过程以及执行顺序

1 前言 之前看过 SpringBoot 启动后,Tomcat监听端口也就是正式接收请求的开启时机以及启动时向注册中心注册服务的时机,都是在刷新上下文的 finishRefresh() 阶段通过执行生命周期的 Bean 来得到执行的。 当有多个 Bean 的话他们的执行顺序有没有什么说法呢,出于这个思考,…

读软件开发安全之道:概念、设计与实施11安全地编程

安全地编程1. 安全地编程 1.1. 在一个完整的软件设计过程中,我们要在创建和审查时就将安全性放在心中,但这只是产品开发过程的开始,接下来是实现、测试、部署、运行、监控、维护,并最终在生命周期结束时将其淘汰 1.2. 开发人员不仅必须忠实地实现一个优良设计中明确的安全规…

使用RMBG-1.4进行抠图(背景移除)

使用RMBG-1.4进行抠图(背景移除) 说明:首次发表日期:2024-08-28 RMBG-1.4 Hugging Face 地址: https://huggingface.co/briaai/RMBG-1.4准备工作 创建环境并安装依赖:: # 如果`~/.local/lib/python3.10/site-packages`里面存在python模块,需要禁用。 ## 可以直接删除该…