Today, Microsoft released ECMA-376 implementation notes for Office 2007 SP2. These notes are an invaluable resource for developers using Open XML. There is a lot of good information on this web site. It is organized by the ECMA-376 table of contents, which you see as a tree control. As you navigate through the tree, you will see certain nodes that have a small red ‘N’ next to them, which means that there are notes that apply to that section of the standard. Doug Mahugh has posted a detailed explanation of the site, as well as some good examples of notes. Stephen Peront wrote about some notes and how they would inform a developer who is reading and writing Open XML spreadsheet files.
As a good example of an implementation note, standards sometimes don’t specify limits on the lengths of specific values. In some places, the ECMA-376 standard only makes recommendations about limits on value lengths. But as we all know, in real-world applications, to build robust applications that perform well, there sometimes must be limits on lengths of values. The standard doesn’t state that there should not be a limit; a conforming application can limit value lengths. When you want to write SpreadsheetML documents that Excel 2007 can open, it is useful to understand the limits.
For example, in the Shared String Table, section 3.4.12 documents the t (Text) element. The standard doesn’t indicate the maximum length. However, we learn from the implementation notes that Excel restricts the value of this element to 32767 characters. Knowing this limit in Excel allows developers to make sure that the spreadsheet documents that they create to be opened successfully by Excel.
I really love working with open document formats. Nearly every day, I see news about implementations of Open XML, or talk to customers who are implementing innovative solutions using Open XML. These companies are taking advantage of the interoperability that Open XML affords, increasing the value that they provide to their customers, and enabling their customers to work more efficiently.