当然要先添加对Word的组件的引用,添加命名空间的引用,代码:
Word.Application oWord;
Word._Document oDoc;
object oMissing = Missing.Value;
object docBuiltInProps;

object Source = @"DocPath";
object Unknown =Type.Missing;
oWord = new Word.Application();
try
{
oDoc = oWord.Documents.Open(ref Source,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown );
docBuiltInProps = oDoc.BuiltInDocumentProperties;
Type typeDocBuiltInProps = docBuiltInProps.GetType();
//获取作者
string index = "Author";
string propsValue;
object docAuthor = typeDocBuiltInProps.InvokeMember("Item",
BindingFlags.Default |
BindingFlags.GetProperty,
null,docBuiltInProps,
new object[] {index} );
Type typeDocAuthorProp = docAuthor.GetType();
propsValue = typeDocAuthorProp.InvokeMember("Value",
BindingFlags.Default |
BindingFlags.GetProperty,
null,docAuthor,
new object[] {} ).ToString();
MessageBox.Show( propsValue,"Author" );
//获取主题
index = "Subject";
propsValue = "The Subject";
object docSubjectProp = typeDocBuiltInProps.InvokeMember("Item",
BindingFlags.Default |
BindingFlags.GetProperty,
null,docBuiltInProps,
new object[] {index} );
Type typeDocSubjectProp = docSubjectProp.GetType();
propsValue = typeDocSubjectProp.InvokeMember("Value",
BindingFlags.Default |BindingFlags.GetProperty,
null,docSubjectProp,
new object[] {} ).ToString();
MessageBox.Show( propsValue,"Subject" );
}
finally
{
//关闭word进程
object save = false;
oWord.Quit(ref save,ref Unknown,ref Unknown);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWord);
}
Word.Application oWord;
Word._Document oDoc;
object oMissing = Missing.Value;
object docBuiltInProps;
object Source = @"DocPath";
object Unknown =Type.Missing;
oWord = new Word.Application();
try{
oDoc = oWord.Documents.Open(ref Source,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown );
docBuiltInProps = oDoc.BuiltInDocumentProperties;
Type typeDocBuiltInProps = docBuiltInProps.GetType();
//获取作者
string index = "Author";
string propsValue;
object docAuthor = typeDocBuiltInProps.InvokeMember("Item",
BindingFlags.Default |
BindingFlags.GetProperty,
null,docBuiltInProps,
new object[] {index} );
Type typeDocAuthorProp = docAuthor.GetType();
propsValue = typeDocAuthorProp.InvokeMember("Value",
BindingFlags.Default |
BindingFlags.GetProperty,
null,docAuthor,
new object[] {} ).ToString();
MessageBox.Show( propsValue,"Author" );
//获取主题
index = "Subject";
propsValue = "The Subject";
object docSubjectProp = typeDocBuiltInProps.InvokeMember("Item",
BindingFlags.Default |
BindingFlags.GetProperty,
null,docBuiltInProps,
new object[] {index} );
Type typeDocSubjectProp = docSubjectProp.GetType();
propsValue = typeDocSubjectProp.InvokeMember("Value",
BindingFlags.Default |BindingFlags.GetProperty,
null,docSubjectProp,
new object[] {} ).ToString();
MessageBox.Show( propsValue,"Subject" );
}
finally{
//关闭word进程
object save = false;
oWord.Quit(ref save,ref Unknown,ref Unknown);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWord);
}

博客展示了通过C#代码获取Word文档作者和主题的方法。先添加对Word组件和命名空间的引用,接着打开指定路径的Word文档,利用反射机制获取文档的内置属性,进而提取作者和主题信息,最后关闭Word进程。
1659

被折叠的 条评论
为什么被折叠?



