Clark.Pan 发表于 2022-8-1 00:44:53

插入复制上一行内容的场景优化解决方案

本帖最后由 Clark.Pan 于 2022-8-1 09:05 编辑

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


完整的示例见附件。


页: [1]
查看完整版本: 插入复制上一行内容的场景优化解决方案