加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – MS Word Office Automation – 填写文本表单域和复选框表

发布时间:2020-12-15 06:47:34 所属栏目:百科 来源:网络整理
导读:有没有人有任何关于如何使用C#(VB.NET也可以)创建引擎的任何良好的建议或经验,这是通用的,足以处理大多数情况下MS Word文本字段我需要填充从数据库中获取的数据?简而言之,我即将开始这个小型Office自动化游览,我希望有一点反馈可以帮助我避免一些耗时的错误
有没有人有任何关于如何使用C#(VB.NET也可以)创建引擎的任何良好的建议或经验,这是通用的,足以处理大多数情况下MS Word文本字段我需要填充从数据库中获取的数据?简而言之,我即将开始这个小型Office自动化游览,我希望有一点反馈可以帮助我避免一些耗时的错误.

欢迎并提前感谢任何建议;

戴夫

解决方法

我将发送两个解决您的自动化问题的例子.第一个是使用MailMerge,第二个是使用书签.

word文件如下所示:

使用MailMerge(插入 – > Quick Parts – >字段 – >邮件合并 – >合并字段)
名字:?名字?
姓氏:?姓?

=======

使用书签(Insert – > BookMark)
名字:(< - 书签在这里,不可见)
姓:

代码如下:

>使用书签

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!");

>使用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 isVisible,ref missing);

        oDoc.Activate();
    }

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

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

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

我希望这个实施将为解决你的问题提供一些想法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读