找回密码
 立即注册

QQ登录

只需一步,快速开始

600

注册会员

23

主题

42

帖子

175

积分

注册会员

积分
175
600
注册会员   /  发表于:2023-12-21 09:51  /   查看:2542  /  回复:3
4金币
本帖最后由 Joestar.Xu 于 2023-12-22 11:40 编辑


产品:SpreadJS

企业微信截图_17031233644118.png408290099.png 能不能点击保存的时候,将保存的数据传给服务端,然后我再请求服务端接口拿到数据渲染表单

最佳答案

查看完整内容

您可以根据您的具体场景进行选择,如果您的数据量不大,那么在用户点击保存时,您可以通过spread.toJSON()将当前工作簿以json字符串的方式传递给后端保存起来。等需要使用时,再通过spread.fromJSON("之前保存的json字符串")来进行加载即可。 如果您的数据量比较大,您可以将用户的数据以数据流的形式传递给后端,后端再将该数据流写成文件落盘。其中数据流比较推荐最新的sjs文件格式的数据流,该格式是V16的新增的文件格式, ...

3 个回复

倒序浏览
最佳答案
最佳答案
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-12-21 09:51:22
来自 4#
600 发表于 2023-12-21 14:43
谢谢你的答复,那我应该向后端传些什么参数,以什么格式呢,以便于前端方便渲染呢

您可以根据您的具体场景进行选择,如果您的数据量不大,那么在用户点击保存时,您可以通过spread.toJSON()将当前工作簿以json字符串的方式传递给后端保存起来。等需要使用时,再通过spread.fromJSON("之前保存的json字符串")来进行加载即可。

如果您的数据量比较大,您可以将用户的数据以数据流的形式传递给后端,后端再将该数据流写成文件落盘。其中数据流比较推荐最新的sjs文件格式的数据流,该格式是V16的新增的文件格式,相比于之前其他的文件格式导入导出性能提升很大。具体可以参考这篇文章来实现:https://gcdn.grapecity.com.cn/showtopic-187149-1-1.html
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-12-21 10:42:58
2#
您好,您可以通过在初始化设计器时旧重写导出操作的逻辑来实现您的需求。只要监听到用户有导出成某类文件的操作,您就去和后端进行数据传输即可
  1. // 导出操作自定义逻辑
  2. const fileMenuPanelCommand = GC.Spread.Sheets.Designer.getCommand(GC.Spread.Sheets.Designer.CommandNames.FileMenuPanel);// 获取文件按钮表盘
  3. const oldExecuteFn = fileMenuPanelCommand.execute;// 执行按钮获取
  4. // 重写执行逻辑
  5. fileMenuPanelCommand.execute = function (context, propertyName, newValue) {
  6.     console.log(context)
  7.     console.log(propertyName);
  8.     console.log(newValue);
  9.     switch (propertyName) {
  10.         case 'button_save_sjs':// 保存成sjs文件
  11.             console.log("导出成sjs文件");
  12.             // TODO 执行自己的一些操作
  13.             break;
  14.         case 'button_export_excel':// 保存成Excel文件
  15.             console.log("导出成excel文件");
  16.             // TODO 执行自己的一些操作
  17.             break;
  18.         case 'button_export_csv':// 保存成CSV文件
  19.             console.log("导出成csv文件");
  20.             // TODO 执行自己的一些操作
  21.             break;
  22.         case 'button_save_pdf':// 保存成PDF文件
  23.             console.log("导出成pdf文件");
  24.             // TODO 执行自己的一些操作
  25.             break;
  26.         case 'button_save_javascript':// 保存成javascript文件
  27.             console.log("导出成javascript文件");
  28.             // TODO 执行自己的一些操作
  29.             break;
  30.         case 'button_save_ssjson':// 保存成ssjson文件
  31.             console.log("导出成ssjson文件");
  32.             // TODO 执行自己的一些操作
  33.             break;
  34.     }
  35.     oldExecuteFn.apply(this, arguments);
  36. }
  37. const config = GC.Spread.Sheets.Designer.DefaultConfig;
  38. config.commandMap = {
  39.     fileMenuPanel: fileMenuPanelCommand
  40. }
  41. var designer = new GC.Spread.Sheets.Designer.Designer(_getElementById("gc-designer-container"), config);
复制代码


回复 使用道具 举报
600
注册会员   /  发表于:2023-12-21 14:43:09
3#
Richard.Huang 发表于 2023-12-21 10:42
您好,您可以通过在初始化设计器时旧重写导出操作的逻辑来实现您的需求。只要监听到用户有导出成某类文件的 ...

谢谢你的答复,那我应该向后端传些什么参数,以什么格式呢,以便于前端方便渲染呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部