使用 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对他们
我知道有两种方法-
_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对他们