还在担心报表不好做?不用怕,试试这个方法(五)
前言
在上一篇文章《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 的全局设置旨在有效解决不同工作表或模板中共享的配置问题。不同的配置方式各有其优势。通过代码配置,可以避免关注模板本身是否设置了全局属性,而使用名称管理器配置则更好地实现代码与模板的解耦,提高代码的可维护性和灵活性。这种灵活的配置方法为处理全局设置提供了多种选择,使得在不同需求下能够更好地应用和管理全局设置。
扩展链接: