在excel工作簿之间复制数据确实很慢

时间:2015-04-07 16:23:13

标签: excel performance delphi

Delphi XE6,Excel 2013. Win 8.1

我正在使用Delphi在两个工作簿之间复制数据(最终结果是我需要一个新的.xlsx文件,带有一部分数据。然后保存新的工作簿。)复制10行需要18到19之间秒....我的测试复制相同的行...时间是直接调用(而不是在Delphi调试器中运行。

 StartingWorkBook := XLApp.ActiveWorkbook;
 NewWorkbook := XLApp.WorkBooks.Add(EmptyParam, LOCALE_USER_DEFAULT);

 for j := 1 to 10 do
  begin
    StartingWorkbook.Sheets[1].Range['A6', 'A6'].EntireRow.Copy(NewWorkBook.Sheets[1].Range['A12','A12'].EntireRow;         
  end;

StartingWorkbook和NewWorkbook都定义为OleVariants。

我可以做些什么来加快速度?这非常慢。我意识到OleVariants并不是最快的,但每行复制差不多2秒是荒谬的。

其他数据点: 退出Excel时,我收到一条错误消息“图片太大,将被截断”。经过调查,似乎还有另一个程序垄断了剪贴板。当我在另一台计算机上运行相同的代码时,它运行良好... 108毫秒。我卸载了TeamViewer(这是一个已知的罪魁祸首),但仍然没有发现问题......

感谢那些试图提供帮助的人。这是一个令人沮丧的问题...

1 个答案:

答案 0 :(得分:0)

已解决:关闭Excel时,与“图片太大。将被截断”错误相关的问题。我发布的代码运行正常。谷歌搜索显示TeamViewer的许多问题。我卸载了TeamViewer,这并没有解决我的错误。我不得不重新安装它,然后转到选项/高级,关闭剪贴板同步,然后停止/重新启动Teamviewer。

感谢所有试图帮助解决这个问题的人,特别是Ken White。