请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

AirCat
金牌服务用户   /  发表于:2025-7-4 18:30  /   查看:83  /  回复:6
1金币
请问有将整个table对象暂存,在执行一些其他内容后再将这个table恢复的办法吗?

6 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:5 天前
沙发
您好,
您结合实际业务详细描述下为什么会有此需求,以便进一步调研合适的方案。
回复 使用道具 举报
AirCat
金牌服务用户   /  发表于:5 天前
板凳
Lynn.Dou 发表于 2025-7-7 10:24
您好,
您结合实际业务详细描述下为什么会有此需求,以便进一步调研合适的方案。

我们需要编辑这个table的一些信息,比如tableName,或者添加一些公式列到这个table,但是添加的内容不能保证正确性,程序上try住这段代码,如果catch到error想要回退到table的上个正确的状态
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:5 天前
地板
本帖最后由 Lynn.Dou 于 2025-7-8 09:02 编辑

我尝试对table对象序列化,但是对于合并单元格等复杂结构序列化前后会丢失,原因大概为 单元格合并,table值等是存在单元格上的,而并非table。
有一个思路可以参考下,新建一个深度隐藏sheet,将table复制在sheet中用于备份,需要回退的时候再重新复制粘贴回来。
回复 使用道具 举报
AirCat
金牌服务用户   /  发表于:5 天前
5#
Lynn.Dou 发表于 2025-7-7 16:59
我尝试对table对象的序列化,但是对于合并单元格等复杂结构序列化前后会丢失,原因大概为 单元格合并,tabl ...

可以提供一个代码片段参考下吗
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:4 天前
6#
稍后我整理下发您。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:4 天前
7#
您参考下方代码,核心是 clipboardPaste 命令,可以类比为UI行为的复制粘贴操作:
  1. var sheet = spread.getActiveSheet();
  2.                 var table = sheet.tables.all()[0];
  3.                 var fromRanges = [table.range()];
  4.                 var toRanges = [new GC.Spread.Sheets.Range(0, 0, 1, 1)];
  5.                 // 新建深度隐藏sheet
  6.                 var newSheet = new GC.Spread.Sheets.Worksheet("temp");
  7.                 spread.addSheet(0, newSheet);
  8.                 spread.commandManager().execute({ cmd: "clipboardPaste", sheetName: newSheet.name(), fromSheet: sheet, fromRanges: fromRanges, pastedRanges: toRanges, isCutting: false, clipboardText: "", pasteOption: GC.Spread.Sheets.ClipboardPasteOptions.all });
  9.                 spread.getSheet(0).visible(GC.Spread.Sheets.SheetTabVisible.veryHidden);
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部