gpt4 book ai didi

c# - Excel-DNA:一维数组限制为 65536 行

转载 作者:太空狗 更新时间:2023-10-29 20:36:58 25 4
gpt4 key购买 nike

当尝试在 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-Worksheet,当使用这样的二维数组时,一切正常。

 [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 的数字也有效。

最佳答案

鉴于您使用二维数组和翻转维度表示不同的性能,这听起来像是您遇到了行和/或列的限制。

本页:http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP010073849.aspx给出了 Excel 2007 的限制。如您所见,工作表中的列数限制为 16,384,您的值超过了很多倍。另一方面,1,048,576 的行限制很容易容纳 65537 的值。

我的猜测是,当您请求具有 65537 列的对象时,构造函数会静默处理溢出并将其解析为 1。

关于c# - Excel-DNA:一维数组限制为 65536 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14258507/

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