找回密码
 立即注册

QQ登录

只需一步,快速开始

Yu-Xian
注册会员   /  发表于:2023-12-20 08:45:43
21#
Joestar.Xu 发表于 2023-12-19 11:52
您好,不太明确您具体是怎么复制粘贴的,我这边尝试使用Ctrl+C和Ctrl+V来复制粘贴,效果如下:

顾问您好:

说明一下我们的操作情境
(1)我们的上传模板包含两个部分,
    一个折页是来源折页
    image.png348409117.png
    另一个折页是根据数据来源产生的透视表,或者用户自行根据需求编制公式从数据源折页取数计算
    image.png703314208.png


(2)数据来源,我们是提供用户上传线下excel后,将整个档案储存到后端资料库。
     也就是前面提供的来源档.xlsx档案
      image.png67463988.png

(3)用户操作时系统会先读取模板
    image.png511495666.png

(4)并根据用户输入的条件至后端找出符合的数据来源档案(来源档.xlsx)
    也就是下面传入的blob
    image.png189189757.png

(5)接着开启数据来源档,根据工作表名称取得工作表内容,转换成JSON
      image.png840659789.png

(6)找到原本模板中属于数局来源的折页,也就是〔产耗明细〕
         将此折页用步骤5转换的JSON替换
      image.png588930053.png

(7)这时原本spreadJS上〔产耗明细〕工作表内容已经被提换成来源档xlsx的Sheet1内容
      -->我之前说的未自动扩展,就是这边显示的,当内容用fromJSON写入后,
           表格未扩展,还是维持原本的列数
      -->这边不是让用户在画面上进行复制贴上的操作,而是读取档案自动提换工作表内容
      image.png91754759.png

以上是针对我们操作情境的说明,以及遇到的问题,再麻烦顾问看看我们是否需要做什么调整。

谢谢

image.png232091368.png
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-12-20 10:27:52
22#
您好,您的使用场景我这边已经了解了,我看了您提供的代码,以及结合我之前的复现情况,需要您提供一个完整的可以复现您问题的Demo,我们这边根据Demo调研后根据实际情况才能给您详细的解决方案。
回复 使用道具 举报
Yu-Xian
注册会员   /  发表于:2023-12-20 11:00:05
23#
Joestar.Xu 发表于 2023-12-20 10:27
您好,您的使用场景我这边已经了解了,我看了您提供的代码,以及结合我之前的复现情况,需要您提供一个完整 ...

顾问您好:
       提供demo资料如附档。
       1.操作影片
       2.来源档
       3.模板
      
        再麻烦看看是否需要提供什么资料

         谢谢


2023-12-20 10-55-11.mp4

2.15 MB, 下载次数: 2024

来源档.xlsx

422.12 KB, 下载次数: 2015

枢纽分析新模板C.xlsx

13.92 KB, 下载次数: 1970

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-12-20 11:10:50
24#
您好,另外还需要您提供完整的代码,因为根据您之前提供的代码我无法复现出您的问题,所以需要您提供完整的代码,复现后以进一步调研。
回复 使用道具 举报
Yu-Xian
注册会员   /  发表于:2023-12-20 11:24:55
25#
Joestar.Xu 发表于 2023-12-20 11:10
您好,另外还需要您提供完整的代码,因为根据您之前提供的代码我无法复现出您的问题,所以需要您提供完整的 ...

顾问您好:
      提供程式如附档 zafjBR120.jsp
      其中载入数据源的程式是2352行
      copySheetToSpread(blob,sheetNameA,useSheet)

     看看这样提供的是否足够

      谢谢

zaftDataTransition.jss

1.05 KB, 下载次数: 1123

zafjBR120.jsp

83.28 KB, 下载次数: 2197

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-12-20 14:40:03
26#
您好,我查看了您提供的信息,目前如果要实现您的需求,可以直接根据最多行数去resize的,实现方法为:先使用getUsedRange接口获取数据范围,然后使用resize接口去修改table的范围即可。

参考链接:https://demo.grapecity.com.cn/sp ... ksheet#getusedrange
https://demo.grapecity.com.cn/sp ... TableManager#resize

这个方法在之前提过,您可以参考一下,具体的代码可以写在copySheetToSpread这个方法的后面。
回复 使用道具 举报
Yu-Xian
注册会员   /  发表于:2023-12-21 11:17:02
27#
Joestar.Xu 发表于 2023-12-20 14:40
您好,我查看了您提供的信息,目前如果要实现您的需求,可以直接根据最多行数去resize的,实现方法为:先使 ...

顾问您好:
       应急方案就根据您的建议暂时采用table resize的作法。
       进行工作表复制时,
       1. 找出该工作表所有表格
       2. 取得各表格的起讫行列数
       3. 逐列判断是否有值,没有值表示表格已到最后一列
       4. 执行 sheet.tables.resize

       修改后程式 麻烦顾问看看这样作法是否可行?效能方面会不会有太大影响(因为每列依序判断值是否存在)
       image.png610108947.png

       image.png526692504.png

       另外,若custom name的问题若后续修订完成,再烦请告知。

       谢谢



回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-12-21 13:55:35
28#
您好,我看了您修改后的代码,您是使用了循环来判断数据的范围,这样在数据量较小的时候可能不会有性能问题,但是一旦数据量较大时会出现性能上的浪费。

推荐您使用getUsedRange接口来获取sheet上所有数据的范围,效果如下图:

image.png219251097.png

通过这个接口去获取数据范围能获得比循环更好的性能表现。

custom name的问题后续有进展的话,我会在本帖中回复您。
回复 使用道具 举报
Yu-Xian
注册会员   /  发表于:2023-12-21 16:21:56
29#
Joestar.Xu 发表于 2023-12-21 13:55
您好,我看了您修改后的代码,您是使用了循环来判断数据的范围,这样在数据量较小的时候可能不会有性能问题 ...

您好:

      会采用循环的方式主要是因为无法确定用户模板设计,
      是否同一个工作表上会使用多个表格。
      所以我是针对每个表格进行各自列数的判断。

      这边我们看是否透过教育训练方式,请用户每个工作表配置一个表格即可
      就可以采用getUsedRange方式。
     目前透视表我就先这样处理,谢谢顾问这几天的协助。


      custom name的问题就等后续回复。
      
      谢谢

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-12-21 16:45:47
30#
好的,不客气哈,祝您生活愉快~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部