技术开发 频道

详解VSTS与OFFICE的协同开发:WORD篇

  自定义Word启动过程

  完成请假单填写窗体的设计后,我们就可以在文档被打开的时候显示这个窗体,让用户在窗体中输入相应的信息后,文档级自定义项可以从窗体获得用户的输入,然后根据用户的输入生成相应的文档内容。在上文中我们已经提到了向导为我们自动生成的ThisDocument类,这个类负责对整个文档进行编程开发,同时提供了对Word文档模型中其他对象的访问接口。可以说,这个类实际上是整个文档的编程模型,通过ThisDocument类我们可以直接操作这个文档。

  在ThisDocument类中预先定义了两个事件处理函数:ThisDocument_Startup和ThisDocument_Shutdown。当文档被打开的时候,ThisDocument_Startup会被自动调用,我们可以在这个函数中进行一些初始化工作,例如显示我们的填写请假条窗体获取用户输入。当文档被关闭的时候,ThisDocument_Shutdown会被自动调用,在这里我们可以进行一些资源清理工作。

  为了在文档被打开的时候显示请假单填写窗体,在ThisDocument.cs代码文件中,我们将ThisDocument_Startup函数实现如下:

private void ThisDocument_Startup(object sender, System.EventArgs e)
        {
            
// 创建并显示填写请假条窗体
            FillForm formFill = new FillForm();
            formFill.ShowDialog();

            
// 获得用户输入的信息
            string strReaon = formFill.GetReason();
            
string strTimeFrom = formFill.GetTimeFrom();
            
string strTimeTo = formFill.GetTimeTo();

            
// 根据用户输入生成请假条内容
            string strContent;
            strContent
= "\t我因" + strReaon + ",需要请假(从 " + strTimeFrom +
                
"" + strTimeTo + " ),望批准。 ";

            
// 获取计算机登录用户名作为请假人
            string strApplyPerson;
            
string strName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
            strApplyPerson
= "请假人:" + strName;

            
// 插入新的段落
            this.Paragraphs[2].Range.InsertParagraphAfter();
            
// 设置段落格式
            this.Paragraphs[3].Range.ParagraphFormat.Alignment =
                Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;
            
// 设置段落文本
            this.Paragraphs[3].Range.Text = strContent;
            
            
// 请假人段落
            this.Paragraphs[3].Range.InsertParagraphAfter();
            
this.Paragraphs[4].Range.ParagraphFormat.Alignment =
                Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;
            
this.Paragraphs[4].Range.Text = strApplyPerson;
            
            
// 请假日期
            this.Paragraphs[4].Range.InsertParagraphAfter();
            
this.Paragraphs[5].Range.InsertDateTime();
        }

  在这个函数中,我们首先创建并显示填写请假条窗体,用户在其中输入请假原因和请假期限后关闭窗体,然后程序从窗体中获得用户输入的信息,生成相应的文本内容。接着,插入新的段落,设置段落格式和文本内容,这样,我们就利用用户在窗体上的输入创建了一个完整的请假单文档。
测试项目

  现在,我们就可以编译测试整个项目。当文档被打开的时候,会出现我们设计好的“填写请假单窗体”,在其中我们输入请假原因和请假的起止时间,单击确定后,Word会自动更加我们的输入生成完整的请假单文档,这样是不是比以前逐个空格的填写方式快捷多了呢?请假单只是一个简单的例子,我们还可以在这个基础上,利于文档级自定义项开发出很多Office应用,提高办公效率。
 


图7 填写请假单和生成的请假单效果

  这里需要特别说明的是,为了系统的安全,完成Office项目的开发后,我们应该删除项目输出文件夹中的文件和项目生成过程中所创建的安全设置。我们可以通过“Build”->“Clean Solution”菜单项来清理项目。

0
相关文章