notes将数据导出到excel慢

notes将数据导出到excel慢,excel,lotus-notes,lotusscript,Excel,Lotus Notes,Lotusscript,如果我循环浏览10个文档,并用这些文档中的数据填充excel表格,那么有时导出速度慢,有时导出速度快。 这是怎么可能的,这就是我导出数据的方式: Set objExcel = CreateObject("Excel.Application") objExcel.Application.Visible = True Call objExcel.Application.Workbooks.Open(CorDos.CorBestandsnaam) Set xlSheet = objExcel.Appl

如果我循环浏览10个文档,并用这些文档中的数据填充excel表格,那么有时导出速度慢,有时导出速度快。 这是怎么可能的,这就是我导出数据的方式:

Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Visible = True
Call objExcel.Application.Workbooks.Open(CorDos.CorBestandsnaam)
Set xlSheet = objExcel.Application.ActiveWorkbook.Activesheet
然后它会填满细胞


文档位于另一台服务器上的数据库中,此服务器有时也会出现一些I/O问题,这可能也是问题所在?

这不是Lotus Notes的问题,而是典型的excel自动化问题。只需搜索ExcelVBA slow,您就会找到大量关于如何再次加快速度的文章。将内容写入excel的最快方法是:在LotusScript中创建一个二维数组,并将文档值分配给该数组。然后立即写入整个数组。这看起来像这样:

...
Set dc = db.UnprocessedDocuments
...
Redim varArray( dc.Count - 1, NumberOfFields ) as String

Set doc = dc.getFirstDocument()
While not doc is Nothing
  varArray(i , 0 ) = doc.GetitemValue( "FirstField" )(0)
  varArray(i , 1 ) = doc.GetitemValue( "SecondField" )(0)
  varArray(i , 2 ) = doc.GetitemValue( "ThirdField" )(0)
  ....
  i = i + 1
  Set doc = dc.GetNextDocument(doc)
Wend 
...
xlSheet.Range( xlSheet.Cells(1,1), xlSheet.Cells(dc.Count,NumberOfFields) ) = varArray

这段代码没有经过测试,部分来自对的响应,但应该会告诉您该怎么做。

我喜欢@Torsten Link的答案,但它可能不是您遇到的瓶颈。您可能需要考虑一种模式,其中Excel文件的构建,或者至少将要插入的数据整理在具有数据的实际机器上,然后在一个简洁的通信中传递信息。与速度有关的许多问题都与远程数据的本地处理和筛选有关

此外,您真的应该将Visible设置为false,然后确保它变为true,即使它出错。将可见属性设置为True确实会减慢速度