GcExcel进行模板上数时,是否可以保留不存在的key模板
本帖最后由 Ellia.Duan 于 2023-12-28 11:18 编辑产品:GcExcel
版本:6.2.5
需求编号:DOCXLS-9514
使用GcExcel6.2.5进行模板上数。如果单元格A1中设置模板{{ds1}},但没有进行workbook.addDatasource("ds1",something),执行workbook.processTemplate()后,该单元格A1中的模板会丢失。
有办法在processTemplate()之后,保留ds1的模板吗?
您好,我这边测试了一下,如果设置了{{ds1}}在A1单元格后,不设置workbook.addDatasource("ds1",something)的话,在processTemplate()时会报错。
不太明白您为什么要在processTemplate后又要保存模板的信息,您这边是为了实现什么样的需求呢? Joestar.Xu 发表于 2023-12-25 11:53
您好,我这边测试了一下,如果设置了{{ds1}}在A1单元格后,不设置workbook.addDatasource("ds1",something) ...
我有两个区域A,B的模板有关联关系。在业务上需要先上区域A模板的数,然后再上区域B模板的数,因为A模板上数后,会通过公式影响B区域。但是配置模板时是区域A,B的模板是统一配置的。
我还有另外一个帖子和这个需求是相关的,这两个帖子是希望能通过不同维度解决这个问题。
https://gcdn.grapecity.com.cn/showtopic-200600-1-1.html GcExcel原生上不支持这样的需求,但是您可以通过一些业务代码来实现。
比如,现在有一个模板文件A.xlsx,将A读取进来后,创建一个新的WorkBook B,先将区域1的数据从A复制到B中,执行模板填充的代码;然后再将区域2的数据从A复制到B中,再执行模板填充的代码,通过这样的方式来实现。 Joestar.Xu 发表于 2023-12-26 14:16
GcExcel原生上不支持这样的需求,但是您可以通过一些业务代码来实现。
比如,现在有一个模板文件A.xlsx ...
有两个问题
1.如何拿到执行模板前对应的区域
2.如何拿到执行模板后对应的区域
chess3cake 发表于 2023-12-26 10:22
我有两个区域A,B的模板有关联关系。在业务上需要先上区域A模板的数,然后再上区域B模板的数,因为A模板 ...
您好,当A区域上数之后,公式会影响B区域。
这个场景,您能给一个具体的例子吗? JoeJin 发表于 2023-12-26 15:19
您好,当A区域上数之后,公式会影响B区域。
这个场景,您能给一个具体的例子吗?
示例文件
SheetA中为第一个模板上数区域。MIDDLE为一个聚合数据的Table,会计算A区域中的部门总支出。SheetB区域是第二个要模板上述区域,只填充部门总支出=3的部门。
业务逻辑
1.在SheetA中进行模板上数
2.模板上数后,从MIDDLE中的Table获取所有部门总支出=3的部门
3.将第二步获取的部门上述到SheetB中
chess3cake 发表于 2023-12-26 15:51
示例文件
SheetA中为第一个模板上数区域。MIDDLE为一个聚合数据的Table,会计算A区域中的部门总支出。 ...
十分感谢,模板功能更多的是解决动态布局的问题。
看到您的例子中 Middel sheet,主要是用来做数据过滤,这样的话建议直接在代码中过滤,可能效率更高一些。把数据过滤后,再对 B sheet 进行上数即可。
另外也可以考虑拆成两个 Excel 文件分别进行上数操作。
如果还不能解决问题,请分享进一步的信息及原因。 本帖最后由 chess3cake 于 2023-12-26 17:43 编辑
JoeJin 发表于 2023-12-26 17:23
十分感谢,模板功能更多的是解决动态布局的问题。
看到您的例子中 Middel sheet,主要是用来做数据过滤 ...
示例中的三个sheet是由用户配置的,在实际业务中,示例中的Middle Sheet可能是N个Middle Sheet和公式来处理的,特别是Middle Sheet中的清洗逻辑是由Excel本身公式+简单脚本语句来做的。
这么做的设计理念是我们希望将用户提供的excel,直接变成我们的数据模板。
也就是说,MiddleSheet的中的逻辑,在理想状态下全部由用户提供,且研发人员不参与。
Asheet 和B sheet 和 Middle Sheet其实都由用户提供,并且用户会在一个excel中处理他们,如果要拆分成多个文件上数,会增加我们的计算链和复杂度。需要我们提供专业人员将用户的文件进行拆分,然后在数据处理后合并成最终文件。
chess3cake 发表于 2023-12-26 17:41
示例中的三个sheet是由用户配置的,在实际业务中,示例中的Middle Sheet可能是N个Middle Sheet和公式来处 ...
OK,是否可以将您的场景理解为。您的产品提供了一个服务平台,您提供接口允许用户上传 Excel 模板。把用户上传的 Excel 模板当做一个计算引擎,平台将数据填入,引擎计算出接过来,后续可能是导出,或者做其他用。
还有一个点不太清晰,对于 A sheet 模板上数。您是使用到了 GcExcel 的模板语言吗?
GcExcel 模板语言,提供了扩展单元格,公式计算,上下文关联,分组,分页的功能。
不确定您是否把这些功能(以模板语言的方式)暴露给您的用户,如果未暴露这些功能给您的用户。
那么用户上传的 Excel 模板文件,是否仅需要使用简单的 API setValue 即可以解决问题?