找回密码
 立即注册

QQ登录

只需一步,快速开始

大胸弟

注册会员

18

主题

54

帖子

166

积分

注册会员

积分
166
大胸弟
注册会员   /  发表于:2023-2-7 15:00  /   查看:3349  /  回复: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-14 09:23:41
19#
大胸弟 发表于 2023-2-13 09:14
我在官网自带的在线Excel编辑器测试了一下,保存的文件也是带了集算表的数据

您好,经过与研发团队讨论,集算表fromJSON后,会进行fetch远程url的操作。这个属于by design。
其次您之前提到的问题,toJSON之后导出的 ssjson 包含工作表模型部分中的数据源,这个属于bug ,我们将在之后的版本中进行修复,修复完成后toJSON导出的ssjson将不包含数据源。本贴将移至bug反馈区域,同时置为保留处理。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-2-13 12:17:13
18#
大胸弟 发表于 2023-2-13 09:14
我在官网自带的在线Excel编辑器测试了一下,保存的文件也是带了集算表的数据

关于此问题需要与研发团队沟通,问题编号是SJS-16904,待有进展会及时通知您。此贴暂时置为保留处理。
回复 使用道具 举报
大胸弟
注册会员   /  发表于:2023-2-13 09:14:04
17#
我在官网自带的在线Excel编辑器测试了一下,保存的文件也是带了集算表的数据

image.png767878112.png
image.png822683410.png
我把这份文件添加到附件了,你们可以在设计器导入试试
虽然这个导出没有配置{ includeBindingSource: true, saveAsView: true },但是其实我测试过,加了和没加,生成的ssjson都会包含集算表数据
你们能否提供一份没有包含集算表数据的ssjson,但是可以在SpreadJs里面正常导入的

xxx.zip

91.27 KB, 下载次数: 125

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-2-10 17:46:13
16#
这边还是无法复现您的问题,是否可以上传个demo 看一下。
回复 使用道具 举报
大胸弟
注册会员   /  发表于:2023-2-10 17:35:59
15#
不知道你那边保存用的是什么方式,我原本读取100条数据,保存之后文件大小是200k左右,然后我把数据接口改成了1000条,保存之后文件时3M多,而且也可以在里面找到集算表的数据
image.png540257873.png

image.png687180785.png

现在保存的字符串为var jsonStr = JSON.stringify(spread.toJSON({ includeBindingSource: true, saveAsView: true }));
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-2-10 15:53:38
14#
大胸弟 发表于 2023-2-10 14:11
这就回到我最开始说的了,spread.toJSON()生成的json文件中,集算表的数据是存在里面的,那为什么我fromJSO ...

您确定toJSON之后包含从get接口获取到的数据吗?

这边测试了下,没有包含这部分数据,如下图所示
1676015559576.jpg221426390.png
集算表从后端接口获取了三条数据,然后toJSON导出json对象,在文本中打开并搜索查询到的数据,是没有的。


回复 使用道具 举报
大胸弟
注册会员   /  发表于:2023-2-10 14:11:36
13#
这就回到我最开始说的了,spread.toJSON()生成的json文件中,集算表的数据是存在里面的,那为什么我fromJSON的时候,一定需要重新get数据呢,如果集算表的数据没有保存在json里面我倒是可以理解
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-2-10 12:32:24
12#
如果您说的不重新get一遍数据,加载后应该是空sheet ,这个是您想要的场景?如果是的话,没有相关属性或者方法。
回复 使用道具 举报
大胸弟
注册会员   /  发表于:2023-2-10 11:41:32
11#
如果我们先不讨论大数据量的情况,就以1000条数据的集算表来说,没有别的属性或者方法可以让我控制fromJSON的时候 数据源要不要重新GET一遍数据吗
回复 使用道具 举报
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下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部