Yu-Xian
发表于 2023-12-12 08:34:27
顾问您好:
因最近客户有提出透视表使用需求,并进行此功能的采购
所以我们正使用透视表功能进行案例演示,
我们预计演示的方式如下:
(1)由后端取得各成本中心产耗量明细,将资料写入〔产耗明细〕折页
(2)〔能源日报〕折页的透视表根据〔产耗明细〕折页资料来源自动产生
我们系统的透视表功能基本上开发好,
但是因数据源采用名称无法刷新的问题,所以对于近期演示上会有问题。
请问顾问在此问题尚无法解决时,有没有什么建议的作法,
让透视表可以动态的取得〔产耗明细〕所有的资料
(因每次查询条件不同,资料笔数是不同的,无法写死资料范围)
我目前是将资料范围先设定一个较大的列数,例如5000笔,
当然若是产耗明细仍超过5000笔时,透视表就会无法完整体现。
这部份再麻烦顾问协助建议可行作法,以便可以达到透视表功能的演示。
谢谢
Joestar.Xu
发表于 2023-12-12 09:40:01
您好,目前该问题还在调研中,暂无相关临时解决方案,待调研完毕我们会根据调研结果进一步寻找临时的解决方案,有进展我会第一时间回复您。
Joestar.Xu
发表于 2023-12-12 09:45:46
本帖最后由 Joestar.Xu 于 2023-12-12 09:52 编辑
另外,根据您上述的问题,我这边测试了一下使用table和custom name去设置PivotTable的数据源时,在MS Excel中,custom name在扩展数据时不会将变化应用于PivotTable,但是table可以;在SpreadJS中,custom name和table都不可以,针对该问题我们也将研判一下是否是一个Bug,后续有进展我会再次跟进。
问题编号:SJS-21845
Joestar.Xu
发表于 2023-12-14 10:53:12
您好,您可以根据下图来实现数据源动态变化后更新透视表的需求:
Yu-Xian
发表于 2023-12-15 08:33:11
Joestar.Xu 发表于 2023-12-14 10:53
您好,您可以根据下图来实现数据源动态变化后更新透视表的需求:
您好:
根据顾问提供的影片,步骤如下
(1)要先建立一个表名称Table1
(2)建立透视表,选择Table1
(3)进行透视表的栏位拖拉选择
不知是否理解错误。
这样的操作,跟我之前操作步骤好像一样,
有没有什么细节是我没执行到,
导致无法透过表格名来更新透视表呢?
还是说只能透过spreadJS元件进行透视表建立,
不能使用excel建立好透视表再上传?
再麻烦顾问协助指导一下
谢谢
Joestar.Xu
发表于 2023-12-15 11:26:56
您好,我这边查阅了一下您之前提供的信息,我注意到您并没有直接创建一个table,而是创建了一个custom name,并以这个custom name的区域为数据源去创建透视表。
而在我之前的回复中,我使用了SpreadJS创建了一个table,然后以这个table为数据源创建透视表,更新table的数据,刷新透视表,透视表的内容发生了变化,这是符合您的预期的。
随后您提到Excel是否能够满足这样的需求,我这边测试了一下,也是可以的。
导入到SpreadJS中后,给表格增加数据:
根据测试的结果,Excel制作好的透视表,导入到SpreadJS中更新数据源,透视表的数据是可以正常刷新的,符合您的预期。
之所以使用custom name无法满足增加数据的需求,猜测是因为custom name在设置完毕后其范围就已经被固定,无法通过添加数据的操作自动扩大custom name的范围;而使用table做为数据源时,可以通过给table增加数据的方式自动扩大table的范围,从而使得透视表的数据源范围增加,达到动态更新的效果。
Yu-Xian
发表于 2023-12-18 16:03:52
Joestar.Xu 发表于 2023-12-15 11:26
您好,我这边查阅了一下您之前提供的信息,我注意到您并没有直接创建一个table,而是创建了一个custom name ...
顾问您好:
根据提供的建议,改采用table作为数据源(表格一)
我们的案例场景如下:
(1)表格一的数据是取得另外一个工作簿的工作表,然后将资料覆盖到此工作表中(不是人工在画面上进行复制贴上)
我的作法是宣告一个暂存的spreadJS元件,将另一个工作表复制后透过toJSON和fromJSON方式
进行工作表内容的替换
(2)透视表根据复制的工作表数据进行展示。
这样的作法,替换完成后,〔表格一〕的列数是不会自动扩充的(如下图,表格列数仍维持在第6列)。
如果要让表格一的列数自动扩充,是否要进行特殊处理,
例如判断目前工作表的最多列数,然后将table进行resize
或者有什么好的作法
不知道这样的说明,是否能够了解呢
另外custom name的方案 未来是否可能支援呢
以上再麻烦顾问协助厘清。
谢谢
Joestar.Xu
发表于 2023-12-18 17:03:42
您好,按照您说的,我尝试复现您的问题:
我先创建了一个xlsx文件,在其中的Sheet1上添加了一个Table,并添加了一些数据。
然后将其导入到Demo中,并参考您的代码将它导入到了Spread中,可以看到,并没有出现无法自动扩展的现象,不太清楚为什么会出现这样的情况,能否请您再详细描述一下如何复现您的这个问题吗?最好能够提供一个可以复现您问题的Demo。
如果想直接根据最多行数去resize的话,可以先使用getUsedRange接口(https://demo.grapecity.com.cn/sp ... ksheet#getusedrange)获取数据范围,然后使用resize接口(https://demo.grapecity.com.cn/sp ... TableManager#resize)去修改table的范围即可。
custom name的问题目前已初步判定是一个Bug,正在修复当中,可以明确的是,custom name将不会像table一样自动扩展,只能根据值的修改而刷新透视表。
Yu-Xian
发表于 2023-12-19 10:00:08
Joestar.Xu 发表于 2023-12-18 17:03
您好,按照您说的,我尝试复现您的问题:
我先创建了一个xlsx文件,在其中的Sheet1上添加了一个Table, ...
顾问好:
我操作方式如下:
1. 在枢纽分析新模板C.xlsx这份档案,建置一个〔表格一〕
2. 复制来源档.xlsx中的Sheet1工作表
3.将复制来源写入枢纽分析新模板C的〔产耗明细〕工作表
目前我执行时来源资料有确实读取并覆盖到〔产耗明细〕工作表
但是产耗明细工作表上的〔表格一〕并未自动扩充。
我把我操作的两份档案提供给顾问您参考,
实在不好意思在这个问题上一直打转,再麻烦顾问协助
谢谢
Joestar.Xu
发表于 2023-12-19 11:52:25
您好,不太明确您具体是怎么复制粘贴的,我这边尝试使用Ctrl+C和Ctrl+V来复制粘贴,效果如下:
刷新透视表后:
仍旧无法复现您的问题,猜测是您项目本身对Table做了一些设置,如没有打开自动扩展:
综上,仍然未能复现出您的问题,如您是通过其他方式进行的复制粘贴,还请您再详细描述一下,以使我这边复现您的问题帮您解决。