簡體   English   中英

MS Word Office Automation - 填寫文本表單字段和復選框表單字段和郵件合並

[英]MS Word Office Automation - Filling Text Form Fields And Check Box Form Fields And Mail Merge

有沒有人對如何使用C#創建引擎有任何好的建議或經驗(VB.NET也可以),它足以處理大多數MS Word文本字段的情況,我需要填充我從數據庫中獲取的數據? 簡而言之,我即將開始這個小小的Office自動化游覽,我希望這里的一些反饋可以幫助我避免一些耗時的錯誤。

歡呼並提前感謝任何建議;

戴夫

我將發送兩個示例來解決您的自動化問題。 第一個是使用MailMerge,第二個是使用書簽。

word文件看起來像這樣:

使用MailMerge(插入 - >快速部件 - >字段 - >郵件合並 - >合並字段)名字:«firstName»姓氏:«lastName»

=======

使用書簽(插入 - >書簽)名字:( < - 書簽在這里,它不可見)姓氏:

代碼如下:

  1. 使用書簽

      Open("D:/Doc1.doc"); if (oDoc.Bookmarks.Exists("bkmFirstName")) { object oBookMark = "bkmFirstName"; oDoc.Bookmarks.get_Item(ref oBookMark).Range.Text = textBox1.Text; } if (oDoc.Bookmarks.Exists("bkmLastName")) { object oBookMark = "bkmLastName"; oDoc.Bookmarks.get_Item(ref oBookMark).Range.Text = textBox2.Text; } SaveAs("D:/Test/Doc2.doc"); Quit(); MessageBox.Show("The file is successfully saved!"); 
  2. 使用MailMerge

      Open("D:/Doc1.doc"); foreach (Field myMergeField in oDoc.Fields) { //iTotalFields++; Range rngFieldCode = myMergeField.Code; String fieldText = rngFieldCode.Text; // GET only MAILMERGE fields if (fieldText.StartsWith(" MERGEFIELD")) { Int32 endMerge = fieldText.IndexOf("\\\\"); Int32 fieldNameLength = fieldText.Length - endMerge; String fieldName = fieldText.Substring(11, endMerge - 11); fieldName = fieldName.Trim(); if (fieldName == "firstName") { myMergeField.Select(); oWordApplic.Selection.TypeText("This Text Replaces the Field in the Template"); } } } SaveAs("D:/Test/Doc2.doc"); Quit(); MessageBox.Show("The file is successfully saved!"); 

我也使用了一些輔助方法。

    ApplicationClass oWordApplic = new Microsoft.Office.Interop.Word.ApplicationClass();
    private Microsoft.Office.Interop.Word.Document oDoc = new Document();

    public void Open(string strFileName)
    {
        object fileName = strFileName;
        object readOnly = false;
        object isVisible = true;
        object missing = System.Reflection.Missing.Value;

        oDoc = oWordApplic.Documents.Open(ref fileName, ref missing, ref readOnly,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing);

        oDoc.Activate();
    }

    public void SaveAs(string strFileName)
    {
        object missing = System.Reflection.Missing.Value;
        object fileName = strFileName;

        oDoc.SaveAs(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
    }

    public void Quit()
    {
        object missing = System.Reflection.Missing.Value;
        oWordApplic.Application.Quit(ref missing, ref missing, ref missing);
    }

我希望這個實現能給出解決問題的一些想法。

暫無
暫無

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

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