找回密码
 立即注册

QQ登录

只需一步,快速开始

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-1 00:44  /   查看:2177  /  回复:0
本帖最后由 Clark.Pan 于 2022-8-1 09:05 编辑

需求:
想要在代码addRow的时候复制上一行的内容。并且该操作需要大量进行,需要一次添加上千行。
之前用CopyTo进行复制,需要一行一行来复制,性能很差,花费时间较长,复制3000行大约需要500秒。
解决方案:
CopyTo本身不适用与大批量数据的复制粘贴。这里建议使用clipboardPaste命令来完成, 好处是不需要一行一行复制粘贴,节约了大量时间。
  1. spread.commandManager().execute({cmd: "clipboardPaste", sheetName: "明细表", fromSheet: rowsSheet, fromRanges: fromRange, pastedRanges: toRanges, isCutting: false, clipboardText: "", pasteOption: GC.Spread.Sheets.ClipboardPasteOptions.formulasAndFormatting});
复制代码
由于实例中存在大量的公式计算,用户希望保留样式和公式,不需要粘贴值。于是pasteOption可以按照上述设置
  1. GC.Spread.Sheets.ClipboardPasteOptions.formulasAndFormatting。
复制代码
如果有其他的需求,可以跟据ClipboardPasteOptions的选项按需选取。
另外,示例中还存在着大量的数字需要在添加行时动态序列填充,故使用fillAuto方法用来操作序列填充序号
  1. rowsSheet.fillAuto(new GC.Spread.Sheets.Range(1006, 1, 1, 1),new GC.Spread.Sheets.Range(1006, 1, 2001, 1), {fillType:GC.Spread.Sheets.Fill.FillType.auto, series:GC.Spread.Sheets.Fill.FillSeries.column, direction:GC.Spread.Sheets.Fill.FillDirection.down});
复制代码
image.png718299560.png


完整的示例见附件。


CopyTo复制插入行.zip

198.36 KB, 下载次数: 90

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部