Как читать поля формы MS word, используя c # .net - PullRequest
0 голосов
/ 16 апреля 2019

Я попытался прочитать документ word, который включает в себя текст и поля формы. Мне нужно прочитать весь текст и поля в документе. Но приведенный ниже код всегда возвращает пустое значение. Он никогда не входит в цикл foreach. Я не знаю, в чем проблема, так как нет ошибки при сборке. Но я не получил выход. Я пишу это в c # .net 4.6.2, и он будет использоваться как файл библиотеки. Что-то не так с кодом?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Word;
using System.Activities;
using System.ComponentModel;
namespace WordExer
{
  public class WordExer : CodeActivity
  {
    [Category("Input")]
    public InArgument<string> AVal { get; set; }

    [Category("Output")]
    public OutArgument<string> CVal { get; set; }

    protected override void Execute(CodeActivityContext context)
    {
        var a = AVal.Get(context);
        string text = "";
         Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
        Microsoft.Office.Interop.Word.Document doc = word.Documents.Add(a);

        doc.Activate();

        foreach (FormField field in doc.FormFields)
        {
            Console.WriteLine(field.Range.Text);
            text += field.Range.Text;
        }
        CVal.Set(context, text);
        word.Quit();
    }  
  }
}

1 Ответ

1 голос
/ 26 апреля 2019

Вы можете попытаться получить к ним доступ в виде встроенных фигур, как показано в приведенном ниже фрагменте кода

 foreach (InlineShape shape in doc.InlineShapes)
 {
       if (shape.OLEFormat != null && shape.OLEFormat.ClassType == "CONTROL Forms.TextBox.1")
       {
              Console.WriteLine("Data :" + shape.OLEFormat.Object.Value);
       }
 }
...