2012-03-01 10 views
1

文書を繰り返し処理する方法を理解し、すべてのフォームフィールドをプルして新しいテキストファイルに挿入しようとしています。私が必要とする機能の例を見つけようと努力しています。多くの情報がありません。たぶん私は正しく検索していないでしょう。これまで私が書いたことは次のとおりです。C#Word文書からFormFieldを取得してテキストファイルに挿入

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[]); 



     } 
    } 
} 

どのようにしてマージフィールドを取得できますか?

答えて

6

私は過去にこのようなコードを使用しています。
はまた、フォームフィールドがMERGEFIELDS

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

ヒントありがとうございます! – user1059110

0

あなたはこのようないくつかのものを使用することができません注意してください。 「Get bookmark name」の部分だけを使用していたので、ほとんどのコードにコメントを挿入していることがわかります。また、テキスト形式フィールドの形式を取得することもできます。

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++; 
    // } 
} 
関連する問題