While I finish up another blog solution, this time on importing a table from Word into Excel, I thought I would share some information on two useful tools you guys can leverage when building Open XML solutions. The first tool I want to talk about is the next release of PowerTools for Open XML. PowerTools for Open XML is an open source project on CodePlex, which is entirely based on version 1 of the Open XML SDK. This tool supports the PowerShell piping architecture, by providing 30+ cmdlets. Think of a cmdlet as a black box, where something comes in and something else comes out. In the case of PowerTools for Open XML, these cmdlets create and modify Open XML documents in a variety of ways. For example, there are cmdlets that remove comments, accept tracked changes, merge multiple documents or sections, and even create charts. One of the coolest things about this tool is that IT professionals and developers can perform batch scripts right within PowerShell. By the way, this tool is released as open source, under the Microsoft Public License (Ms-PL), which means you are free to use the code in your own solutions.
Eric White has a great blog post outlining some of the details with respect to version 1.1 of the PowerTools for Open XML. In this post he has some great examples showing you how to merge sections of documents together. In my previous post, I showed you the easy way to assemble multiple Word documents by taking advantage of altChunks. Version 1.1 of the PowerTools for Open XML actually does merging the hard way. Check it out and let us know what you think.
The next tool I want to talk about is around creating Office document solutions within native code, like C++. The Open XML SDK is a great tool, but is essentially tied down to .NET technologies because of its reliance on System.IO.Packaging. How do you create a solution using native code? In the past you would either have to write your own native -> managed transition layer or do some kind of context switch. The good news is Microsoft has just released a Win32 version of System.IO.Packaging, called Win32 OPC. Feel free to post any questions about this technology at the following forum or at the Win32 OPC blog.