找回密码
 立即注册

QQ登录

只需一步,快速开始

feichunhuan

金牌服务用户

7

主题

35

帖子

200

积分

金牌服务用户

积分
200
feichunhuan
金牌服务用户   /  发表于:2024-6-21 13:37  /   查看:1070  /  回复:5
10金币
本帖最后由 feichunhuan 于 2024-6-21 13:39 编辑

求助内容如下:


现在是将JSON格式的数据存在活字格表的字符字段中,通过对象操作命令将JSON数据做抽取、合并等操作,当JSON内容的字符数很多的时候,打开活字格表性能变得非常慢,处于几乎卡死的状态,将来数据多了,更无法想象。

看看能不能将JSON作为文件存在服务器上,然后通过活字格的什么命令对其读取并进行处理,比如下面JSON格式的数据文件有3个,fin.json,mkt.json以及pm.json ,需要拿到fin.json,mkt.json以及pm.json 3个文件中的FIN sheet,MKT sheet和PM sheet,然后合并成一个新的combined.json文件,新的combined.json

用文件处理只是一种方式,如果有更好的处理方式当然更好,还请大佬们出手相助,十分感谢!

{
  "version": "16.0.6",
  "sheetCount": 6,
  "customList": [],
  "activeSheetIndex": 2,
  "sheets": {
    "PM": {
      "name": "PM",
      "isSelected": true,
      "visible": 0,
      "frozenTrailingRowStickToEdge": true,
      "frozenTrailingColumnStickToEdge": true,
      "theme": "Office",
      "data": {
        "dataTable": {
          "1": {
            "0": {
              "value": "Product"
            },
            "1": {
              "value": "AAA",
              "style": {
                "hAlign": 2
              }
            }
          },
          "2": {
            "0": {
              "value": "Start Year"
            },
            "1": {
              "value": 2025
            }
          },
          "3": {
            "0": {
              "value": "Predict Years"
            },
            "1": {
              "value": 10
            }
          }
        },
        "defaultDataNode": {
          "style": {
            "themeFont": "Body"
          }
        }
      },
      "rowHeaderData": {
        "defaultDataNode": {
          "style": {
            "themeFont": "Body"
          }
        }
      },
      "colHeaderData": {
        "defaultDataNode": {
          "style": {
            "themeFont": "Body"
          }
        }
      },
      "columns": [
        {
          "size": 80
        }
      ],
      "leftCellIndex": 0,
      "topCellIndex": 0,
      "selections": {
        "0": {
          "row": 0,
          "col": 0,
          "rowCount": 1,
          "colCount": 1
        },
        "length": 1
      },
      "rowOutlines": {
        "items": []
      },
      "columnOutlines": {
        "items": []
      },
      "cellStates": {},
      "states": {},
      "outlineColumnOptions": {},
      "autoMergeRangeInfos": [],
      "shapeCollectionOption": {
        "snapMode": 0
      },
      "printInfo": {
        "paperSize": {
          "width": 850,
          "height": 1100,
          "kind": 1
        }
      },
      "index": 0
    },
    "FIN": {
      "name": "FIN",
      "isSelected": true,
      "visible": 0,
      "frozenTrailingRowStickToEdge": true,
      "frozenTrailingColumnStickToEdge": true,
      "theme": "Office",
      "data": {
        "dataTable": {
          "1": {
            "0": {
              "value": "Base Price"
            },
            "1": {
              "value": 1000
            }
          }
        },
        "defaultDataNode": {
          "style": {
            "themeFont": "Body"
          }
        }
      },
      "rowHeaderData": {
        "defaultDataNode": {
          "style": {
            "themeFont": "Body"
          }
        }
      },
      "colHeaderData": {
        "defaultDataNode": {
          "style": {
            "themeFont": "Body"
          }
        }
      },
      "columns": [
        {
          "size": 64
        }
      ],
      "leftCellIndex": 0,
      "topCellIndex": 0,
      "selections": {
        "0": {
          "row": 0,
          "col": 0,
          "rowCount": 1,
          "colCount": 1
        },
        "length": 1
      },
      "rowOutlines": {
        "items": []
      },
      "columnOutlines": {
        "items": []
      },
      "cellStates": {},
      "states": {},
      "outlineColumnOptions": {},
      "autoMergeRangeInfos": [],
      "shapeCollectionOption": {
        "snapMode": 0
      },
      "printInfo": {
        "paperSize": {
          "width": 850,
          "height": 1100,
          "kind": 1
        }
      },
      "index": 1
    },
    "MKT": {
      "name": "MKT",
      "isSelected": true,
      "visible": 1,
      "frozenTrailingRowStickToEdge": true,
      "frozenTrailingColumnStickToEdge": true,
      "theme": "Office",
      "data": {
        "dataTable": {
          "1": {
            "0": {
              "value": "Volume"
            },
            "1": {
              "value": 500
            }
          }
        },
        "defaultDataNode": {
          "style": {
            "themeFont": "Body"
          }
        }
      },
      "rowHeaderData": {
        "defaultDataNode": {
          "style": {
            "themeFont": "Body"
          }
        }
      },
      "colHeaderData": {
        "defaultDataNode": {
          "style": {
            "themeFont": "Body"
          }
        }
      },
      "leftCellIndex": 0,
      "topCellIndex": 0,
      "selections": {
        "0": {
          "row": 0,
          "col": 0,
          "rowCount": 1,
          "colCount": 1
        },
        "length": 1
      },
      "rowOutlines": {
        "items": []
      },
      "columnOutlines": {
        "items": []
      },
      "cellStates": {},
      "states": {},
      "outlineColumnOptions": {},
      "autoMergeRangeInfos": [],
      "shapeCollectionOption": {
        "snapMode": 0
      },
      "printInfo": {
        "paperSize": {
          "width": 850,
          "height": 1100,
          "kind": 1
        }
      },
      "index": 2
    },
  },
  "sheetTabCount": 0,
  "pivotCaches": {}
}

最佳答案

查看完整内容

如果只是设计器卡的话,大佬可以适当减少设计器中测试的数据量,毕竟活字格设计器确实消耗资源会更多一点。 我们的最终目的还是为了让最终用户使用系统时的体验提升~~

5 个回复

倒序浏览
最佳答案
最佳答案
Nathan.guo活字格认证 Wyn认证
超级版主   /  发表于:2024-6-21 13:37:32
来自 6#
feichunhuan 发表于 2024-6-24 13:15
在活字格里面编辑的时候,打开存JSON的表的时候,或者是在活字格编辑器里面下载服务器端数据的时候都非常 ...

如果只是设计器卡的话,大佬可以适当减少设计器中测试的数据量,毕竟活字格设计器确实消耗资源会更多一点。

我们的最终目的还是为了让最终用户使用系统时的体验提升~~
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2024-6-21 17:51:05
2#
大佬,您所述的这个需求,活字格目前没有什么好的方案,看了一下目前插件中只有操作pdf文件的插件。
将多个json格式的文件去进行合并等操作,目前的话得通过代码去扩展实现了,您的业务需求是什么呢,为什么要在表里面存储json格式的内容,然后去处理json格式呢,可以详细的说明一下您的需求,这样我们也可以更好的帮助到您
回复 使用道具 举报
feichunhuan
金牌服务用户   /  发表于:2024-6-22 16:56:14
3#
谢谢Lay,具体的需求可以在线详聊。

我们的解决方案是用到了SpreadJS和活字格两款产品,活字格用于用户登录、身份验证,以及一些后台管理功能和流程流转控制等页面,用活字格这块的开发效率可以大大提升,另外也不需要部署额外的web 服务器等;SpreadJS给用户做数据填报和数据收集,也给了最终用户很大的空间去复用玩转原有的excel模板,对于我们开发者而言也不用管太多里面的公式和计算逻辑。这样一来,数据就变成了JSON格式的了,要么存在活字格表里面,要么以文件的形式存在活字格服务器上面,存在活字格表里面就带来了性能问题。

这里就想看看是不是有更好的处理方式,谢谢!
回复 使用道具 举报
Nathan.guo活字格认证 Wyn认证
超级版主   /  发表于:2024-6-24 11:35:55
4#
大佬,咱们用服务端命令处理得当时候比较卡,那有没有观察过,具体是哪一步卡,是从数据库取数据卡,还是服务端命令处理json卡
回复 使用道具 举报
feichunhuan
金牌服务用户   /  发表于:2024-6-24 13:15:49
5#
Nathan.guo 发表于 2024-6-24 11:35
大佬,咱们用服务端命令处理得当时候比较卡,那有没有观察过,具体是哪一步卡,是从数据库取数据卡,还是服 ...

在活字格里面编辑的时候,打开存JSON的表的时候,或者是在活字格编辑器里面下载服务器端数据的时候都非常卡,用户在前端使用性能还能接受。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部