Lotus notes 要从三维数组中提取二维数组吗

Lotus notes 要从三维数组中提取二维数组吗,lotus-notes,lotusscript,Lotus Notes,Lotusscript,我正在使用Notes中的LotusScript代理从LotusNotes数据库填充多页excel电子表格。 为了优化代码,我首先将所有数据构建在一个数组中,然后将其转储到Excel中,因为一次性编写数组要比单独编写每个单元格或行快得多 因此,我有一个三维数组,其中包含由 ReDim sheetData(sheets,rows,columns) 使用视图导航器条目填充数组没有问题,但是当我开始编写Excel时,我想这样做 For c = 0 to sheets With xlSheet(c

我正在使用Notes中的LotusScript代理从LotusNotes数据库填充多页excel电子表格。 为了优化代码,我首先将所有数据构建在一个数组中,然后将其转储到Excel中,因为一次性编写数组要比单独编写每个单元格或行快得多

因此,我有一个三维数组,其中包含由

ReDim sheetData(sheets,rows,columns)
使用视图导航器条目填充数组没有问题,但是当我开始编写Excel时,我想这样做

For c = 0 to sheets
   With xlSheet(c+1)
      .Range(.Range.Cells(1,1) , .Range.Cells(rows+1, columns+1).Value = sheetData(c)
   End With
Next
这显然行不通,因为我需要为sheetData指定三个下标


那么,提取行和列数据的最佳方法是什么呢?

您有两种可能: 您可以遍历所有行和列并直接赋值:

With xlSheet(c+1)
    For row = 1 to rows + 1
        For col = 1 to columns + 1
           .cells( row, col ) = sheetData(c,row,col)
        Next
    Next
End With
或者-如果可以将二维数组指定给某个范围(我不知道),则可以使用二维数组列表:

ReDim sheetData(行、列)列表作为变量

那看起来像
sheetData(1)=[1,2]

然后任务看起来像:

.Range(.Range.Cells(1,1) , .Range.Cells(rows+1, columns+1).Value = sheetData( c )

但是:填充数组列表可能会很痛苦(用ReDim创建一个临时二维数组,填充该数组并像'sheetData(sheet)=tempArray

一样分配它。多谢你的建议,托尔斯滕。我尝试过这种方法,但无法解决如何创建数组列表的问题(谷歌也没有提供任何明确的答案)。但是,我现在意识到,这种方法不会很好,因为我的工作表中的行数不会相同,我真的不希望创建包含大量空白的数组(例如,一张工作表将有22000行,另一张工作表将有1700行).因此,我使用6一次一行地写入数据,而不是一次一张表。但仍然比一次一个单元格地写入数据快:-)您的3D阵列非常浪费内存。关于数组列表的建议非常好。您可以通过将图纸列表变暗作为变型进行设置。新工作表由sheetList(“工作表名称”)=数组生成。。。并引用为图纸清单(“图纸名称”)(i,j)