应该感谢那些指出你错误的人

借我三千虎骑,复我泱泱中华!

博客园 首页 新随笔 联系 订阅 管理

HOWTO:在 Visual C# .NET 中使用自动化获取和设置 Office 文档属性

本文的发布号曾为 CHS303296

概要

本文阐述如何创建可操纵 Microsoft Word 文档属性的 Microsoft Visual C# .NET 自动化客户端。虽然该代码示例是专门针对 Word 的,但是在使 Microsoft Excel 和 Microsoft PowerPoint 自动运行时也可以使用这些技巧。

为 Microsoft Word 创建自动化客户端

1. 启动 Visual Studio .NET。
2. 文件菜单上,单击新建,然后单击项目。从 Visual C# 项目类型中选择 Windows 应用程序。默认情况下会创建 Form1。
3. 添加对 Microsoft Word 对象库的引用。为此,请按照下列步骤操作:
a. 项目菜单上,单击添加引用
b. COM 选项卡上,找到 Microsoft Word 对象库,然后单击选择

注意:Microsoft Office 2003 包含主 Interop 程序集 (PIA)。 Microsoft Office XP 不包含 PIA,但您可以下载 PIA。 有关 Office XP PIA 的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
328912 (http://support.microsoft.com/kb/328912/EN-US/) INFO:Microsoft Office XP PIA 可供下载
c. 添加引用对话框中单击确定以接受您的选择。如果系统提示您为选定的库生成包装,请单击
4. 视图菜单上,选择工具箱以显示工具箱,然后向 Form1 添加一个按钮。
5. 双击 Button1。出现该窗体的代码窗口。
6. 在代码窗口中,将以下代码
private void button1_Click(object sender, System.EventArgs e)
            {
            }
            
替换为:
private void button1_Click(object sender, System.EventArgs e)
            {
            Word.Application oWord;
            Word._Document oDoc;
            object oMissing = Missing.Value;
            object oDocBuiltInProps;
            object oDocCustomProps;
            //Create an instance of Microsoft Word and make it visible.
            oWord = new Word.Application();
            oWord.Visible = true;
            //Create a new Document and get the BuiltInDocumentProperties collection.
            oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing,
            ref oMissing);
            oDocBuiltInProps = oDoc.BuiltInDocumentProperties;
            Type typeDocBuiltInProps = oDocBuiltInProps.GetType();
            //Get the Author property and display it.
            string strIndex = "Author";
            string strValue;
            object oDocAuthorProp = typeDocBuiltInProps.InvokeMember("Item",
            BindingFlags.Default |
            BindingFlags.GetProperty,
            null,oDocBuiltInProps,
            new object[] {strIndex} );
            Type typeDocAuthorProp = oDocAuthorProp.GetType();
            strValue = typeDocAuthorProp.InvokeMember("Value",
            BindingFlags.Default |
            BindingFlags.GetProperty,
            null,oDocAuthorProp,
            new object[] {} ).ToString();
            MessageBox.Show( "The Author is: " + strValue,"Author" );
            //Set the Subject property.
            strIndex = "Subject";
            strValue = "The Subject";
            typeDocAuthorProp.InvokeMember("Item",
            BindingFlags.Default |
            BindingFlags.SetProperty,
            null,oDocBuiltInProps,
            new object[] {strIndex,strValue} );
            //Add a property/value pair to the CustomDocumentProperties collection.
            oDocCustomProps = oDoc.CustomDocumentProperties;
            Type typeDocCustomProps = oDocCustomProps.GetType();
            strIndex = "Knowledge Base Article";
            strValue = "Q303296";
            object[] oArgs = {strIndex,false,
            MsoDocProperties.msoPropertyTypeString,
            strValue};
            typeDocCustomProps.InvokeMember("Add",BindingFlags.Default |
            BindingFlags.InvokeMethod, null,
            oDocCustomProps, oArgs );
            MessageBox.Show("Select \"Properties\" from the File menu "
            + "to view the changes.\nSelect the Summary tab to view "
            + "the Subject property and the Custom tab to view the Knowledge"
            + "Base Article property.", "Check File Properties",
            MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
            
7. 滚动到代码窗口顶部,然后将以下行添加到 using 指令列表的末尾:
using Microsoft.Office.Core;
            using Word = Microsoft.Office.Interop.Word;
            using System.Reflection;
            
8. 按 F5 键运行该应用程序。
注意DocumentPropertiesDocumentProperty 接口是晚期绑定接口。若要使用这些接口,必须像对待 IDispatch 接口那样对待它们。

参考

有关更多信息,请访问下面的 Microsoft Developer Network Web 站点:
Microsoft Office Development with Visual Studio(使用 Visual Studio 进行 Microsoft Office 开发)
http://msdn.microsoft.com/library/en-us/dnoxpta/html/vsofficedev.asp

 

posted on 2006-05-14 01:31  落拓孤鸿  阅读(692)  评论(0编辑  收藏  举报