找回密码
 立即注册

QQ登录

只需一步,快速开始

大胸弟

注册会员

18

主题

54

帖子

166

积分

注册会员

积分
166
大胸弟
注册会员   /  发表于:2023-2-7 15:00  /   查看:3257  /  回复:18
1金币
本帖最后由 Ellia.Duan 于 2023-2-13 14:53 编辑

我是通过以下代码添加了集算表

  1. var dataManager = spread.dataManager();
  2. var myTable = dataManager.addTable("myTable", {
  3.     remote: {
  4.         read: {
  5.             url: "xxx"
  6.         }
  7.     },
  8.     schema: {
  9.         columns: columnobj
  10.     },
  11.     autoSync:true
  12.             });
  13. var mySheet = spread.addSheetTab(0, nsheetname, GC.Spread.Sheets.SheetType.tableSheet);
  14.             myTable.fetch().then(function () {
  15.     var view = myTable.addView("myView");
  16.     mySheet.setDataView(view);
  17.     updatePivotTable(spread,nsheetname)
  18.             });
复制代码
设计完的excel进行保存,我检查了一下报表文件,集算表以物理形式保存了下来,在使用的时候我需要可以控制这个集算表的数据是否重新加载,应该怎么操作呢

18 个回复

倒序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-2-7 18:15:38
沙发
本帖最后由 Ellia.Duan 于 2023-2-7 18:17 编辑

您看下附件中的demo ,是否可以解决您的问题。
如果未能解决您的问题,您是否可以再详细描述下您的问题,以及这句话”集算表以物理形式保存了下来“是什么意思呢?

数据更新.html

3.72 KB, 下载次数: 124

回复 使用道具 举报
大胸弟
注册会员   /  发表于:2023-2-8 09:02:53
板凳
是这样的
我发现我做好的excel每次打开的时候,集算表所关联的dataManager.table都会通过url重新获取一遍数据
比如我在做的时候集算表拿了1W条数据(可能需要1分钟),通过spread.toJSON()把excel保存起来
查看的时候spread.fromJSON(xxx)打开excel的时候又会去获取1W条最新的数据(又需要等一分钟),这样查看的时候效率太低了,我需要可以控制集算表要不要重新取数
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-2-8 13:45:31
地板
您这边拿到集算表的1万条数据后,通过通过spread.toJSON(),导出为excel文件,下次在需要的时候 导入excel文件,此时执行的是spread.fromJSON(xxx) 这行代码。
想问下您,为什么fromJSON后,您又执行fetch等代码呢?fromJSON后可以重新渲染集算表。

是否是您导出的时候 没有携带数据源?可以参考这个
image.png49064635.png

https://demo.grapecity.com.cn/sp ... mport-export/purejs
回复 使用道具 举报
大胸弟
注册会员   /  发表于:2023-2-8 14:02:41
5#
我通过提供的属性进行了测试,还是有同样的问题

1.我并没有在fromJSON后,执行fetch方法
2.我测试的方式是,例如我在创建的是读了1千条数据,保存好之后,我在fromJSON之前,我将取数接口调整为1万条,然后fromJSON后我发现集算表中的数据变成了1W条(没有fetch)
3.现在保存的字符串为var jsonStr = JSON.stringify(spread.toJSON({ includeBindingSource: true, saveAsView: true }));
查看的时候var reportobj = JSON.parse(result)

                        spread.fromJSON(reportobj);

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-2-8 16:06:42
6#
建议您留下联系方式,电话沟通一下。
回复 使用道具 举报
大胸弟
注册会员   /  发表于:2023-2-9 11:00:16
7#

姓:邓
电话:15217665908
回复 使用道具 举报
大胸弟
注册会员   /  发表于:2023-2-9 11:08:28
8#
这个问题这么复杂吗,还是我没有描述清楚
集算表其实是通过数据源获取数据
image.png716184692.png

现在每次读取excel(也就是fromJSON)的时候数据源都会去重新GET一遍数据(这样效率太低了),我需要可以控制他

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-2-9 15:57:22
9#
您的问题已描述清楚,这边需要调研下是否有其他解决方案,会尽快回复您。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-2-9 17:54:04
10#
本帖最后由 Ellia.Duan 于 2023-2-9 17:56 编辑

经过调研,有如下结果:
1、您这边提到一万多条数据,如果将其保存在toJSON后的json中,那么json文件将会十分巨大,导入json文件的时间将大大超过一分钟。所以SpreadJS暂不会考虑通过此方式来实现您的需求。
2、如果将您的一万条数据保存至外部,比如浏览器中,出于安全考虑,SpreadJS不会有这样子的功能:将用户通过后端接口请求到数据缓存到浏览器中。这样子对用户极不负责。
但是您这边可以自己去操作缓存,
在这个链接中https://demo.grapecity.com.cn/sp ... dle-requests/purejs




您可以修改这个read,但是这种方式也不推荐您使用。
  1. read: function () {
  2. if(browser_cache_enable){

  3. return browser_cache;

  4. }
复制代码



回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部