gpt4 book ai didi

.net - 互操作:无法调用 get_Range,也无法使用 Range().Value2 返回的二维对象数组?

转载 作者:行者123 更新时间:2023-12-04 20:47:46 25 4
gpt4 key购买 nike

尝试通过逐行引用替换 Cells(RowIndex,ColumnIndex).Value() 调用以提高性能,我在引用结果时永久失败。

Excel Interop - Efficiency and performance 开头,其中包含要使用的提示 get_range , IE。

//get values
object[,] objectArray = shtName.get_Range("A1:Z100").Value2;
iFace = Convert.ToInt32(objectArray[1,1]);

//set values
object[,] objectArray = new object[3,1] {{"A"}{"B"}{"C"}};
rngName.Value2 = objectArray;

我想我不能使用 get_Range因为该方法对我来说是不可调用的,VB 在运行时说(不是可见成员)。

现在我想出了类似的东西:
Dim Values As Object(,)
Values = Sheet.Range(Sheet.Cells(RowIndex, 1), Sheet.Cells(2, 17)).Value2
For Index As Integer = 0 To 16
MsgBox(Values(0, Index))
Next

但是,引用 Values二维索引总是返回“索引超出数组范围”异常。用调试器检查数组显示了一个不错的二维数组,它的第二维应该有 17 个元素,所以 Value (0,0)确实应该是一个有效的引用——但它不是:

调试器让我检查值,我还可以深入到 Value(0,0)并查看正确的值,但仅重新评估该元素,即检查“ Value (0,0)”返回上述消息。

如何引用我的 Value2 调用返回的内容?

最佳答案

也许是这样的?请注意,如果您希望数组将列作为第一个元素,请按照说明更改以下行:

Imports Microsoft.Office.Interop
Module Module1
Sub main()
Dim appExcel As Excel.Application
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet
Dim values As Object

appExcel = GetObject(, "Excel.Application")
wb = appExcel.Workbooks(1)
ws = wb.Worksheets(1)
With ws
values = .Range(.Cells(1, 1), .Cells(2, 5)).Value2
'if column is first element use appExcel.Worksheetfunction.Transpose(.Range(.Cells(1, 1), .Cells(2, 5)).Value2)
For i As Int32 = LBound(values, 1) To UBound(values, 1)
For j As Int32 = LBound(values, 2) To UBound(values, 2)
System.Windows.Forms.MessageBox.Show(values(i, j))
Next j
Next
End With
End Sub
End Module

关于.net - 互操作:无法调用 get_Range,也无法使用 Range().Value2 返回的二维对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6199547/

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