2011-05-23 19 views
2

早上好。Excel Interop:數字參考,不是字符串

在閱讀answer on a question about optimizing Excel Interop之後,我發現使用worksheet.Range["A1:C3"](與worksheet.get_range("A1:C3")相同)引用一個單元格不太方便。我想使用整數/長整數以某種方式引用單元格,並且我不想將列號{1,2,3,...}映射到列字母{「A」,「B」,「C 「,...}。

注:我知道.Cells,但這不是一個選項,因爲它只返回單個單元AFAIK。

有什麼想法?

問候

+2

除非您自己編寫這樣一個層的邏輯,否則我不認爲有這樣一種直接的方法,因爲excel interop只是一個圍繞本機Excel API的包裝,它與不方便的範圍語法一起工作。 Excel使用可視化圖形用戶界面進行了嚴格設計,並沒有被設計在這種代碼抽象的第一位。不過,我歡迎您可能找到的任何解決方案。 – 2011-05-23 09:30:51

+0

老實說,我真的很擔心這是即將發生的 – Atmocreations 2011-05-28 20:17:22

回答

2

您可以使用單元格屬性來創建可作爲參數傳遞給Range屬性Range對象。

看看這裏的例子:http://msdn.microsoft.com/en-us/library/bb178282.aspx在你有,你使用單元格屬性來獲取你傳遞給Range屬性強似要把兩個範圍對象的示例頁面的中間:

With Worksheets(1) 
    .Range(.Cells(1, 1), _ 
     .Cells(10, 10)).Borders.LineStyle = xlThick 
End With 

一般來說,Cells屬性返回一個Range對象,你可以做任何你想要的:http://msdn.microsoft.com/en-us/library/bb148836.aspx

+0

好吧。不是很優雅,但我認爲你是對的:猜想它是所有不良可能性的「最佳」方式。謝謝! – Atmocreations 2011-05-28 20:18:30

3

在Excel宏(VBA),您可以用這樣的方式:

Dim rngStart As Range 
Set rngStart = Range("A1") 

Dim rngEnd As Range 
Set rngEnd = rngStart.Rows(3).Columns(4) 

Dim rngFinal As Range 
Set rngFinal = Range(rngStart, rngEnd) 

rngFinal.Select 

應該很容易將其重寫爲C#/ VB.NET。