簡體   English   中英

C#從Word文檔檢索FormFields並將其插入文本文件

[英]C# Retrieve FormFields from Word Document and Insert into Text file

我試圖弄清楚如何遍歷文檔並提取所有表單字段並將其插入新的文本文件。 我正在嘗試尋找所需功能的示例,但並沒有提供很多信息。 也許我搜索不正確。 到目前為止,這是我寫的內容。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Word;
using System.IO;

namespace purform
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {

            // create instance of Word 
            Microsoft.Office.Interop.Word.ApplicationClass oWordApp = new Microsoft.Office.Interop.Word.ApplicationClass();

            // create instance of Word document 
            Microsoft.Office.Interop.Word.Document oWordDoc = new Document();

            object missing = System.Reflection.Missing.Value;
            try
            {
                //declare objects
                object fileName = @"C:\\path\\to\\file.doc";
                object readOnly = false;
                object isVisible = true;

                //open word doc
                oWordDoc = oWordApp.Documents.Open(ref fileName, ref missing, ref readOnly, ref readOnly,
                ref missing, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing, ref missing, ref missing);

                oWordDoc.Activate();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Unable to locate and activate document file");
            }

            object oFormFields = fieldArray[i, 0];
            oWordDoc.FormFields.get_Item(ref oFormFields).Range = 


           System.IO.File.WriteAllText(@"\\path\\to\\file.txt", fieldArray[]);



        }
    }
}

如何獲得mergefields?

我過去曾經使用過這樣的代碼。
還要注意FormFields不是mergefields

    foreach(Field wdField in workDoc.Fields)
    {
        if (wdField.Type == WdFieldType.wdFieldMergeField)
        {
            wdField.Select();
            string fieldText = wdField.Result.Text;
        }
    }

您可以使用類似這樣的東西。 您會看到我在大多數代碼中都插入了注釋,就像我僅使用“獲取書簽名稱”部分一樣。 您還可以獲取文本表單字段的格式。

foreach (Word.FormField oFormFields in oDoc.FormFields) {
     //To Get Bookmark Name
     if (oFormFields.Name.Contains("CompanyEntity")) {
                    //With Values
                    BMClick = BMClick + "," + oFormFields.Name;
                    BMType = oFormFields.Type.ToString();
                    BMClick = BMClick + "," + BMType + "," + oFormFields.Result + "\n";
     }

     //from here: get all BM names
     //if (oFormFields.Type == Microsoft.Office.Interop.Word.WdFieldType.wdFieldFormTextInput)
     //{

     //    ////To Get Bookmark Name
     //    //if ((oFormFields.Name.ToUpper().Contains("LR_M_IssueDate")) || (oFormFields.Name.ToUpper().Contains("LR_O_ExpiryDate")))
     //    //{
     //    //    BMClick = BMClick + "," + oFormFields.Name;
     //    //}

     //    //With Values
     //    //BMClick = BMClick + "," + oFormFields.Name;
     //    //BMType = oFormFields.Type.ToString();
     //    //BMClick = BMClick + "," + BMType + "," + oFormFields.Result + "\n"; 

     ////To check the text field format
      //    switch (((Microsoft.Office.Interop.Word.WdTextFormFieldType)oFormFields.TextInput.Type))
    //    {
    //        case Microsoft.Office.Interop.Word.WdTextFormFieldType.wdRegularText:
    //            {

    //                ////To Get Bookmark Name
    //                //if ((oFormFields.Name.ToUpper().Contains("LR_M_IssueDate")) || (oFormFields.Name.ToUpper().Contains("LR_O_ExpiryDate")))
    //                //{
    //                //    BMClick = BMClick + "," + oFormFields.Name;
    //                //}
    //                BMClick = BMClick + "," + oFormFields.Name;
    //                BMType = oFormFields.Type.ToString();
    //                BMClick = BMClick + "," + BMType;
    //                BMTextType = oFormFields.TextInput.Type.ToString();
    //                BMClick = BMClick + "," + BMTextType + "\n";
    //                break;
    //            }

    //        case Microsoft.Office.Interop.Word.WdTextFormFieldType.wdDateText:
    //            //if ((oFormFields.Name.ToUpper().Contains("LR_M_ISSUEDATE")) || (oFormFields.Name.ToUpper().Contains("LR_O_EXPIRYDATE")))
    //            //{
    //            //    BMClick = BMClick + "," + oFormFields.Name;
    //            //}
    //            BMClick = BMClick + "," + oFormFields.Name;
    //            BMType = oFormFields.Type.ToString();
    //            BMClick = BMClick + "," + BMType;
    //            BMTextType = oFormFields.TextInput.Type.ToString();
    //            BMClick = BMClick + "," + BMTextType + "\n";
    //            break;

    //        case Microsoft.Office.Interop.Word.WdTextFormFieldType.wdNumberText:
    //            BMClick = BMClick + "," + oFormFields.Name;
    //            BMType = oFormFields.Type.ToString();
    //            BMClick = BMClick + "," + BMType;
    //            BMTextType = oFormFields.TextInput.Type.ToString();
    //            BMClick = BMClick + "," + BMTextType + "\n";
    //            break;
    //        default:
    //            //MessageBox.Show("no");
    //            break;
    //    }
    //}



    //else if (oFormFields.Type == Microsoft.Office.Interop.Word.WdFieldType.wdFieldFormCheckBox)
    //{
    //    BMClick = BMClick + "," + oFormFields.Name;
    //    BMType = oFormFields.Type.ToString();
    //    BMClick = BMClick + "," + BMType + "," + oFormFields.Result + "\n";
    //}
    ////{
    ////    if (oFormFields.Name == "")
    ////    { 
    ////        Word.Range curPageRange = new Word.Range;
    ////        object AtPage = @"\page";
    ////        curPageRange = oDoc.Bookmarks.get_Item(ref AtPage).Range;
    ////        //curPageRange.Select(); 

    ////        BMClick=BMClick + "," + curPageRange;
    ////    }
    ////}

    //else if (oFormFields.Type == Microsoft.Office.Interop.Word.WdFieldType.wdFieldFormDropDown)
    //{
    //    BMClick = BMClick + "," + oFormFields.Name;
    //    BMType = oFormFields.Type.ToString();
    //    BMClick = BMClick + "," + BMType + "," + oFormFields.Result + "\n";
    //}
    ////{
    ////    if (oFormFields.Name == "")
    ////    { 
    ////        Word.Range curPageRange = new Word.Range;
    ////        object AtPage = @"\page";
    ////        curPageRange = oDoc.Bookmarks.get_Item(ref AtPage).Range;
    ////        //curPageRange.Select(); 

    ////        BMClick=BMClick + "," + curPageRange;
    ////    }
    ////}
    //until here: get all BM names

    ctr++;
    // }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM