<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://openxmldeveloper.org/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang=""><title type="html">OpenXML Developer</title><subtitle type="html" /><id>http://openxmldeveloper.org/blog/b/openxmldeveloper/atom.aspx</id><link rel="alternate" type="text/html" href="http://openxmldeveloper.org/blog/b/openxmldeveloper/default.aspx" /><link rel="self" type="application/atom+xml" href="http://openxmldeveloper.org/blog/b/openxmldeveloper/atom.aspx" /><generator uri="http://telligent.com" version="5.6.582.12783">Community Server</generator><updated>2013-02-07T03:40:00Z</updated><entry><title>Using Both the Strongly Typed Object Model and LINQ to XML in an Open XML Application</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/05/09/using-both-the-strongly-typed-object-model-and-linq-to-xml-in-an-open-xml-application.aspx" /><link rel="enclosure" type="application/zip" length="67790" href="http://openxmldeveloper.org/cfs-file.ashx/__key/communityserver-components-postattachments/00-00-16-08-46/UsingLtxWithStronglyTypedOM.zip" /><id>/blog/b/openxmldeveloper/archive/2013/05/09/using-both-the-strongly-typed-object-model-and-linq-to-xml-in-an-open-xml-application.aspx</id><published>2013-05-09T10:45:02Z</published><updated>2013-05-09T10:45:02Z</updated><content type="html">Sometimes developers want to use the strongly-typed object model of the Open XML SDK in combination with code written using LINQ to XML. You may want to use functionality from PowerTools for Open XML (which is written using LINQ to XML), and you may want to write your code using the strongly typed OM. There are variations between the two approaches in how you get and set the contents of parts. If you don&amp;#39;t take care of the mechanics properly, then you will make changes using one or the other...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/05/09/using-both-the-strongly-typed-object-model-and-linq-to-xml-in-an-open-xml-application.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160846" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author></entry><entry><title>Fine-Grained Control When Importing Content Using DocumentBuilder</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/05/08/fine-grained-control-when-importing-content-using-documentbuilder.aspx" /><id>/blog/b/openxmldeveloper/archive/2013/05/08/fine-grained-control-when-importing-content-using-documentbuilder.aspx</id><published>2013-05-08T18:02:59Z</published><updated>2013-05-08T18:02:59Z</updated><content type="html">Recently I had a question about how to import the contents of one cell in one table into a cell in a different table in another document. As you probably know, moving content from one document to another in Open XML is complicated, because of interrelated markup. It isn&amp;#39;t enough just to move the markup in the cell to the cell in the destination table; you need to also bring along any auxiliary information such as images, drawings, comments, and other such artifacts. DocumentBuilder addresses...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/05/08/fine-grained-control-when-importing-content-using-documentbuilder.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160832" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author></entry><entry><title>Screen-Cast: Starting Chapters on Odd Pages in WordprocessingML</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/05/06/screen-cast-starting-chapters-on-odd-pages-in-wordprocessingml.aspx" /><id>/blog/b/openxmldeveloper/archive/2013/05/06/screen-cast-starting-chapters-on-odd-pages-in-wordprocessingml.aspx</id><published>2013-05-06T14:21:00Z</published><updated>2013-05-06T14:21:00Z</updated><content type="html">Scenario: You need to generate a document for a book, and you want each chapter to start on an odd-numbered page, so that the chapter title page is on the right-hand side of the binding. This question has been asked on the forum here at OpenXMLDeveloper.org , so I recorded a screen-cast explaining exactly how to accomplish this. Along the way, this screen-cast can serve to fill-in your knowledge about sections and headers. Return to the Table of Contents of this screen-cast series. This screen-cast...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/05/06/screen-cast-starting-chapters-on-odd-pages-in-wordprocessingml.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160785" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author></entry><entry><title>Screen-Cast: Writing a Custom Axis Method</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/04/29/screen-cast-writing-a-custom-axis-method.aspx" /><id>/blog/b/openxmldeveloper/archive/2013/04/29/screen-cast-writing-a-custom-axis-method.aspx</id><published>2013-04-29T14:50:06Z</published><updated>2013-04-29T14:50:06Z</updated><content type="html">Sometimes the easiest way to accomplish a particular task is to write an axis method that returns just the elements in an Open XML document that you are interested in. Sometimes you want to write the axis method in a lazy fashion so that it performs as well as possible on large documents. You also may need to use some form or another of recursion as the easiest way to write your axis method. However, recursion and laziness are at odds. You can&amp;#39;t write a method that uses &amp;#39;yield return&amp;#39;...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/04/29/screen-cast-writing-a-custom-axis-method.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160750" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author></entry><entry><title>Screen-Cast: WordprocessingML Tables Part 2</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/04/02/screen-cast-wordprocessingml-tables-part-2.aspx" /><id>/blog/b/openxmldeveloper/archive/2013/04/02/screen-cast-wordprocessingml-tables-part-2.aspx</id><published>2013-04-03T02:13:00Z</published><updated>2013-04-03T02:13:00Z</updated><content type="html">This screen-cast continues our discussion about table markup in WordprocessingML. Going beyond the basic structure of tables, it discusses various issues about rendering. This screen-cast explains the w:cnfStyle element, and how it relates to the w:tblLook element. Return to the Table of Contents of this screen-cast series. (Please visit the site to view this video)...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/04/02/screen-cast-wordprocessingml-tables-part-2.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160660" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author></entry><entry><title>Screen-Cast: WordprocessingML Tables Part 1</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/04/01/screen-cast-wordprocessingml-tables-part-1.aspx" /><id>/blog/b/openxmldeveloper/archive/2013/04/01/screen-cast-wordprocessingml-tables-part-1.aspx</id><published>2013-04-01T10:40:00Z</published><updated>2013-04-01T10:40:00Z</updated><content type="html">This screen-cast discusses table markup in WordprocessingML. It explains the basic structure of tables, and discusses how WordprocessingML table markup differs from HTML. The following screen-cast in this series (coming soon) examines various issues around table rendering. Return to the Table of Contents of this screen-cast series. (Please visit the site to view this video)...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/04/01/screen-cast-wordprocessingml-tables-part-1.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160654" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author></entry><entry><title>Screen-Cast: Complex Transforms of XML Elements</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/03/28/screen-cast-complex-transforms-of-xml-elements.aspx" /><id>/blog/b/openxmldeveloper/archive/2013/03/28/screen-cast-complex-transforms-of-xml-elements.aspx</id><published>2013-03-28T14:13:31Z</published><updated>2013-03-28T14:13:31Z</updated><content type="html">This is the nineteenth screen-cast in a series on writing Recursive Pure Functional Transformations (RPFT) of XML. In this screen-cast, I discuss an interesting idiom / pattern for doing complex transforms of XML elements. Return to the Table of Contents of this screen-cast series. To demonstrate this scenario, I write code to set the paragraph and character styles for specific paragraphs. (Please visit the site to view this video)...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/03/28/screen-cast-complex-transforms-of-xml-elements.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160651" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author></entry><entry><title>Does Functional Programming Matter?</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/03/14/does-functional-programming-matter.aspx" /><id>/blog/b/openxmldeveloper/archive/2013/03/14/does-functional-programming-matter.aspx</id><published>2013-03-14T19:39:37Z</published><updated>2013-03-14T19:39:37Z</updated><content type="html">A number of years ago, I gave a talk at a tech conference, and in the feedback, I received a &amp;lsquo;complaint&amp;rsquo; that I didn&amp;rsquo;t really explain how I was writing the code that I was publishing as part of PowerTools for Open XML &amp;ndash; code such as RevisionAccepter, ListItemRetriever, and HtmlConverter. Developers sometimes look at the code in those modules, and their reaction is &amp;ldquo;Huh????&amp;rdquo; The main problem with presenting those coding techniques was that I had one hour at that...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/03/14/does-functional-programming-matter.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160583" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author></entry><entry><title>Screen-Cast: Why Do Transform Methods Return Object?</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/02/28/screen-cast-why-do-transform-methods-return-object.aspx" /><id>/blog/b/openxmldeveloper/archive/2013/02/28/screen-cast-why-do-transform-methods-return-object.aspx</id><published>2013-02-28T11:11:28Z</published><updated>2013-02-28T11:11:28Z</updated><content type="html">This is the eighteenth screen-cast in a series on writing Recursive Pure Functional Transformations (RPFT) of XML. In this screen-cast, I discuss why the transform methods return object instead of some other type such as XObject, XElement, or XNode. The short answer is that sometimes the transform method needs to return a single element or node, and sometimes it needs to return a collection of elements or nodes. Return to the Table of Contents of this screen-cast series. To demonstrate this scenario...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/02/28/screen-cast-why-do-transform-methods-return-object.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160518" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author></entry><entry><title>Open XML Markup Explorer App for Word 2013</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/02/26/open-xml-markup-explorer-app-for-word-2013.aspx" /><link rel="enclosure" type="application/octet-stream" length="1909678" href="http://openxmldeveloper.org/cfs-file.ashx/__key/communityserver-components-postattachments/00-00-16-05-10/WordMarkupExplorer.zip" /><id>/blog/b/openxmldeveloper/archive/2013/02/26/open-xml-markup-explorer-app-for-word-2013.aspx</id><published>2013-02-26T14:40:48Z</published><updated>2013-02-26T14:40:48Z</updated><content type="html">This screen-cast introduces a small Word 2013 &amp;quot;app&amp;quot; that enables you to select content in a Word document, click a button in a task pane, and see the markup for the selected content. Further, you can modify the markup in the task pane, click a button, and replace the selected content in the document with the markup. This functionality is pretty valuable to a developer new to Open XML development. You can explore the markup for a wide variety of Word document artifacts. It is also helpful...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/02/26/open-xml-markup-explorer-app-for-word-2013.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160510" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author><category term="WordProcessingML" scheme="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/tags/WordProcessingML/default.aspx" /><category term="Word 2013" scheme="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/tags/Word+2013/default.aspx" /></entry><entry><title>Screen-Cast: Exploring the Structure of Embedded Spreadsheets in Word Documents</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/02/20/screen-cast-exploring-the-structure-of-embedded-spreadsheets-in-word-documents.aspx" /><id>/blog/b/openxmldeveloper/archive/2013/02/20/screen-cast-exploring-the-structure-of-embedded-spreadsheets-in-word-documents.aspx</id><published>2013-02-20T12:00:30Z</published><updated>2013-02-20T12:00:30Z</updated><content type="html">Most users of Microsoft Office are aware that you can directly embed an Excel spreadsheet (XLSX) in a Word document (DOCX). In Open XML terms, the XLSX is stored in a binary part. In addition, there is an image of the view of that spreadsheet, also in its own separate part. This screen-cast shows how to unzip the DOCX, see where the embedded XLSX is, unzip the XLSX, change some markup in one of the worksheets, re-zip the XLSX, and re-zip the DOCX. Further, it is interesting to see where the image...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/02/20/screen-cast-exploring-the-structure-of-embedded-spreadsheets-in-word-documents.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160479" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author><category term="WordProcessingML" scheme="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/tags/WordProcessingML/default.aspx" /><category term="SpreadsheetML" scheme="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/tags/SpreadsheetML/default.aspx" /></entry><entry><title>Screen-Cast: Transforming Attributes in Recursive Pure Functional Transformations (RPFT) of XML</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/02/15/screen-cast-transforming-attributes-in-recursive-pure-functional-transformations-rpft-of-xml.aspx" /><id>/blog/b/openxmldeveloper/archive/2013/02/15/screen-cast-transforming-attributes-in-recursive-pure-functional-transformations-rpft-of-xml.aspx</id><published>2013-02-15T21:41:42Z</published><updated>2013-02-15T21:41:42Z</updated><content type="html">This is the seventeenth screen-cast in a series on writing Recursive Pure Functional Transformations (RPFT) of XML. In this screen-cast, we discuss transforming attributes. If you have been following along closely, you probably could imagine what this code looks like, but it is worthwhile to see this in action. Return to the Table of Contents of this screen-cast series. To demonstrate this scenario, I write code to remove the RSID attributes from a WordprocessingML document. (Please visit the site...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/02/15/screen-cast-transforming-attributes-in-recursive-pure-functional-transformations-rpft-of-xml.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160445" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author></entry><entry><title>Innovative Use of Open XML with SAP</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/02/13/innovative-use-of-open-xml-with-sap.aspx" /><id>/blog/b/openxmldeveloper/archive/2013/02/13/innovative-use-of-open-xml-with-sap.aspx</id><published>2013-02-13T13:56:05Z</published><updated>2013-02-13T13:56:05Z</updated><content type="html">This is a guest post by Ronen Almog, showing an innovative use of Open XML with SAP. This Open XML application combines two of the main scenarios of Open XML: Document Generation, and Content Extraction. As a way to make it easier for SAP users to maintain certain data, this program generates some Open XML documents, the user then edits those documents, and then finally, the documents are parsed, their contents extracted, and the SAP database is updated. Enjoy! -Eric SAP systems are very popular...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/02/13/innovative-use-of-open-xml-with-sap.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160426" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author><category term="Open XML" scheme="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/tags/Open+XML/default.aspx" /><category term="SAP" scheme="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/tags/SAP/default.aspx" /></entry><entry><title>Inserting an Image into a Bookmark in an OpenXML WordprocessingML Document</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/02/11/inserting-an-image-into-a-bookmark-in-an-openxml-wordprocessingml-document.aspx" /><link rel="enclosure" type="application/zip" length="277839" href="http://openxmldeveloper.org/cfs-file.ashx/__key/communityserver-components-postattachments/00-00-16-03-96/ReplaceBookmark.zip" /><id>/blog/b/openxmldeveloper/archive/2013/02/11/inserting-an-image-into-a-bookmark-in-an-openxml-wordprocessingml-document.aspx</id><published>2013-02-11T07:06:00Z</published><updated>2013-02-11T07:06:00Z</updated><content type="html">Bookmarks provide a convenient way in WordprocessingML to provide insertion points for various items, such as text, images, etc. Previously, I have outlined how to programmatically retrieve and replace text within a bookmark. In a recent project, a client wanted to use bookmarks as insertion points for one or more images. Using with the replace bookmark text sample code as a starting point, I extended it to include image insertion. There are a number of additional steps to create an Open XML package...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/02/11/inserting-an-image-into-a-bookmark-in-an-openxml-wordprocessingml-document.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160396" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author></entry><entry><title>Integrating Open XML Functionality in a PowerShell Script by using Managed Code via the Add-Type Cmdlet</title><link rel="alternate" type="text/html" href="/blog/b/openxmldeveloper/archive/2013/02/07/integrating-open-xml-functionality-in-a-powershell-script-by-using-managed-code-via-the-add-type-cmdlet.aspx" /><id>/blog/b/openxmldeveloper/archive/2013/02/07/integrating-open-xml-functionality-in-a-powershell-script-by-using-managed-code-via-the-add-type-cmdlet.aspx</id><published>2013-02-07T09:40:00Z</published><updated>2013-02-07T09:40:00Z</updated><content type="html">A question in a forum here at OpenXMLDeveloper.org clued me into a cool new way to add Open XML functionality into a PowerShell cmdlet - PowerShell 2.0 and above enable you to directly embed C# code in a PowerShell script using the Add-Type cmdlet. To use this cmdlet, you pass two arguments: A list of the fully qualified names of the assemblies that your C# code requires. A string containing the C# code. After calling the cmdlet, that type is available for your use in your PowerShell script. I&amp;#39;ve...(&lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/02/07/integrating-open-xml-functionality-in-a-powershell-script-by-using-managed-code-via-the-add-type-cmdlet.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://openxmldeveloper.org/aggbug.aspx?PostID=160375" width="1" height="1"&gt;</content><author><name>Eric White</name><uri>http://openxmldeveloper.org/members/Eric-White/default.aspx</uri></author><category term="PowerShell" scheme="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/tags/PowerShell/default.aspx" /></entry></feed>