I would like some help to retrieve the properties of a word document. I have gotten as far as getting the title, subject and author. But I can't seem to get the "Date Last Saved" property and I don't know how to get a list of the property names.
My code looks like this:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Interop;
using System.Reflection;
using System.IO;
namespace MetaDataSorter
{
class Program
{
static void Main(string[] args)
{
String dirName = @"H:\projekt\test raw files";
String fileNameString = @"H:\projekt\raw files\vgahm\1 NTFS\Raw Files\Microsoft Word Document\1-300\FILE006.DOC";
object fileName = (object)fileNameString;
object missing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document aDoc = null;
if (File.Exists((string)fileName))
{
DateTime toDay = DateTime.Now;
object readOnly = false;
object isVisible = false;
wordApp.Visible = false;
aDoc = wordApp.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 missing, ref missing, ref missing,
ref missing, ref missing);
aDoc.Activate();
//object property = getWordDocumentPropertyValue(aDoc, "Title");
System.Console.WriteLine("property: " + getWordDocumentPropertyValue(aDoc, "Title"));
System.Console.WriteLine("property: " + getWordDocumentPropertyValue(aDoc, "Subject"));
System.Console.WriteLine("property: " + getWordDocumentPropertyValue(aDoc, "Author"));
//System.Console.WriteLine("property: " + getWordDocumentPropertyValue(aDoc, "Date Last Saved"));
aDoc.Close();
}
}
private static String getWordDocumentPropertyValue(Microsoft.Office.Interop.Word.Document document, string propertyName)
{
object builtInProperties = document.BuiltInDocumentProperties;
Type builtInPropertiesType = builtInProperties.GetType();
object property = builtInPropertiesType.InvokeMember("Item", BindingFlags.GetProperty, null, builtInProperties, new object[] { propertyName });
Type propertyType = property.GetType();
object propertyValue = propertyType.InvokeMember("Value", BindingFlags.GetProperty, null, property, new object[] { });
return propertyValue.ToString();
}
}
}
How should I go about to get a list of the property values?