前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >还在担心报表不好做?不用怕,试试这个方法(五)

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

作者头像
葡萄城控件
发布2024-08-23 08:13:26
340
发布2024-08-23 08:13:26
举报
文章被收录于专栏:葡萄城控件技术团队

前言

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

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

GcExcel

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

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

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

配置方法

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

代码语言:javascript
复制
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 属性,修改新增行列时,保持行高列宽一致。

使用如下代码实现:

代码语言:javascript
复制
Workbook workbook = new Workbook();
workbook.open("template.xlsx");
workbook.getNames().add("TemplateOptions.KeepLineSize","True");
workbook.addDataSource("ds",CreateData2());
workbook.processTemplate();

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

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

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

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

代码语言:javascript
复制
Workbook workbook = new Workbook();
workbook.open("template.xlsx");
workbook.getNames().add("TemplateOptions.InsertMode","EntireRowColumn");
workbook.addDataSource("ds",CreateData());
workbook.processTemplate();

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

  1. 调试模式(DebugMode)

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

如下图所示:

模板

报表

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

代码语言:javascript
复制
Workbook workbook = new Workbook();
workbook.open("template.xlsx");
workbook.getNames().add("TemplateOptions.DebugMode","True");
workbook.addDataSource("ds",CreateData());
workbook.processTemplate();

总结

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档