Excel-DNA:一维数组限于65536行

当试图在VBA中调用以下Excel-DNA-Method时,我只能得到一个大小为1的数组(在65536行之后数组似乎被调整为实际数组大小 – 65537)。 当调用表中的方法作为数组函数时,整个事情的作品。

[ExcelFunction(Description = "Example", Name = "Example", HelpTopic = "")] public static object[] example() { object[] ret = new object[65537]; return ret; } 

我正在使用Excel 2007,该工作表是一个xlsm工作表,使用这样的二维数组时,一切工作正常。

  [ExcelFunction(Description = "Example", Name = "Example", HelpTopic = "")] public static object[,] example() { object[,] ret = new object[65537,1]; return ret; } 

但是使用二维数组的方式是相同的,以防万一发生

 [ExcelFunction(Description = "Example", Name = "Example", HelpTopic = "")] public static object[,] example() { object[,] ret = new object[1,65537]; return ret; } 

有人有一个想法如何解决这个问题吗?

在VBA中做同样的事情工作正常

 Function test() Dim ret As Variant ReDim ret(65536) test = ret End Function Sub testSub() Dim output output = Application.Run("test") End Sub 

输出的维数为65537(索引从0开始),大于65537的数字也可以工作。

鉴于您使用2维数组和翻转尺寸表示了不同的性能,这听起来像是跑到了行和/或列的极限。

本页: http : //office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP010073849.aspx给出了Excel 2007的限制。正如你将看到的,列的数量一个工作表限制在16,384你的价值超过了很多倍。 另一方面,1,048,576的行限制容易地可以容纳值65537。

我的猜测是,当你请求具有65537列的对象时,构造函数默默地处理溢出并将其parsing为1。