我目前正在嘗試將一些VB6宏移入C#應用程序,並且在使用C#設置活動單元格時遇到問題。來自C#的Excel操作 - 設置ActiveCell?
在VB6其簡單:
ActiveSheet.Range("L1").Select
有誰知道C#相當於是什麼?
提前歡呼。
我目前正在嘗試將一些VB6宏移入C#應用程序,並且在使用C#設置活動單元格時遇到問題。來自C#的Excel操作 - 設置ActiveCell?
在VB6其簡單:
ActiveSheet.Range("L1").Select
有誰知道C#相當於是什麼?
提前歡呼。
下面是一個示例代碼段:
Excel.Worksheet sht = (Excel.Worksheet)ActiveSheet;
sht.Cells[3, 3] = "HELLO";
您也可以捕捉範圍:
Excel.Range rng = (Excel.Range)sht.Cells[3, 3];
我相信你像以前一樣選擇範圍的選擇方法,雖然我還沒有」沒有測試過這個。
rng.Select();
顯然,您可以簡化這一點,並將這些語句鏈接在一起,並進行正確的投射。我不想冒這個猜測,因爲我沒有從我這裏打開VSTO項目。
編輯
你也應該能夠使用get_Range
擺脫紙張的範圍:
rng = sht.get_Range("A1", Type.Missing);
VSTO趨於恢復對象的大部分時間,因此需要強制轉換,但get_Range
是例外。有人可能會糾正我,因爲我不是VSTO的大用戶(當涉及到Excel時,仍然VBA很難)。
Im so密集的虛幻,我正在嘗試到rng.Select之前實際分配rng一個單元格!感謝使它顯而易見! – JoeBeez 2010-04-30 15:49:08
小修正:get_Range需要2個參數(如果您想選擇一組單元格),和它是其中一個很好的情況下,它實際返回正確的對象類型(Excel.Range),而不是一個需要鑄造的對象... var cell = sheet.get_Range(「A1」,Type.Missing); – Mathias 2010-04-30 18:01:21
@Mathias,謝謝 - 更正了,我想我錯誤地記錄了一個輸入的情況 - 第二個輸入失敗。 – 2010-04-30 18:34:34
我假設你要去COM路線?如果你製作的是Excel 2007或更高版本的文檔,你應該使用openXML路由(需要.NET 3.0/3.5,儘管你可以在'System.Xml'中使用zip-lib和vanilla XML操作自己完成更多的工作。 – Aren 2010-04-30 15:24:15