让我的头围绕字符串操纵

时间:2011-11-11 09:59:44

标签: c# excel excel-dna

我一直在研究ExcelDNA / C#加入一段时间,我处于最后的障碍。

我可以获得一个选择地址,我首先需要检查该选择中的行是否只有两个,例如在Excel中,它们将是8 + 9,彼此相邻的两行或任何两个连续的数字。

然后我需要检查是否有两个以上的列,等等C到J(字母表中有两个以上的空格)。

这一切都需要从这样的字符串完成:Sheet1!$ C $ 8:$ J $ 9

我想要做的是,将这样的选择分割为两个字符串,将上面的字符串返回到两个字符串中,在示例的情况下,所需的最终结果将是

Sheet1!$ C $ 8:$ J $ 8 + Sheet1!$ C $ 9:$ J $ 9 两个不同的字符串,也许我需要更多咖啡,但如果有人这样做的方式比我计划的要少,我会永远欠你的债务!

2 个答案:

答案 0 :(得分:0)

您是否有Range对象的引用?如果是这样,range.Rows.Count == 2会告诉您是否有两行,而range.Columns.Count > 2会告诉您是否有两列以上。

然后,要单独获取两行的地址,您可以执行以下操作: -

var address1 = range.Rows[1].Address(external:true);
var address2 = range.Rows[2].Address(external:true);

答案 1 :(得分:0)

我认为这是从一个从CommandBar或Ribbon事件处理程序调用的宏运行的。 在这种情况下,您可以从一开始就使用COM Automation接口,而且从不打扰C API(XlCall和ExcelReference)。

要获得当前选择,您只需说

Application xlApp = (Application)ExcelDnaUtil.Application;
Range selectedRange = xlApp.Selection as Range;
if (selectedRange != null)
{ .... do you further checking here ...}

如果您正在制作用户定义的函数或者您想要高性能的数据传输,那么C API的功能会更加重要。但对于常规宏,COM API更容易。