A normal programmer would conclude that Office's binary file formats:
- are deliberately obfuscated
- are the product of a demented Borg mind
- were created by insanely bad programmers
- and are impossible to read or create correctly.
You'd be wrong on all four counts. With a little bit of digging, I'll show you how those file formats got so unbelievably complicated, why it doesn't reflect bad programming on Microsoft's part, and what you can do to work around it.
Given its pedigree, I can't see how OOXML could be a good choice for a standard. Joel says the following about OOXML's proprietary predecessors:
They were not designed with interoperability in mind. The assumption, and a fairly reasonable one at the time, was that the Word file format only had to be read and written by Word. That means that whenever a programmer on the Word team had to make a decision about how to change the file format, the only thing they cared about was (a) what was fast and (b) what took the fewest lines of code in the Word code base. The idea of things like SGML and HTML—interchangeable, standardized file formats—didn't really take hold until the Internet made it practical to interchange documents in the first place; this was a decade later than the Office binary formats were first invented.