来自C#的Excel操作 - 设置ActiveCell?

问题描述:

我目前正在尝试将一些VB6宏移入C#应用程序,并且在使用C#设置活动单元格时遇到问题。来自C#的Excel操作 - 设置ActiveCell?

在VB6其简单:

ActiveSheet.Range("L1").Select 

有谁知道C#相当于是什么?

提前欢呼。

+0

我假设你要去COM路线?如果你制作的是Excel 2007或更高版本的文档,你应该使用openXML路由(需要.NET 3.0/3.5,尽管你可以在'System.Xml'中使用zip-lib和vanilla XML操作自己完成更多的工作。 – Aren 2010-04-30 15:24:15

下面是一个示例代码段:

 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很难)。

+0

Im so密集的虚幻,我正在尝试到rng.Select之前实际分配rng一个单元格!感谢使它显而易见! – JoeBeez 2010-04-30 15:49:08

+1

小修正:get_Range需要2个参数(如果您想选择一组单元格),和它是其中一个很好的情况下,它实际返回正确的对象类型(Excel.Range),而不是一个需要铸造的对象... var cell = sheet.get_Range(“A1”,Type.Missing); – Mathias 2010-04-30 18:01:21

+0

@Mathias,谢谢 - 更正了,我想我错误地记录了一个输入的情况 - 第二个输入失败。 – 2010-04-30 18:34:34