gpt4 book ai didi

excel - Delphi - Excel - 如何加快运算速度

转载 作者:行者123 更新时间:2023-12-02 23:43:22 24 4
gpt4 key购买 nike

我正在Delphi XE6中编写Excel插件。我必须将行从一张纸“复制”到另一张纸。挑战在于我的手术时间比我想象的要长得多。例如,将 500 行(23 列)从一张纸复制到另一张纸需要 28 秒左右...

部分挑战是我必须逐行处理。我有一个 INT 数组,每行一个 INT。 INT 值告诉我是否需要复制该行...

...for loop i ... through entire array....
...if row I am interested in...

// Set the Original Sheet Active
MasterOrigSheet.Select;

// Build my row numbers
SourceRangeCell := 'A' + IntToStr(i);
DestRangeCell := 'A' + IntToStr(DestRowNumber);

// Copy the row from source to destination
MasterOrigSheet.Range[SourceRangeCell, SourceRangeCell].EntireRow.Copy
(NewSheet.Range[DestRangeCell, DestRangeCell].EntireRow);
Inc(DestRowNumber);

有没有更快的方法来做到这一点?我正在复制整行。我没有使用复制/粘贴缓冲区...任何帮助或想法表示赞赏。

最佳答案

目标是限制您需要对 Excel 进行的调用次数。

为此,请利用 Worksheet.Range 属性接受单个字符串中的多个单元格这一事实。使用并集运算符(逗号)一次描述多个单元格。也就是说,在循环中,构建要复制的单元格的逗号分隔列表。然后调用 Range 获取范围引用,并在该单个范围上使用 EntireRow.Copy

此外,避免重复不需要完成的工作。例如,原始工作表应在整个循环中保持选中状态,因此您无需继续告诉 Excel 在每次迭代时选择它。即使该操作没有任何实际效果,您的程序仍然需要完成打包 COM 调用并将其传递给 Excel 的工作。

关于excel - Delphi - Excel - 如何加快运算速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26392078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com