January 11, 2012

Reading the Custom Properties of MS Office Word 2007 & 2010 documents

Earlier, we have discussed about reading the Summary and Custom Properties of Word 2003 using DSO DLL.
Here are the articles references

As already mentioned in the above articles, DSO dll is a 32 bit and also it has OLE property reader class, which can read only the office 2003 documents.
The same DSO file cannot be used for reading the properties of 2007 & 2010. This is because, word 2003 stores the properties in OLE type and hence DSO has capabilities to read the properties. But word 2007 and 2010 stores in XML formats.

Want to know how the office 2007 & 2010 stores the properties in XML formats?
Change the extension of word 2007 or 2010 documents from .docx to .zip. Now extract the contents.
You will see many xml files inside that folder.
Now open the folder -> docProps folder -> 3 files will be there                     
 1.  App.xml – it stores the document’s summary properties
     2.   Core.xml – it stores the document’s summary properties
     3.   Custom.xml – it stores the document’s custom properties
The below snap shot shows the custom.xml file of a word 2007 document
It is possible to read the custom properties of word document using Office DLLs (which is deployed when you install a MS office in a machine).
But how to read the properties without using Office DLLs?
Hence, we will go for an open source dll provided by Microsoft called Open Office XML SDK 2.0.
The same can be downloaded from the below link
It has the capabilities to read the xml properties from the MS office documents.

Code snippet for reading custom the properties of word 2007 & 2010

public Dictionary<string, string> WDGetCustomProperties(string filename)
using (var package = WordprocessingDocument.Open(filename, false))
var properties = new Dictionary<string, string>();
var customProps = package.CustomFilePropertiesPart;
foreach (var property in package.CustomFilePropertiesPart.Properties.Elements<CustomDocumentProperty>())
                    if (property.Name == "Name")
                        Name = Convert.ToString(property.InnerText);
                    if (property.Name == "Expertise")
                        ExpertiseIn = Convert.ToString(property.InnerText);
                    if (property.Name == "Place")
                        Place = Convert.ToString(property.InnerText);
 return properties;
Note: Don’t forget to declare the 3 variables used for storing the values in theabove code.
Hence, this article shows you how to read the custom properties of the word 
2007 & 2010 documents.
To know how to create the custom properties in the Word 2007 & 2010 read 
this article.
Hope this helps You! Please free to comment.


Post a Comment

Dear Readers,

I LOVE to hear from you! Your feedback is always appreciated. I will try to reply to your query as soon as possible.

1. Make sure to click the "Notify me" check box at the right side to be notified of follow up comments and replies.
2. Please Do Not Spam - Spam comments will be deleted immediately upon review.