3

我非常接近完成这项工作。基本上我想从 word 文档中读取输入字段。换句话说,我有:

在此处输入图像描述

Hello world是我通过单击图像上突出显示的Aa按钮放置的标签的内容。因此,当我保存该文档时,Test.docx我使用代码执行以下操作:

using System;
using Microsoft.Office.Interop.Word;

class Program
{
    static void Main(string[] args)
    {
        Application word = new ApplicationClass();
        object miss = System.Reflection.Missing.Value;
        object path = @"a:\Users\Eduardo\Desktop\Test.docx";  // <-------- Path where document is
        object readOnly = false;
        Document document = word.Documents.Open(ref path, ref miss, ref readOnly, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);

        // here I iterate through all the input fields!!!  <--------------------------
        foreach (ContentControl ff in document.ContentControls)
        {
            var m = ff.PlaceholderText; // for some reason I cannot get the text of the control.
            var b = ff.ShowingPlaceholderText;
            Console.WriteLine(ff.ToString());
        }

        document.Close(ref miss, ref miss, ref miss);
        word.Quit();
    }
}

我能够遍历所有输入字段,我唯一缺少的就是获取控件内的值!


编辑

终于找到了解决方案由于某种原因该属性没有出现在调试器上!无论如何要获得该控件的文本,我必须这样做:

 Console.WriteLine(ff.Range.Text);

所以我的最终代码现在看起来像:

using System;
using Microsoft.Office.Interop.Word;

class Program
{
    static void Main(string[] args)
    {
        Application word = new ApplicationClass();
        object miss = System.Reflection.Missing.Value;
        object path = @"a:\Users\Eduardo\Desktop\Test.docx";  // <-------- Path where document is
        object readOnly = false;
        Document document = word.Documents.Open(ref path, ref miss, ref readOnly, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);

        foreach (ContentControl ff in document.ContentControls)
        {
            Console.WriteLine(ff.Range.Text);
        }

        document.Close(ref miss, ref miss, ref miss);
        word.Quit();
    }
}
4

0 回答 0