找回密码
 立即注册

QQ登录

只需一步,快速开始

LIUZHIPENG

注册会员

7

主题

30

帖子

115

积分

注册会员

积分
115
LIUZHIPENG
注册会员   /  发表于:2023-2-21 17:06  /   查看:2589  /  回复:13
1金币
本帖最后由 LIUZHIPENG 于 2023-2-21 19:56 编辑

产品功能点:

1.从ssjson 中加载模板,然后获取每一行数据,使用setArray写数,对有权限的单元格样式修改,单元格


第一次加载完成之后,要看到公式,用了增量加载,暂停绘制,暂停计算,还是比较慢
image.png282636718.png
image.png266684569.png

Volume Plan_Routine_2023 0+18.ssjson

15.02 MB, 下载次数: 403

loadTest.zip

2.09 MB, 下载次数: 467

13 个回复

正序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-22 16:58:52
14#
您在导入sjs文件时,设置"calcOnDemand"为true。
回复 使用道具 举报
LIUZHIPENG
注册会员   /  发表于:2023-2-22 14:52:16
13#
本帖最后由 LIUZHIPENG 于 2023-2-22 14:54 编辑
Lynn.Dou 发表于 2023-2-21 17:07
sjs文件是通过open方法加载的,不同于原先的fronJSON传参为json数据,open方法传参应为文件流(类似于此前 ...

你好,方便远程嘛,我试了sjs 导入后,设置一个单元格的数据,都很慢,将近一分钟
image.png995679626.png

image.png262273558.png
回复 使用道具 举报
LIUZHIPENG
注册会员   /  发表于:2023-2-22 13:51:18
11#
本帖最后由 LIUZHIPENG 于 2023-2-22 13:52 编辑
Lynn.Dou 发表于 2023-2-22 11:04
测试了您的demo,正如1楼所述,在V15版本中没有更好的优化空间了。
建议您升级V16,使用sjs文件格式,在性 ...

能给我一个怎么引入sjs的例子嘛,我是通过直接请求服务器文件去加载的
  1. spreadObj.suspendPaint()
  2.         spreadObj.suspendCalcService(true)
  3.         let self = this
  4.         const loading = this.$loading({
  5.           lock: true,
  6.           text: '请稍候',
  7.           background: 'rgba(255,255,255,0.5)'
  8.         })
  9.         var excelFilePath = '/spreadExcel/upload/template/volume/bigFile.sjs'
  10.         // var excelFilePath = '/spreadExcel/upload/' + SSJsonName
  11.         // var excelFilePath = ssJsonAddress+'/upload/' + SSJsonName
  12.         var xhr = new XMLHttpRequest()
  13.         xhr.open('GET', excelFilePath, true)
  14.         xhr.responseType = 'arraybuffer'
  15.         //清除之前的status
  16.         document.getElementById('statusBar').innerHTML = ''
  17.         //增量加载
  18.         let statusBar = new GC.Spread.Sheets.StatusBar.StatusBar(document.getElementById('statusBar'))
  19.         statusBar.bind(spreadObj)
  20.         statusBar.remove('cellMode')
  21.         let loadingStatus = new LoadingStatus('LoadingStatus', { tipText: 'LoadingStatus' })
  22.         statusBar.add(loadingStatus)
  23.         xhr.onload = async function (e) {
  24.           if (this.status == 200) {
  25.             spreadObj.import(
  26.               this.response,
  27.               function () {
  28.                 console.log("success");
  29.                 // success callback to do something
  30.               },
  31.               function (e) {
  32.                 console.log(e); // error callback
  33.               },
  34.             );
  35.             // await spreadObj.fromJSON(this.response,{
  36.             //   doNotRecalculateAfterLoad: false,
  37.             //   incrementalLoading: {
  38.             //     loading: function (progress) {
  39.             //       loadingStatus.updateProgress(progress)
  40.             //     },
  41.             //     loaded: function () {
  42.             //       loadingStatus.updateText('Ready')
  43.             //       loading.close()
  44.             //       self.dataEntry()
  45.             //     }
  46.             //   }
  47.             // })
  48.             
  49.           } else {
  50.             loading.close()
  51.             self.$message.error('加载模板失败,请联系系统管理员')
  52.           }
  53.         }
  54.         xhr.send()
  55.         //按需求执行计算
  56.         spreadObj.options.calcOnDemand = true
  57.         //spread 恢复绘制、恢复计算
  58.         spreadObj.resumeCalcService(true)
  59.         spreadObj.resumePaint()
复制代码


回复 使用道具 举报
LIUZHIPENG
注册会员   /  发表于:2023-2-22 13:50:05
10#
LIUZHIPENG 发表于 2023-2-22 12:45
引入spreadDesigner 资源后报Cannot read properties of undefined (reading 'DR')

我知道了,没引正确
应该是这样引入
<link rel="stylesheet" href="./resource/gc.spread.sheets.16.0.2.css">
    <link rel="stylesheet" href="./resource/gc.spread.sheets.excel2016colorful.16.0.2.css">
    <script src="./resource/gc.spread.sheets.all.16.0.2.min.js"></script>
    <script src="./resource/gc.spread.sheets.resources.zh.16.0.2.min.js"></script>
    <script src="./resource/gc.spread.sheets.io.16.0.2.min.js"></script>

这样上边有import ,但是还是提示文件格式错误
回复 使用道具 举报
LIUZHIPENG
注册会员   /  发表于:2023-2-22 12:45:07
9#
本帖最后由 LIUZHIPENG 于 2023-2-22 12:47 编辑
LIUZHIPENG 发表于 2023-2-22 12:06
这个可以了,但是spread上没有 import 函数啊

引入spreadDesigner 资源后报Cannot read properties of undefined (reading 'DR')
image.png398742980.png
回复 使用道具 举报
LIUZHIPENG
注册会员   /  发表于:2023-2-22 12:06:06
8#
LIUZHIPENG 发表于 2023-2-22 11:29
我这是已经在V16的环境下了,你们给的代码我加上了部分业务代码
不知道xhr.responseType = "blob"; 写的 ...

这个可以了,但是spread上没有 import 函数啊
回复 使用道具 举报
LIUZHIPENG
注册会员   /  发表于:2023-2-22 11:29:16
7#
本帖最后由 LIUZHIPENG 于 2023-2-22 11:30 编辑
Lynn.Dou 发表于 2023-2-22 11:26
需要升级V16使用,可以参考上楼提供的链接文章,了解该新特性的作用。
相关资源文件可以在npm下载,另已同 ...

我这是已经在V16的环境下了,你们给的代码我加上了部分业务代码
不知道xhr.responseType = "blob"; 写的不对嘛
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-22 11:26:10
6#
需要升级V16使用,可以参考上楼提供的链接文章,了解该新特性的作用。
相关资源文件可以在npm下载,另已同步与您对接的销售同事苏经理将V16.0.3的安装包发送给您。
回复 使用道具 举报
LIUZHIPENG
注册会员   /  发表于:2023-2-22 11:19:20
5#
本帖最后由 LIUZHIPENG 于 2023-2-22 11:20 编辑
Lynn.Dou 发表于 2023-2-22 11:04
测试了您的demo,正如1楼所述,在V15版本中没有更好的优化空间了。
建议您升级V16,使用sjs文件格式,在性 ...

我把这个sjs 文件放到服务器里,然后请求加载,读取的时候提示文件格式错误
image.png979606628.png
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-22 11:04:23
4#
测试了您的demo,正如1楼所述,在V15版本中没有更好的优化空间了。
建议您升级V16,使用sjs文件格式,在性能上会有较大的提升。(1楼已提供sjs测试文件)
具体可参考这篇文章:
https://gcdn.grapecity.com.cn/fo ... 4&fromuid=59119
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部