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做了一些设置,如没有打开自动扩展:



综上,仍然未能复现出您的问题,如您是通过其他方式进行的复制粘贴,还请您再详细描述一下,以使我这边复现您的问题帮您解决。
页: 1 [2] 3 4
查看完整版本: [16.2.2]透视表使用问题