I’ve been toying around with some document generation lately and thought I’d share a bit of what I’ve learned. Here’s a method for extracting a list of custom properties in use in the document:
/// <summary> /// Retrieves custom properties from a given Word document /// </summary> /// <param name="file">Full path to the Word document</param> /// <returns>A dictionary representation of the document's custom properties</returns> public static Dictionary<string, string> GetDocProperties(string file) { Application WordApp = null; var DocProperties = new Dictionary<string, string>(); try { // spin up a new WinWord.exe WordApp = new Application(); // open the specified document WordApp.Documents.Open(file); // grab the custom properties container dynamic CustomProps = WordApp.ActiveDocument.CustomDocumentProperties; // extract each property foreach (var Prop in CustomProps) { DocProperties.Add(Prop.Name, Prop.Value); } } finally { // close doc and shutdown word if (WordApp != null) { if (WordApp.ActiveDocument != null) { WordApp.ActiveDocument.Close(); } WordApp.Quit(); } } // return properties return DocProperties; }
This is so much easier and cleaner with .NET4’s new dynamic capabilities and how nice it plays with COM. To use this, add the following references to your project:
- Microsoft.Office.Interop.Word, v12
- Office, v12