MS-UIAutomation:如何获取Excel单元格的内容

时间:2017-08-07 09:25:05

标签: c# .net excel ui-automation

我正在尝试使用UIAutomation获取Excel 2016单元格的内容。我想获取鼠标光标位置下的单元格内容。

我有一种方法来捕捉鼠标光标位置下的元素

private void CaptureMousePosition()
    {
        try
        {
            var cursorPosition = Cursor.Position;
            var automationElementAtCursorPosition = AutomationElement.FromPoint(new Point(cursorPosition.X, cursorPosition.Y));
            AppendElementInformation(automationElementAtCursorPosition);
        }
        catch (Exception ex)
        {
            //error treatment
        }
    }

一种记录光标所在元素的方法

private void AppendElementInformation(AutomationElement ae)
    {
        var aeTextElement = ae.GetElement();
        var aeTextElementToString = aeTextElement != null ? aeTextElement.ToString() : "No information to log.";
        textBox1.AppendText(aeTextElementToString);
    }

当我尝试捕获en excel按钮的文本时,没有问题,我得到这个日志:

  

自动化元素:ControlType = ControlType.Button,Text = Fusionner et centrer,ElementBounds = 2248; 107; 134; 23,Visible = True

但是当我想获得一个未处于编辑模式的Excel单元格的文本时,我得到了这个日志:

  

自动化元素:ControlType = ControlType.Pane,Text = Classeur1,ElementBounds = 1680; 253; 1680; 745,Visible = True

Aaaand,当我在细胞上双重clic时,我可以得到这个细胞的文字:

  

Automation Element:ControlType = ControlType.Edit,Text = Hi Stackoverflow,ElementBounds = 2266; 413; 159; 19,Visible =

有没有人知道如何在单元格上没有双clic的情况下获取Excel 2016单元格的内容?只需用鼠标光标位置。

感谢。

0 个答案:

没有答案