使用 Excel.Interop 访问 Range 的更快方法

Faster way to access Range using Excel.Interop

我知道有两种方法-

_xlWorksheet.Range[_xlWorksheet.Cells[1, 1], _xlWorksheet.Cells[10, 10]].Value2 = myarray.ToArray();

_xlWorksheet.Range["A1", "J10"].Value2 = myarray.ToArray();

还有其他更快的方法吗?

据我了解,当我使用

_xlWorksheet.Range[_xlWorksheet.Cells[1, 1], _xlWorksheet.Cells[10, 10]]

将调用 3 次互操作。 但是,如果

_xlWorksheet.Range["A1", "J10"]

只有一个电话。

我不确定哪个更快。

据我了解你的问题,在选择 .Range[_xlWorksheet.Cells[1, 1], _xlWorksheet.Cells[10, 10]]Range["A1", "J10"] 时没有 "FAST" 方式,它们是相同的。

在 Excel 中,您可以引用一个范围,例如 A1:A10,其中一些方式

Debug.Print Sheets("Sheet1").Range("A1:A10").Address
Debug.Print Sheets("Sheet1").Range(Sheets("Sheet1").Range("A1"), Sheets("Sheet1").Range("A10")).Address
Debug.Print Sheets("Sheet1").Range(Sheets("Sheet1").Cells(1, 1), Sheets("Sheet1").Cells(10, 1)).Address

选择以上之一将决定性能。 决定性能的是如何read/write对他们