<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Stephen Peront</title><link>http://blogs.msdn.com/speront/default.aspx</link><description>Office Interoperability - Technically Speaking</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>DII Event London, May 18, 2009 – Recap</title><link>http://blogs.msdn.com/speront/archive/2009/06/10/9724041.aspx</link><pubDate>Wed, 10 Jun 2009 15:06:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9724041</guid><dc:creator>stephenperont</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/speront/comments/9724041.aspx</comments><wfw:commentRss>http://blogs.msdn.com/speront/commentrss.aspx?PostID=9724041</wfw:commentRss><description>&lt;p&gt;&lt;img style="margin: 0px 0px 0px 10px; display: inline" align="right" src="http://farm3.static.flickr.com/2468/3607693328_e080288048.jpg" width="370" height="370" /&gt; &lt;/p&gt;  &lt;p&gt;Well, a few days have turned into a few weeks. The joy of technology, travel and catching up on things. You can read a recap of the event and download the presentations &lt;a href="http://www.documentinteropinitiative.org/recentevents/londonmay09.aspx" target="_blank"&gt;here&lt;/a&gt;. I will just take a few minutes to provide some salient points from my perspective.&lt;/p&gt;  &lt;p&gt;We held the event in the Microsoft offices at Cardinal Place in London, UK.&amp;#160; We had an excellent turnout with participants from Fraunhofer FOKUS, Workshare, PowerPoint Alchemy, Griffin Brown Digital Publishing, FEDICT, Dialogika, Gama System, Genisoft, PowerPoint Alchemy, Datalucid Limited, and RealDolmen, as well as independent experts from SC34 and the OASIS ODF/OIC technical committees.&lt;/p&gt;  &lt;p&gt;The focus of this event was the new Fraunhofer FOKUS IS29500 Validator and Document Library project. Members of the Fraunhofer team presented the project to industry experts and received feedback from industry experts including Alex Brown (convener of SC34 WG1 and member of WG4), Bart Hanssens (Chair of the OASIS OIC TC), and Dennis Hamilton (Secretary of&amp;#160; the OASIS OIC TC). This broad expertise across document formats led to a wide-ranging conversation about managing document format standards.&lt;/p&gt;  &lt;p&gt;Stephanie Krieger, Julien Chable and John Wilson spoke up quite often at the event, raising interoperability concerns with standards conformance from real world customer situations. Stephanie is a well accomplished author who has written a number of books, including &lt;a href="http://www.microsoft.com/learning/en/us/Books/9491.aspx" target="_blank"&gt;Advanced Microsoft Office Documents 2007 Edition Inside Out&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Some of the attendees have taken the time to write their thoughts on the event, here is a link to their posts:&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;Stephanie Krieger – &lt;a href="http://www.arouet.net/2009/05/great_london_event_open_xml_an.html" target="_blank"&gt;Great London Event, Open XML and Document Standards&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;Julien Chable (French) – &lt;a href="http://blogs.developpeur.org/neodante/archive/2009/05/18/open-xml-document-interoperability-initiative-londres-partie-1.aspx" target="_blank"&gt;Document Interoperability Initiative Part 1&lt;/a&gt; and &lt;a href="http://blogs.developpeur.org/neodante/archive/2009/05/18/open-xml-document-interoperability-initiative-partie-2-just-for-fun.aspx" target="_blank"&gt;Part 2&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;Ciprian Jichici – &lt;a href="http://www.ciprianjichici.ro/blog/Comment.aspx?EntryID=c1817b3b-e837-4f29-bc60-e481162b7714" target="_blank"&gt;OOXML and Conformance Testing&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;Maarten Balliauw – &lt;a href="http://blog.maartenballiauw.be/post/2009/05/18/Document-Interoperability-Workshop-London-May-18-2009.aspx" target="_blank"&gt;Document Interoperability Workshop, London&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;In addition to the introduction of the Fraunhofer FOKUS project, there were a number of presentations shared by attendees. I have included a brief description of each of the presentations.&lt;/p&gt;  &lt;h4&gt;Introduction and Interoperability @ Microsoft UK&lt;/h4&gt;  &lt;p&gt;&lt;img style="margin: 0px 10px 0px 0px; display: inline" align="left" src="http://farm4.static.flickr.com/3553/3602249260_32f0387c65_t.jpg" /&gt;&lt;img style="margin: 0px 0px 0px 15px; display: inline" align="right" src="http://farm3.static.flickr.com/2458/3602249292_762a7e3fec_t.jpg" /&gt;Paul Lorimer (left) is the Group Manager of the Office Interoperability team. Paul kicked off the event by talking about value of the Fraunhofer FOKUS project and along with some goals that Microsoft is looking to achieve. Giampiero Nanni (right) is the Director of Interoperability for Microsoft in the UK; he presented on what Microsoft in the UK is doing around interoperability. It was great to have Paul and Giampiero at the event, as they were able to answer a number of questions that came up during the event, sharing Microsoft’s goals and efforts. You can download Paul’s presentation &lt;a href="http://www.documentinteropinitiative.org/media/399/01%20-%20dii%20london%20may%2009%20-%20paul%20lorimer%20-%20interoperability.pdf" target="_blank"&gt;here&lt;/a&gt;, and Giampiero’s presentation &lt;a href="http://www.documentinteropinitiative.org/media/396/01%20-%20dii%20london%20may%2009%20-%20giampiero%20nanni%20-%20interop.pdf" target="_blank"&gt;here&lt;/a&gt;. You can read more about interoperability at Microsoft &lt;a href="http://www.microsoft.com/interop/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;Standards-based validation of IEC/ISO 29500 XML resources&lt;/h4&gt;  &lt;p&gt;&lt;img style="margin: 0px 10px 0px 0px; display: inline" align="left" src="http://farm3.static.flickr.com/2459/3607424702_e171bc5ebc_t.jpg" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://adjb.net/" target="_blank"&gt;Alex Brown&lt;/a&gt; discussed how the word “valid” has a very specific meaning within a standard, and that when people use the word validation, they generally mean “schema-valid”. Alex explained how validation requires a much deeper meaning, requiring terms such as: conformant, valid, interoperable and portable. Alex provided a history of ODF going through the standards process and explained where IS29500 is in the process along with the current set of activities there. Alex then explained the differences between “application” conformance and “document” conformance. He finished his presentation with a demonstration of using a new W3C technology, XProc, to show how XML Pipelines can be used to test all of the previously mentioned validation terms in a succinct and manageable way. You can read more about XML Pipelines in &lt;a href="http://adjb.net/post/Notes-on-Document-Conformance-and-Portability-4.aspx" target="_blank"&gt;this post&lt;/a&gt; on his blog. You can download Alex’s presentation &lt;a href="http://www.documentinteropinitiative.org/media/402/02%20-%20dii%20london%20may%2009%20-%20alex%20brown%20-%20a%20standards%20based%20approach%20to%20ooxml%20conformance%20testing.pdf" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;High Fidelity Programmatic Access to Document Content &lt;/h4&gt;  &lt;p&gt;&lt;img style="margin: 0px 10px 0px 0px; display: inline" align="left" src="http://farm4.static.flickr.com/3561/3607424736_96a21566d4_t.jpg" /&gt; &lt;a href="http://www.request-response.com/blog/" target="_blank"&gt;Matevž Gačnik&lt;/a&gt; explained the definition of “original” content as defined by the Slovenian government and European Union legislature. According to these regulations, a document can be considered “original” if it is signed by the author, stored and archived by a certified software solution and is stored in a preferred document format. Matevž explained the challenge that IS29500 is not currently a preferred format because when the CTD was approved, IS29500 had not yet been approved as a standard. Matevž shared some feedback from their organization about Office and IS29500; one point that stood out to me was his comment that parsing Office documents as XML is “2000x faster”. You can download Matevž’s presentation &lt;a href="http://www.documentinteropinitiative.org/media/405/03%20-%20dii%20london%20may%2009%20-%20matevž%20gačnik%20-%20high%20fidelity%20programmatic%20access%20to%20document%20content.pdf" target="_blank"&gt;here&lt;/a&gt; (Note: to view this presentation, you may need to right-click on the link and select “Save Target As…”, then download and open from your local computer.)&lt;/p&gt;  &lt;h4&gt;PHP PowerPoint Project on CodePlex &lt;/h4&gt;  &lt;p&gt;&lt;img style="margin: 0px 10px 0px 0px; display: inline" align="left" src="http://farm3.static.flickr.com/2470/3607424776_38365fe19c_t.jpg" /&gt; &lt;a href="http://blog.maartenballiauw.be/" target="_blank"&gt;Maarten Balliauw&lt;/a&gt;, in lightning speed, introduced the group to a new PHP project on &lt;a href="http://www.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt;, called &lt;a href="http://phppowerpoint.codeplex.com/" target="_blank"&gt;PHPPowerPoint&lt;/a&gt;. The PHPPowerPoint project provides a set of classes for PHP for reading and writing the PresentationML file formats. The PHPPowerPoint project originated from the &lt;a href="http://phpexcel.codeplex.com/" target="_blank"&gt;PHPExcel&lt;/a&gt; project. Maarten demonstrated the PHPPowerPoint, and Slide classes, then showing us how the PHPPowerPoint_Reader_IReader and PHPPowerPoint_Writer_IWriter interfaces are used for persisting the document. Maarten concluded his presentation by generating a document using PHPPowerPoint. You can download Maarten’s presentation &lt;a href="http://www.documentinteropinitiative.org/media/408/04%20-%20dii%20london%20may%2009%20-%20maarten%20balliauw%20-%20phppowerpoint.pdf" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;Interoperability by Community &lt;/h4&gt;  &lt;p&gt;&lt;img style="margin: 0px 10px 0px 0px; display: inline" align="left" src="http://farm4.static.flickr.com/3368/3607424794_d1a99a0c93_t.jpg" /&gt; Gerd Schürmann started by sharing a little history about Fraunhofer, introducing us to the late Joseph von Fraunhofer (1787 – 1826). Joseph was a scientist, discovering the “Fraunhofer Lines” in the sun spectrum; an inventor, creating a new manufacturing method for lenses; and an entrepreneur, being a director and associate of a glassworks. Gerd explained the breadth of offerings that Fraunhofer provides, including: research and development projects, advance studies and consultancies, services, standardization and fora activities, academic education and teaching and prototype development. Gerd concluded by introducing the IS29500 Validator and Document Library project. You can download Gerd’s presentation &lt;a href="http://www.documentinteropinitiative.org/media/411/05%20-%20dii%20london%20may%2009%20-%20gerd%20schuermann%20-%20fraunhofer%20fokus%20introduction.pdf" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;PLANETS &amp;amp; Doc Conversion Tools&lt;/h4&gt;  &lt;p&gt;&lt;img style="margin: 0px 0px 0px 10px; display: inline" align="right" src="http://farm3.static.flickr.com/2450/3606605023_f71d84857b_t.jpg" /&gt; &lt;img style="margin: 0px 10px 0px 0px; display: inline" align="left" src="http://farm4.static.flickr.com/3400/3607424830_85870dc005_t.jpg" /&gt; Wolfgang Keber (left) and Natasa Milic-Frayling (right) introduced us to the PLANETS project, which focuses on preserving digital assets. The four-year project is co-funded by the European Union and PLANET is an acronym which stands for &lt;strong&gt;P&lt;/strong&gt;reservation and &lt;strong&gt;L&lt;/strong&gt;ong-term &lt;strong&gt;A&lt;/strong&gt;ccess through &lt;strong&gt;Net&lt;/strong&gt;worked &lt;strong&gt;S&lt;/strong&gt;ervices. Natasa is from the Microsoft Research labs, which has contributed to this project. Wolfgang explained the challenges in going between different document formats. For example, converting a document from a Binary MS Office document and converting it to ODF or UOF. Wolfgang then explained that by creating a wrapper around each format, they have been able to achieve converting documents from many formats to many other formats. Wolfgang concluded his presentation by showing us a demo. Stephanie Krieger and Julien Chable proposed some difficult questions about the formatting, which spurred some lively and interesting discussion about the interoperability of some document formats with others. You can download Wolfgang’s presentation &lt;a href="http://www.documentinteropinitiative.org/media/414/06%20-%20dii%20london%20may%2009%20-%20wolfgang%20keber%20-%20planets%20and%20document%20conversion%20tools.pdf" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;Extensibility within Standards &lt;/h4&gt;  &lt;p&gt;&lt;img style="margin: 0px 10px 0px 0px; display: inline" align="left" src="http://farm3.static.flickr.com/2475/3607424890_cc4363a5b9_t.jpg" /&gt; I then had the privilege of presenting on the topic of extensibility within standards. I started the presentation with a discussion, asking people what they thought of when they heard the terms extensibility and standards together. I then moved into showing the extensibility mechanisms defined in Part 3 of the IS29500:2008 standard. I showed how custom elements and attributes can be added to the markup of the document. I then showed how an implementer can use alternate content blocks (ACB) to allow a consumer to gracefully render a previous version of the markup. I then provided a demo where I added custom elements and attributes to the markup of a PresentationML document, and opened the document in PowerPoint 2007. I concluded my session with another discussion, asking people whether they think extensibility mechanisms are a healthy object oriented way of advancing standards. This led to a lively discussion, but in general, I think people agreed that extensibility within standards has value. You can download my presentation &lt;a href="http://www.documentinteropinitiative.org/media/417/07%20-%20dii%20london%20may%2009%20-%20stephen%20peront%20-%20extensibility%20within%20standards.pdf" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;Fraunhofer – Validator and Test Document Library Project &lt;/h4&gt;  &lt;p&gt;&lt;img style="margin: 0px 5px 0px 0px; display: inline" align="left" src="http://farm4.static.flickr.com/3613/3606605105_ed3fc95782_t.jpg" /&gt; &lt;img style="margin: 0px 0px 0px 10px; display: inline" align="right" src="http://farm4.static.flickr.com/3349/3607424990_e99dc6e1b0_t.jpg" /&gt; Jan Ziesing (left) and Ucheoma “Uche” Ishionwu (right) picked up from where Gerd’s presentation left off by officially introducing the Fraunhofer FOKUS IS29500 Validator and Document Library project. Jan was the presenter, and he turned to Uche for three specific demos. Jan started by explaining that the purpose of the document library is to create a suite of documents for testing and verifying IS29500 interoperability. Fraunhofer will maintain a web site for a document repository where people can up/download documents. Jan shared with us their research on the complexity of categorizing documents, explaining how automation and validation can be used to categorize documents into specific domains when they are uploaded. You can download Jan’s presentation &lt;a href="http://www.documentinteropinitiative.org/media/429/08%20-%20dii%20london%20may%2009%20-%20fraunhofer%20-%20validator%20and%20test%20document%20library.pdf" target="_blank"&gt;here&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Uche provided demos for categorizing documents, building semantic rules for a photo book and semantic validation. In the first demo, Uche showed how categorizing documents is something that can be done programmatically. He identified different attributes of the presentation, then added weighted values to some attributes to level their importance in the categorization. You can download Uche’s first demo &lt;a href="http://www.documentinteropinitiative.org/media/420/08%20-%20dii%20london%20may%2009%20-%20fraunhofer%20-%20validator%20and%20test%20document%20library%20-%20demo%201.zip" target="_blank"&gt;here&lt;/a&gt;. In the second demo, Uche described how this categorization can be applied to a real world photo book document when uploaded to the Document Library. By applying these attributes Jan and Uche demonstrated how the programmatic categorization of the document allows the document to be easily found within the Document Library. You can download Uche’s second demo &lt;a href="http://www.documentinteropinitiative.org/media/423/08%20-%20dii%20london%20may%2009%20-%20fraunhofer%20-%20validator%20and%20test%20document%20library%20-%20demo%202.zip" target="_blank"&gt;here&lt;/a&gt;. In the third demo, Uche showed how an XSD schema is not enough to completely validate a document against a standard. Uche manually modified a document to invalidate it against the standard, but keep it compliant with the XSDs; he then ran validation on the document, which validated correctly. Uche then used Schematron to add semantic validation rules (i.e. rules that are only specified in the text of the standard) to more accurately validate his file against the standard. You can download Uche’s third demo &lt;a href="http://www.documentinteropinitiative.org/media/426/08%20-%20dii%20london%20may%2009%20-%20fraunhofer%20-%20validator%20and%20test%20document%20library%20-%20demo%203.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;You can email &lt;a href="mailto:Jan.Ziesing@fokus.fraunhofer.de?subject=IS29500 Validator and Document Library Project"&gt;Jan Ziesing&lt;/a&gt; to learn how to signup and contribute to the project.&lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;Roundtable Discussion&lt;/h4&gt;  &lt;p&gt;The event concluded with a roundtable discussion, led by Fraunhofer. Many topics were discussed; attendees provided feedback about the Validator and Document Library project, also sharing their thoughts about what validation scenarios are important to them. Here are some of the feedback that was shared:&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;ul&gt;       &lt;li&gt;Some people expressed the opinion that they would like SC34 to contribute to the validator; defining/validating the rules needed to validate IS29500 files          &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;Some people expressed the opinion that they would like the OASIS OIC TC to coordinate efforts between the Validator and Document Library project and the work the OIC TC is doing with ODF interoperability and validation          &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;Some people expressed that they would like to see the validator be made available as a web service          &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;Some people shared that some organizations may consider their documents as proprietary, and want to know if the validator could be made available to these organizations in such a way that they could either a) securely pass documents to the validator without fear of the document being made available to others, and/or b) have a copy of the validator that they can run privately within their own infrastructure          &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;Some people expressed that they would like the Document Library to have a mechanism by which the intellectual property rights (IPR) of the document and/or owner can be verified, thereby protecting the IPR of the document and/or owner. They felt that this would make the library more valid and useful to users &lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;Fraunhofer noted this feedback and hopes to incorporate it into their work.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9724041" width="1" height="1"&gt;</description></item><item><title>DII Event London – Home Safe</title><link>http://blogs.msdn.com/speront/archive/2009/05/21/9633684.aspx</link><pubDate>Thu, 21 May 2009 15:20:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9633684</guid><dc:creator>stephenperont</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/speront/comments/9633684.aspx</comments><wfw:commentRss>http://blogs.msdn.com/speront/commentrss.aspx?PostID=9633684</wfw:commentRss><description>&lt;p&gt;I am back in the US and arrived safely at home yesterday late in the afternoon. This was truly a great event; so good, in fact, that it was a tough decision for some people as to whether we should keep talking or go to dinner (of course, dinner won). I am just catching up on things now, and re-acclimating to the EST, but will publish a full report in a few days.&lt;/p&gt;  &lt;p&gt;Below is a picture we captured of the &lt;a href="http://www.britishmuseum.org/explore/highlights/highlight_objects/aes/t/the_rosetta_stone.aspx"&gt;Rosetta Stone&lt;/a&gt; while at the &lt;a href="http://www.britishmuseum.org/"&gt;British Museum&lt;/a&gt;, along with close-ups of the languages inscribed on the stone and a picture from the event.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.flickr.com/photos/29678275@N04/3551456718/"&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://farm4.static.flickr.com/3333/3551456718_a2e73c4d60.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9633684" width="1" height="1"&gt;</description></item><item><title>DII Event London, May 18, 2009</title><link>http://blogs.msdn.com/speront/archive/2009/05/18/9624794.aspx</link><pubDate>Mon, 18 May 2009 07:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9624794</guid><dc:creator>stephenperont</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/speront/comments/9624794.aspx</comments><wfw:commentRss>http://blogs.msdn.com/speront/commentrss.aspx?PostID=9624794</wfw:commentRss><description>&lt;DIV style="WIDTH: 500px"&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=0 width=500 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" align=left&gt;
&lt;DIV id=diiEvent&gt;
&lt;P&gt;Welcome to Victoria Station in London! &lt;BR&gt;&lt;IMG height=480 src="http://bluecastle.files.wordpress.com/2009/05/mosaic1.jpg" width=480 align=center border=0 mce_src="http://bluecastle.files.wordpress.com/2009/05/mosaic1.jpg"&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;We are only hours away from the start of the Document Interoperability Initiative event in London, and I am very excited about today’s event. I was able to have dinner with some attendees last night and catch up on both personal and technical topics. &lt;/P&gt;
&lt;P&gt;One topic that seemed to take stage at dinner was Interoperability and Extensibility. I will be presenting on this topic at the event, and will share the details of my presentation in a future post. One topic that people want to discuss with Fraunhofer FOKUS is their recent &lt;A href="http://www.fokus.fraunhofer.de/en/elan/projekte/national/laufende_projekte/uebersetzung_ODF-OOXML/index.html" mce_href="http://www.fokus.fraunhofer.de/en/elan/projekte/national/laufende_projekte/uebersetzung_ODF-OOXML/index.html"&gt;report on interoperability between IS29500 and ODF&lt;/A&gt;. The main topic of the event is their new &lt;A href="http://www.fokus.fraunhofer.de/en/elan/projekte/international/laufende_projekte/Document-Interop_Lab/index.html" mce_href="http://www.fokus.fraunhofer.de/en/elan/projekte/international/laufende_projekte/Document-Interop_Lab/index.html"&gt;IS29500 Test Document Library and Validator project&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;I need to get back to preparing for the event; however, I will share details about the event later in the week. For now, here is the agenda for today.&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=1 width="100%" border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;09:00 – 09:15&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;Introduction (Paul Lorimer)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;09:15 – 09:30&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;Interoperability @ Microsoft UK (Giampiero Nanni)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;09:30 – 10:00&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;Standards-based validation of IEC/ISO 29500 XML resources (Alex Brown)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;10:00 – 10:25&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;High Fidelity Programmatic Access to Document Content (Matevž Gačnik)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;10:25 – 10:35&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;Break&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;10:30 – 10:50&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;PHP PowerPoint Project on CodePlex (Maarten Balliauw)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;10:50 – 11:20&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;Interoperability by Community (Gerd Schürmann)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;11:20 – 11:40&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;PLANETS &amp;amp; Doc Conversion Tools (Natasa Milic-Frayling &amp;amp; Wolfgang Keber)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;11:45 – 01:00&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;Lunch&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;01:00 – 01:45&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;Extensibility within Standards (Stephen Peront)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;01:45 – 03:45&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;Fraunhofer – Validator and Test Document Library Project (Gerd Schürmann)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;03:45 – 04:00&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;Break – Tea Time&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;04:00 – 04:55&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;Round Table Discussion (FhI FOKUS)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=100&gt;04:55 – 05:00&lt;/TD&gt;
&lt;TD class="" vAlign=top&gt;Wrap-up and Final Comments (Giampiero Nanni)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9624794" width="1" height="1"&gt;</description></item><item><title>DII Event London and Custom Document Format Interoperability</title><link>http://blogs.msdn.com/speront/archive/2009/04/17/9553717.aspx</link><pubDate>Fri, 17 Apr 2009 05:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9553717</guid><dc:creator>stephenperont</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.msdn.com/speront/comments/9553717.aspx</comments><wfw:commentRss>http://blogs.msdn.com/speront/commentrss.aspx?PostID=9553717</wfw:commentRss><description>&lt;DIV style="WIDTH: 500px"&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=0 width=500 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" align=left&gt;
&lt;DIV id=diiEvent&gt;
&lt;P&gt;&lt;A href="http://en.wikipedia.org/wiki/Image:Cardinalplace.jpg" mce_href="http://en.wikipedia.org/wiki/Image:Cardinalplace.jpg" ?&gt;&lt;IMG height=284 alt=http://en.wikipedia.org/wiki/Image:Cardinalplace.jpg src="http://upload.wikimedia.org/wikipedia/en/8/8e/Cardinalplace.jpg" width=225 align=right border=0 mce_src="http://upload.wikimedia.org/wikipedia/en/8/8e/Cardinalplace.jpg"&gt;&lt;/A&gt;I am very excited about the Document Interoperability Initiative (DII) event that &lt;A href="http://blogs.msdn.com/dmahugh/archive/2009/04/09/dii-workshop-london-may-18.aspx" mce_href="http://blogs.msdn.com/dmahugh/archive/2009/04/09/dii-workshop-london-may-18.aspx"&gt;Doug recently announced&lt;/A&gt;, which is coming up in May. The event is taking place in London where Fraunhofer will be sharing a community project they recently started to create an IS29500 validator and test document library. This project was started to address feedback from developers at past DII workshops about the need for a validator to ensure that the IS29500 documents they create will interoperate well with other implementations. They clearly stated that implementers need a place where they can go to download tools and resources that allow them to validate their documents against the IS29500 standard. While Microsoft is one of the contributors to this project, this is a community project that anyone can contribute to.&lt;BR&gt;&lt;BR&gt;The DII event in London is a free event that anyone can attend. I’ll be there to update everyone on some of the things we’re currently doing to enable interoperability, and I’m also managing registrations for the event so if you would like to come, &lt;A href="mailto:Stephen.Peront@microsoft.com?subject=DII%20Event%20London" mce_href="mailto:Stephen.Peront@microsoft.com?subject=DII%20Event%20London"&gt;send me an email&lt;/A&gt; and I will provide you with the event details. Fraunhofer will be sharing details on how you can contribute to the community project. If you are not able to make it to the event, but still want to contribute, soon you will be able to go to the project website to read about it and sign up. I will post details as soon as they are available. If you have any specific questions about the project, let me know and I will do my best to answer your questions.&lt;/P&gt;&lt;/DIV&gt;
&lt;DIV id=customDocumentFormat&gt;
&lt;H2&gt;Custom Document Format Interoperability&lt;/H2&gt;
&lt;P&gt;You may have heard that &lt;A href="http://blogs.msdn.com/dmahugh/archive/2008/08/05/guiding-principles-for-office-s-odf-implementation.aspx" mce_href="http://blogs.msdn.com/dmahugh/archive/2008/08/05/guiding-principles-for-office-s-odf-implementation.aspx"&gt;Office 2007 SP2 will now support editing files in the OpenDocument 1.1 (ODF) format&lt;/A&gt;. This document format was added to Office’s long list of supported documents formats to give customers more choices for the format they use to save their documents.&lt;/P&gt;
&lt;P&gt;In addition to allowing you to edit the ODF 1.1 format within Office 2007, SP2 also supports a new &lt;A href="http://msdn.microsoft.com/en-us/library/dd300649.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd300649.aspx"&gt;External File Format API&lt;/A&gt; that can be used to edit other document formats as well. With this API, users can choose to save their documents in any format they want. In this post we will explore how to use the API to enable Office 2007 to edit our own custom document format. We will then use Office 2007 to save our custom format as DOCX, ODT and HTML.&lt;/P&gt;
&lt;H3&gt;Our Custom Document Format&lt;/H3&gt;
&lt;P&gt;For the purpose of this article, we have a company who needs to manage their sales pipeline information. The data is available as XML, but they do not want to spend the money to build a custom editor. They just want to let their users edit the pipeline data in Word, as a table. They give these files an extension of SPLX (i.e. Sales PipeLine Xml)&lt;/P&gt;
&lt;P&gt;The sales pipeline information is made up of a series of SalesItem tags, each with a unique id that represents the index of the item. They track the name of the customer (&lt;FONT style="COLOR: #a31515; FONT-FAMILY: Courier New; size: 10pt"&gt;CustomerName&lt;/FONT&gt;), how much the deal represents (&lt;FONT style="COLOR: #a31515; FONT-FAMILY: Courier New; size: 10pt"&gt;DealValue&lt;/FONT&gt;) and a percent that represents how confident they are that the sales opportunity will close (&lt;FONT style="COLOR: #a31515; FONT-FAMILY: Courier New; size: 10pt"&gt;ConfidencePercent&lt;/FONT&gt;). &lt;/P&gt;
&lt;P&gt;Here is the sample XML file:&lt;/P&gt;
&lt;DIV align=center&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=7 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; FONT-SIZE: 10pt; BACKGROUND: #dbe5f1; BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; FONT-FAMILY: 'Courier New'" vAlign=top align=left&gt;&lt;BR&gt;&lt;FONT style="COLOR: blue"&gt;&amp;lt;?&lt;/FONT&gt;xml &lt;FONT style="COLOR: red"&gt;version&lt;/FONT&gt;="&lt;FONT style="COLOR: blue"&gt;1.0&lt;/FONT&gt;" &lt;FONT style="COLOR: red"&gt;encoding&lt;/FONT&gt;="&lt;FONT style="COLOR: blue"&gt;utf-8&lt;/FONT&gt;"&lt;FONT style="COLOR: blue"&gt;?&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;SalesPipeline&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;SalesItem&lt;/FONT&gt; &lt;FONT style="COLOR: red"&gt;id&lt;/FONT&gt;="&lt;FONT style="COLOR: blue"&gt;1&lt;/FONT&gt;"&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;CustomerName&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;ABC Company&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;CustomerName&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;DealValue&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;1000000&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;DealValue&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;ConfidencePercent&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;.2&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;ConfidencePercent&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;SalesItem&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;SalesItem&lt;/FONT&gt; &lt;FONT style="COLOR: red"&gt;id&lt;/FONT&gt;="&lt;FONT style="COLOR: blue"&gt;2&lt;/FONT&gt;"&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;CustomerName&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;123 Company&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;CustomerName&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;DealValue&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;1200000&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;DealValue&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;ConfidencePercent&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;.15&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;ConfidencePercent&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;SalesItem&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;SalesItem&lt;/FONT&gt; &lt;FONT style="COLOR: red"&gt;id&lt;/FONT&gt;="&lt;FONT style="COLOR: blue"&gt;3&lt;/FONT&gt;"&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;CustomerName&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;XNA Company&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;CustomerName&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;DealValue&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;500000&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;DealValue&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;ConfidencePercent&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;.65&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;ConfidencePercent&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;SalesItem&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;SalesItem&lt;/FONT&gt; &lt;FONT style="COLOR: red"&gt;id&lt;/FONT&gt;="&lt;FONT style="COLOR: blue"&gt;4&lt;/FONT&gt;"&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;CustomerName&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;Defender Company&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;CustomerName&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;DealValue&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;60000&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;DealValue&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT style="COLOR: #a31515"&gt;ConfidencePercent&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;.9&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;ConfidencePercent&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;SalesItem&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT style="COLOR: blue"&gt;&amp;lt;&lt;/FONT&gt;/&lt;FONT style="COLOR: #a31515"&gt;SalesPipeline&lt;/FONT&gt;&lt;FONT style="COLOR: blue"&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;We will create an External File Converter that will transform the XML into a WordprocessingML, document when opened; and then transform the respective document format back to the XML format when saved. This will allow the users to edit the sales pipeline information in Office 2007, while keeping the data in their own XML document format.&lt;/P&gt;
&lt;H3&gt;Implementing our Custom External File Converter&lt;/H3&gt;
&lt;H4&gt;Create an Out-of-Process COM Object&lt;/H4&gt;
&lt;P&gt;Use the following list of steps to create an out-of-process COM object.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open &lt;B&gt;Visual Studio&lt;/B&gt; with Administrator privileges. You can do this by right-clicking on the Visual Studio link in the start menu and selecting &lt;B&gt;Run as Administrator&lt;/B&gt;. Administrative privileges will be needed because the COM object will make changes to the registry when registering with COM+ services.&lt;BR&gt;&lt;BR&gt;
&lt;DIV align=center&gt;&lt;IMG alt="" src="http://farm4.static.flickr.com/3349/3446823575_e16c4c50be.jpg" mce_src="http://farm4.static.flickr.com/3349/3446823575_e16c4c50be.jpg"&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Create a new Project (&lt;B&gt;File -&amp;gt; New -&amp;gt;Project&lt;/B&gt;)&lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;In the &lt;B&gt;Project types&lt;/B&gt; list, select &lt;B&gt;Visual C#&lt;/B&gt; &lt;B&gt;-&amp;gt; Windows&lt;/B&gt;. In the &lt;B&gt;Templates&lt;/B&gt; list, select the &lt;B&gt;Empty Project&lt;/B&gt; item. Type "&lt;B&gt;MyEFC&lt;/B&gt;" for the &lt;B&gt;Solution Name&lt;/B&gt; and "&lt;B&gt;SalesPipeline&lt;/B&gt;" for the &lt;B&gt;Name&lt;/B&gt;. Your &lt;B&gt;New Project&lt;/B&gt; window should look like the picture below, then click the &lt;B&gt;Ok&lt;/B&gt; button.&lt;BR&gt;&lt;BR&gt;
&lt;DIV align=center&gt;&lt;IMG height=265 alt="" src="http://farm4.static.flickr.com/3347/3446823595_ed72d95d2b.jpg" width=375 mce_src="http://farm4.static.flickr.com/3347/3446823595_ed72d95d2b.jpg"&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Right-click on the project &lt;B&gt;References&lt;/B&gt;, and select &lt;B&gt;Add References...&lt;/B&gt;&lt;BR&gt;&lt;BR&gt;
&lt;DIV align=center&gt;&lt;IMG alt="" src="http://farm4.static.flickr.com/3356/3447637350_43e5aae9e3.jpg" mce_src="http://farm4.static.flickr.com/3356/3447637350_43e5aae9e3.jpg"&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Select the &lt;B&gt;.NET&lt;/B&gt; tab, and select the &lt;B&gt;&lt;SPAN style="COLOR: #c00000"&gt;System.EnterpriseServices&lt;/SPAN&gt;&lt;/B&gt; item with Version &lt;B&gt;2.0.0.0&lt;/B&gt;. Click the &lt;B&gt;Ok&lt;/B&gt; button to add the reference.&lt;BR&gt;&lt;BR&gt;
&lt;DIV align=center&gt;&lt;IMG height=304 alt="" src="http://farm4.static.flickr.com/3620/3447637338_a26bcbb0ab.jpg" width=361 mce_src="http://farm4.static.flickr.com/3620/3447637338_a26bcbb0ab.jpg"&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Right-click on the project &lt;B&gt;References&lt;/B&gt;, and select &lt;B&gt;Add References….&lt;/B&gt; Select the &lt;B&gt;.NET &lt;/B&gt;tab, and select the &lt;B&gt;&lt;SPAN style="COLOR: #c00000"&gt;System.Windows.Forms&lt;/SPAN&gt;&lt;/B&gt; item with &lt;B&gt;Version 2.0.0.0&lt;/B&gt;. Click the &lt;B&gt;Ok &lt;/B&gt;button to add the reference.&lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Right-click on the project &lt;B&gt;References&lt;/B&gt;, and select &lt;B&gt;Add References….&lt;/B&gt; Select the &lt;B&gt;COM &lt;/B&gt;tab, and select the &lt;B&gt;&lt;SPAN style="COLOR: #c00000"&gt;Microsoft Office 12.0 Object Library&lt;/SPAN&gt;&lt;/B&gt; item with TypeLib &lt;B&gt;Version 2.4&lt;/B&gt;. Click the &lt;B&gt;Ok &lt;/B&gt;button to add the reference.&lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Now we will add a class for our COM server. Right-click on the project and select &lt;B&gt;Add -&amp;gt; Class&lt;/B&gt;. 
&lt;DIV align=center&gt;&lt;IMG alt="" src="http://farm4.static.flickr.com/3360/3447637306_1ccf70c6af.jpg" mce_src="http://farm4.static.flickr.com/3360/3447637306_1ccf70c6af.jpg"&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Enter &lt;B&gt;MyCOMServer.cs&lt;/B&gt; for the &lt;B&gt;Name&lt;/B&gt;; then click the &lt;B&gt;Ok&lt;/B&gt; button to create the class. Visual Studio will automatically add some additional references that are needed. &lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Update the class in the following ways.&lt;BR&gt;
&lt;UL&gt;
&lt;LI&gt;Add a using statement to the System.Windows.Forms namespace.&lt;/LI&gt;
&lt;LI&gt;Add a static Main() entry point method to the class.&lt;/LI&gt;
&lt;LI&gt;Mark the entry point method as single threaded by applying the [STAThread] attribute.&lt;/LI&gt;
&lt;LI&gt;Create a Windows message loop by calling Application.Run() method.&lt;/LI&gt;
&lt;LI&gt;Your code should now look something like this:&lt;/LI&gt;&lt;/UL&gt;&lt;!-- code block --&gt;
&lt;DIV style="LEFT: -30px; POSITION: relative" align=center&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=7 width="100%" border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;SPAN style="FONT-SIZE: 1px"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; FONT-SIZE: 10pt; BACKGROUND: #dbe5f1; BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; FONT-FAMILY: 'Courier New'" vAlign=top align=left&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Windows.Forms;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;namespace&lt;/SPAN&gt; SalesPipeline&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;static class&lt;/SPAN&gt; MyCOMServer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;SPAN style="COLOR: #2b91af"&gt;STAThread&lt;/SPAN&gt;]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;static void&lt;/SPAN&gt; Main()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;Application&lt;/SPAN&gt;.Run();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;}&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;We now need to add assembly flags to make our assembly COM visible and assign it a GUID. Right-click on the project and select &lt;B&gt;Properties&lt;/B&gt;. Select the &lt;B&gt;Application&lt;/B&gt; tab, then click the &lt;B&gt;Assembly Information…&lt;/B&gt; button. Enter "{&lt;B&gt;BD3489D9-EAE7-4c9d-BF88-D7B7C05DDE45&lt;/B&gt;}" into the &lt;B&gt;GUID&lt;/B&gt; field, then click &lt;B&gt;Ok&lt;/B&gt;. &lt;SPAN class=style1&gt;IMPORTANT&lt;/SPAN&gt;: Click the &lt;B&gt;Assembly Information…&lt;/B&gt; button a second time and this time, check the Make assembly &lt;B&gt;COM-Visible &lt;/B&gt;checkbox; then click &lt;B&gt;Ok &lt;/B&gt;button again. Doing this a second time is important.&lt;BR&gt;&lt;BR&gt;
&lt;DIV align=center&gt;&lt;IMG alt="" src="http://farm4.static.flickr.com/3636/3446823533_5a543beb4e.jpg" mce_src="http://farm4.static.flickr.com/3636/3446823533_5a543beb4e.jpg"&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Next, we need to set the Project Output type to a Windows Application. While the tab is selected on the project properties, select &lt;B&gt;Windows Application &lt;/B&gt;from the &lt;B&gt;Output Application &lt;/B&gt;type drop-down.&lt;BR&gt;&lt;BR&gt;
&lt;DIV align=center&gt;&lt;IMG alt="" src="http://farm4.static.flickr.com/3586/3446823675_9d286c8de0.jpg" mce_src="http://farm4.static.flickr.com/3586/3446823675_9d286c8de0.jpg"&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Next we need to sign the assembly. While still in the project properties, select the &lt;B&gt;Signing&lt;/B&gt; tab. Check the &lt;B&gt;Sign the assembly&lt;/B&gt; checkbox, and select &lt;B&gt;&amp;lt;New...&amp;gt;&lt;/B&gt; from the drop down.&lt;BR&gt;&lt;BR&gt;
&lt;DIV align=center&gt;&lt;IMG alt="" src="http://farm4.static.flickr.com/3578/3446823521_5c77384114.jpg" mce_src="http://farm4.static.flickr.com/3578/3446823521_5c77384114.jpg"&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Type &lt;B&gt;SalesPipelineKey&lt;/B&gt; into the &lt;B&gt;Key file name&lt;/B&gt; field. &lt;B&gt;Uncheck&lt;/B&gt; the &lt;B&gt;Protect my key file with a password&lt;/B&gt; checkbox and click the &lt;B&gt;Ok&lt;/B&gt; button.&lt;BR&gt;&lt;BR&gt;
&lt;DIV align=center&gt;&lt;IMG alt="" src="http://farm4.static.flickr.com/3333/3447637208_c3cd23e9b1.jpg" mce_src="http://farm4.static.flickr.com/3333/3447637208_c3cd23e9b1.jpg"&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Open the &lt;B&gt;AssemblyInfo.cs &lt;/B&gt;file make the following list of changes: 
&lt;UL&gt;
&lt;LI&gt;Add a reference to the &lt;B&gt;System.EnterpriseServices&lt;/B&gt; namespace&lt;/LI&gt;
&lt;LI&gt;Add the &lt;B&gt;ApplicationActivation&lt;/B&gt; assembly attribute with the &lt;B&gt;ActivationOption.Server&lt;/B&gt; parameter&lt;/LI&gt;
&lt;LI&gt;Add the &lt;B&gt;ApplicationAccessControl &lt;/B&gt;assembly attribute with a &lt;B&gt;false&lt;/B&gt; parameter&lt;/LI&gt;
&lt;LI&gt;Make sure the that &lt;B&gt;ComVisible&lt;/B&gt; assembly attribute has a &lt;B&gt;true&lt;/B&gt; parameter&lt;/LI&gt;
&lt;LI&gt;Make sure the &lt;B&gt;Guid &lt;/B&gt;assembly attribute is set to the correct Guid&lt;/LI&gt;
&lt;LI&gt;The following is the code that reflects these steps&lt;/LI&gt;&lt;/UL&gt;&lt;!-- code block --&gt;
&lt;DIV style="LEFT: -30px; POSITION: relative" align=center&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=7 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;SPAN style="FONT-SIZE: 1px"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; FONT-SIZE: 10pt; BACKGROUND: #dbe5f1; BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; FONT-FAMILY: 'Courier New'" vAlign=top align=left&gt;&lt;SPAN style="COLOR: green"&gt;...&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.EnterpriseServices;&lt;BR&gt;&lt;SPAN style="COLOR: green"&gt;...&lt;/SPAN&gt;&lt;BR&gt;[&lt;SPAN style="COLOR: blue"&gt;assembly&lt;/SPAN&gt;: &lt;SPAN style="COLOR: #2b91af"&gt;ComVisible&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;)]&lt;BR&gt;[&lt;SPAN style="COLOR: blue"&gt;assembly&lt;/SPAN&gt;: &lt;SPAN style="COLOR: #2b91af"&gt;ApplicationActivation&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #2b91af"&gt;ActivationOption&lt;/SPAN&gt;.Server)]&lt;BR&gt;[&lt;SPAN style="COLOR: blue"&gt;assembly&lt;/SPAN&gt;: &lt;SPAN style="COLOR: #2b91af"&gt;ApplicationAccessControl&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;)]&lt;BR&gt;[&lt;SPAN style="COLOR: blue"&gt;assembly&lt;/SPAN&gt;: &lt;SPAN style="COLOR: #2b91af"&gt;Guid&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"BD3489D9-EAE7-4c9d-BF88-D7B7C05DDE45"&lt;/SPAN&gt;)]&lt;BR&gt;&lt;SPAN style="COLOR: green"&gt;...&lt;/SPAN&gt;&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;At this point, you should have a windowless COM server that is ready to host our out-of-process COM object. Compile and run the application to ensure that things are working correctly. &lt;B&gt;Note: &lt;/B&gt;When you run the application, nothing will happen, but Visual Studio should be in a debug state. Click the Stop Debugging to stop the application.&lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;H4&gt;Create a Basic External File Converter&lt;/H4&gt;
&lt;P&gt;Now that we have created a COM server it is time to create our External File Converter COM object. Use the following steps to create the COM object:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Right-click on the Project and select &lt;B&gt;Add -&amp;gt; Class&lt;/B&gt;. Enter &lt;B&gt;SalesPipelineConverter.cs&lt;/B&gt; in the &lt;B&gt;Name&lt;/B&gt; field and click the &lt;B&gt;Add&lt;/B&gt; button to create the class. 
&lt;UL&gt;
&lt;LI&gt;Add references to the &lt;B&gt;Microsoft.Office.Core&lt;/B&gt;, &lt;B&gt;System.EnterpriseServices&lt;/B&gt; and &lt;B&gt;System.Runtime.InteropServices&lt;/B&gt; namespaces.&lt;/LI&gt;
&lt;LI&gt;Add the &lt;B&gt;ComVisible&lt;/B&gt; attribute with a parameter of &lt;B&gt;true&lt;/B&gt;.&lt;/LI&gt;
&lt;LI&gt;Add the &lt;B&gt;Guid&lt;/B&gt; attribute with a parameter of "&lt;B&gt;CC03A6F5-8517-48c6-B8A5-DD287855F9BA&lt;/B&gt;"&lt;/LI&gt;
&lt;LI&gt;Mark the class as &lt;B&gt;public&lt;/B&gt;, and inherit it from the &lt;B&gt;ServicedComponent&lt;/B&gt; class&lt;/LI&gt;
&lt;LI&gt;Inherit the class from the &lt;B&gt;IConverter&lt;/B&gt; interface, and add the default implementation&lt;/LI&gt;
&lt;LI&gt;Compile your code to make sure that there are no syntax mistakes. Your code should now look something like this:&lt;/LI&gt;&lt;/UL&gt;&lt;!-- code block --&gt;
&lt;DIV style="LEFT: -30px; POSITION: relative" align=center&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=7 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;SPAN style="FONT-SIZE: 1px"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; FONT-SIZE: 10pt; BACKGROUND: #dbe5f1; BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; FONT-FAMILY: 'Courier New'" vAlign=top align=left&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; Microsoft.Office.Core;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.EnterpriseServices;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Runtime.InteropServices;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;namespace&lt;/SPAN&gt; SalesPipeline&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;SPAN style="COLOR: #2b91af"&gt;ComVisible&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;)]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;SPAN style="COLOR: #2b91af"&gt;Guid&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"CC03A6F5-8517-48c6-B8A5-DD287855F9BA"&lt;/SPAN&gt;)]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;public class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;SalesPipelineConverter&lt;/SPAN&gt; : &lt;SPAN style="COLOR: #2b91af"&gt;ServicedComponent&lt;/SPAN&gt;,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverter&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;//&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;// IConverter Members&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;//&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrExport(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrSourcePath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrDestPath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrClass,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterApplicationPreferences&lt;/SPAN&gt; pcap,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IConverterPreferences&lt;/SPAN&gt; ppcp,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterUICallback&lt;/SPAN&gt; pcuic)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;throw new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;NotImplementedException&lt;/SPAN&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrGetErrorString(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; hrErr,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out string&lt;/SPAN&gt; pbstrErrorMsg,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterApplicationPreferences&lt;/SPAN&gt; pcap)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;throw new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;NotImplementedException&lt;/SPAN&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrGetFormat(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrPath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out string&lt;/SPAN&gt; pbstrClass,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterApplicationPreferences&lt;/SPAN&gt; pcap,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IConverterPreferences&lt;/SPAN&gt; ppcp,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterUICallback&lt;/SPAN&gt; pcuic)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;throw new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;NotImplementedException&lt;/SPAN&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrImport(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrSourcePath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrDestPath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterApplicationPreferences&lt;/SPAN&gt; pcap,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IConverterPreferences&lt;/SPAN&gt; ppcp,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterUICallback&lt;/SPAN&gt; pcuic)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;throw new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;NotImplementedException&lt;/SPAN&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrInitConverter(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterApplicationPreferences&lt;/SPAN&gt; pcap,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IConverterPreferences&lt;/SPAN&gt; ppcp,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterUICallback&lt;/SPAN&gt; pcuic)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;throw new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;NotImplementedException&lt;/SPAN&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrUninitConverter(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterUICallback&lt;/SPAN&gt; pcuic)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;throw new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;NotImplementedException&lt;/SPAN&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Right-click on the Project and select &lt;B&gt;Add -&amp;gt; Class.&lt;/B&gt; Enter &lt;B&gt;SalesPipelineConverterPreferences.cs&lt;/B&gt; in the &lt;B&gt;Name&lt;/B&gt; field and click the &lt;B&gt;Add&lt;/B&gt; button to create the class. 
&lt;UL&gt;
&lt;LI&gt;Add references to the &lt;B&gt;Microsoft.Office.Core &lt;/B&gt;namespace.&lt;/LI&gt;
&lt;LI&gt;Mark the class as public, inherit it from the &lt;B&gt;IConverterPreferences&lt;/B&gt; interface, and add the default implementation&lt;/LI&gt;
&lt;LI&gt;Compile your code to make sure that there are no syntax mistakes. Your code should now look something like this:&lt;/LI&gt;&lt;/UL&gt;&lt;!-- code block --&gt;
&lt;DIV style="LEFT: -30px; POSITION: relative" align=center&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=7 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;SPAN style="FONT-SIZE: 1px"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; FONT-SIZE: 10pt; BACKGROUND: #dbe5f1; BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; FONT-FAMILY: 'Courier New'" vAlign=top align=left&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; Microsoft.Office.Core;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;namespace&lt;/SPAN&gt; SalesPipeline&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;public class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;SalesPipelineConverterPreferences&lt;/SPAN&gt; : &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterPreferences&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;//&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;// IConverterPreferences Members&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;//&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrCheckFormat(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out int&lt;/SPAN&gt; pFormat)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;throw new &lt;SPAN style="COLOR: #2b91af"&gt;NotImplementedException&lt;/SPAN&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrGetLossySave(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out int&lt;/SPAN&gt; pfLossySave)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;throw new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;NotImplementedException&lt;/SPAN&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrGetMacroEnabled(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out int&lt;/SPAN&gt; pfMacroEnabled)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;throw new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;NotImplementedException&lt;/SPAN&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Next we will provide a default implementation for the &lt;B&gt;IConverterPreferences&lt;/B&gt; interface. 
&lt;UL&gt;
&lt;LI&gt;Update the &lt;B&gt;HrCheckFormat&lt;/B&gt; method, setting the &lt;B&gt;pFormat&lt;/B&gt; output parameter to a value of &lt;B&gt;1&lt;/B&gt;. This setting specifies that we support the WordprocessingML ECMA376 macro-free document format. &lt;/LI&gt;
&lt;LI&gt;Update the &lt;B&gt;HrGetLossySave&lt;/B&gt; method, setting the &lt;B&gt;pfLossySave&lt;/B&gt; output parameter to the integer value of &lt;B&gt;false&lt;/B&gt;. This setting specifies that there is no loss of data when saved through our converter.&lt;/LI&gt;
&lt;LI&gt;Update the &lt;B&gt;HrGetMacroEnabled&lt;/B&gt; method, setting the &lt;B&gt;pfMacroEnabled&lt;/B&gt; output parameter to the integer value of &lt;B&gt;false&lt;/B&gt;. This setting specifies that we do not support macro enabled formats.&lt;/LI&gt;
&lt;LI&gt;Compile your code to make sure that there are no syntax mistakes. The code for your IConverterPreferences implementation should now look something like this:&lt;/LI&gt;&lt;/UL&gt;&lt;!-- code block --&gt;
&lt;DIV style="LEFT: -30px; POSITION: relative" align=center&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=7 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;SPAN style="FONT-SIZE: 1px"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; FONT-SIZE: 10pt; BACKGROUND: #dbe5f1; BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; FONT-FAMILY: 'Courier New'" vAlign=top align=left&gt;&lt;SPAN style="COLOR: green"&gt;//&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR: green"&gt;// IConverterPreferences Members&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR: green"&gt;//&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrCheckFormat(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out int&lt;/SPAN&gt; pFormat)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pFormat = 1;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrGetLossySave(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out int&lt;/SPAN&gt; pfLossySave)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pfLossySave = &lt;SPAN style="COLOR: #2b91af"&gt;Convert&lt;/SPAN&gt;.ToInt32(&lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrGetMacroEnabled(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out int&lt;/SPAN&gt; pfMacroEnabled)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pfMacroEnabled = &lt;SPAN style="COLOR: #2b91af"&gt;Convert&lt;/SPAN&gt;.ToInt32(&lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Next we will provide a default implementation for the &lt;B&gt;IConverter&lt;/B&gt; interface: 
&lt;UL&gt;
&lt;LI&gt;Update the &lt;B&gt;HrExport&lt;/B&gt; method, setting the &lt;B&gt;ppcp&lt;/B&gt; output parameter to a new &lt;B&gt;SalesPipelineConverterPreferences&lt;/B&gt; instance.&lt;/LI&gt;
&lt;LI&gt;Update the &lt;B&gt;HrGetErrorString&lt;/B&gt;, setting the &lt;B&gt;pbstrErrorMsg&lt;/B&gt; output parameter to &lt;B&gt;null&lt;/B&gt;.&lt;/LI&gt;
&lt;LI&gt;Update the &lt;B&gt;HrGetFormat&lt;/B&gt; method, setting the &lt;B&gt;pbstrClass&lt;/B&gt; output parameter to “&lt;B&gt;SalesPipelineConverter&lt;/B&gt;” and setting the &lt;B&gt;ppcp&lt;/B&gt; output parameter to a new &lt;B&gt;SalesPipelineConverterPreferences &lt;/B&gt;instance.&lt;/LI&gt;
&lt;LI&gt;Update the &lt;B&gt;HrImport&lt;/B&gt; method, setting the &lt;B&gt;ppcp&lt;/B&gt; output parameter to a new &lt;B&gt;SalesPipelineConverterPreferences&lt;/B&gt; instance.&lt;/LI&gt;
&lt;LI&gt;Update the &lt;B&gt;HrInitConverter&lt;/B&gt; method, setting the &lt;B&gt;ppcp&lt;/B&gt; output parameter to a new &lt;B&gt;SalesPipelineConverterPreferences&lt;/B&gt; instance.&lt;/LI&gt;
&lt;LI&gt;Update the &lt;B&gt;HrUninitConverter&lt;/B&gt; method, to have no code in it.&lt;/LI&gt;
&lt;LI&gt;Compile your code to make sure that there are no syntax mistakes. The code for your IConverter implementation should now look something like this:&lt;/LI&gt;&lt;/UL&gt;&lt;!-- code block --&gt;
&lt;DIV style="LEFT: -30px; POSITION: relative" align=center&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=7 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;SPAN style="FONT-SIZE: 1px"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; FONT-SIZE: 10pt; BACKGROUND: #dbe5f1; BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; FONT-FAMILY: 'Courier New'" vAlign=top align=left&gt;&lt;SPAN style="COLOR: green"&gt;//&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR: green"&gt;// IConverter Members&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR: green"&gt;//&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrExport(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrSourcePath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrDestPath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrClass,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterApplicationPreferences&lt;/SPAN&gt; pcap,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IConverterPreferences&lt;/SPAN&gt; ppcp,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterUICallback&lt;/SPAN&gt; pcuic)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ppcp = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;SalesPipelineConverterPreferences&lt;/SPAN&gt;();&lt;BR&gt;}&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrGetErrorString(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; hrErr,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out string&lt;/SPAN&gt; pbstrErrorMsg,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterApplicationPreferences&lt;/SPAN&gt; pcap)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pbstrErrorMsg = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrGetFormat(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrPath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out string&lt;/SPAN&gt; pbstrClass,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterApplicationPreferences&lt;/SPAN&gt; pcap,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IConverterPreferences&lt;/SPAN&gt; ppcp,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterUICallback&lt;/SPAN&gt; pcuic)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pbstrClass = &lt;SPAN style="COLOR: #a31515"&gt;"SalesPipelineConverter"&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ppcp = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;SalesPipelineConverterPreferences&lt;/SPAN&gt;();&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrImport(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrSourcePath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrDestPath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterApplicationPreferences&lt;/SPAN&gt; pcap,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IConverterPreferences&lt;/SPAN&gt; ppcp,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterUICallback&lt;/SPAN&gt; pcuic)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ppcp = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;SalesPipelineConverterPreferences&lt;/SPAN&gt;();&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrInitConverter(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterApplicationPreferences&lt;/SPAN&gt; pcap,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IConverterPreferences&lt;/SPAN&gt; ppcp,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterUICallback&lt;/SPAN&gt; pcuic)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ppcp = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;SalesPipelineConverterPreferences&lt;/SPAN&gt;();&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrUninitConverter(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterUICallback&lt;/SPAN&gt; pcuic)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;// do nothing for now&lt;/SPAN&gt;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Now that we have created a default implementation for an External File Converter, we need to update our COM Server to register and unregister our COM object when the COM server starts and ends. Update the main method using the following steps: 
&lt;UL&gt;
&lt;LI&gt;Add a call to the &lt;B&gt;Application.OleRequired &lt;/B&gt;method before the call to &lt;B&gt;Application.Run&lt;/B&gt;.&lt;/LI&gt;
&lt;LI&gt;Create our COM object before the call to Application.Run&lt;/LI&gt;
&lt;LI&gt;Dispose of our COM object when the call to the Application.Run method returns&lt;/LI&gt;
&lt;LI&gt;Compile your code to make sure that there are no syntax mistakes. Your Main method should now look something like this:&lt;/LI&gt;&lt;/UL&gt;&lt;!-- code block --&gt;
&lt;DIV style="LEFT: -30px; POSITION: relative" align=center&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=7 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;SPAN style="FONT-SIZE: 1px"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; FONT-SIZE: 10pt; BACKGROUND: #dbe5f1; BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; FONT-FAMILY: 'Courier New'" vAlign=top align=left&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Windows.Forms;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;namespace&lt;/SPAN&gt; SalesPipeline&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;static class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;MyCOMServer&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;SPAN style="COLOR: #2b91af"&gt;STAThread&lt;/SPAN&gt;]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;static void&lt;/SPAN&gt; Main()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;Application&lt;/SPAN&gt;.OleRequired();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;SalesPipelineConverter&lt;/SPAN&gt; salesPipelineConverter = &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;SalesPipelineConverter&lt;/SPAN&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;Application&lt;/SPAN&gt;.Run();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (salesPipelineConverter != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;salesPipelineConverter.Dispose();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;salesPipelineConverter = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Set a breakpoint on the call to the &lt;B&gt;Application.OleRequired &lt;/B&gt;method and &lt;B&gt;Run &lt;/B&gt;your application. Step through the code till it gets to the &lt;B&gt;Application.Run &lt;/B&gt;method, then &lt;B&gt;Run &lt;/B&gt;the application. Make sure there are no runtime errors, and the call to create the &lt;B&gt;SalesPipelineConverter &lt;/B&gt;object should take a minute as your &lt;B&gt;COM &lt;/B&gt;object should register with &lt;B&gt;COM+ &lt;/B&gt;services. The &lt;B&gt;COM &lt;/B&gt;object is now ready to test with the Word 2007 SP2 application. 
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Note&lt;/B&gt;: If you receive an error that the application must be run as an Administrator. Close all instances of Visual Studio, and open it using the right-click, Run as Administrator steps described earlier. This may cause an issue with the registration of your object in COM+ services and you may need to restart from the beginning, using different names and Guid IDs. &lt;/LI&gt;&lt;/UL&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;To test our External File Converter, we need to register our COM object with the Word application through the registry. Add the following registry keys: &lt;!-- code block --&gt;
&lt;DIV style="LEFT: -30px; POSITION: relative" align=center&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=7 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;SPAN style="FONT-SIZE: 1px"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; FONT-SIZE: 10pt; BACKGROUND: #dbe5f1; BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; FONT-FAMILY: 'Courier New'" vAlign=top align=left&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Word\Text Converters\OOXML Converters]&lt;BR&gt;&lt;BR&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Word\Text Converters\OOXML Converters\Export]&lt;BR&gt;&lt;BR&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Word\Text Converters\OOXML Converters\Export\Sales Pipeline]&lt;BR&gt;"Clsid"="{CC03A6F5-8517-48c6-B8A5-DD287855F9BA}"&lt;BR&gt;"Name"=" Sales Pipeline"&lt;BR&gt;"Extensions"="splx"&lt;BR&gt;&lt;BR&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Word\Text Converters\OOXML Converters\Import]&lt;BR&gt;&lt;BR&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Word\Text Converters\OOXML Converters\Import\Sales Pipeline]&lt;BR&gt;"Clsid"="{CC03A6F5-8517-48c6-B8A5-DD287855F9BA}"&lt;BR&gt;"Name"=" Sales Pipeline"&lt;BR&gt;"Extensions"="splx"&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Before we test our file converter, we need to create a file with the .splx extension that includes the sales pipeline data. Create a file named &lt;B&gt;Sales Pipeline Data Jan 2009.splx&lt;/B&gt;, and copy the sales pipeline data listed earlier in this post into the file; then save and close the file. &lt;/LI&gt;&lt;/OL&gt;
&lt;H4&gt;Implement Import/Export for our Custom File Format&lt;/H4&gt;
&lt;P&gt;Now that we have created a basic External File Converter, it is time to customize the &lt;B&gt;HrImport&lt;/B&gt; and &lt;B&gt;HrExport&lt;/B&gt; methods. The HrImport method will be customized to convert our Sales Pipeline XML into a Word table when opened. The HrExport method will be customized to convert the Word table into our Sales Pipeline XML when saved.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Add a reference to &lt;B&gt;System.Xml.Linq&lt;/B&gt;, &lt;B&gt;DocumentFormat.OpenXml &lt;/B&gt;and &lt;B&gt;WindowsBase&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;Add using statements to &lt;B&gt;System.IO&lt;/B&gt;, &lt;B&gt;System.Xml&lt;/B&gt;, &lt;B&gt;System.Xml.Linq&lt;/B&gt;, and &lt;B&gt;DocumentFormat.OpenXml&lt;/B&gt;, &lt;B&gt;DocumentFormat.OpenXml.Packaging &lt;/B&gt;and &lt;B&gt;DocumentFormat.OpenXml.Wordprocessing&lt;/B&gt; 
&lt;DIV style="LEFT: -30px; POSITION: relative" align=center&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=7 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;SPAN style="FONT-SIZE: 1px"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; FONT-SIZE: 10pt; BACKGROUND: #dbe5f1; BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; FONT-FAMILY: 'Courier New'" vAlign=top align=left&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.IO;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Xml;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Xml.Linq;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; Microsoft.Office.Core;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.EnterpriseServices;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Runtime.InteropServices;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; OpenXml = DocumentFormat.OpenXml;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; Packaging = DocumentFormat.OpenXml.Packaging;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; Wordprocessing = DocumentFormat.OpenXml.Wordprocessing;&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Update the HrImport() method with the following code, which reads through the SPLX document format and creates a Word Table with the data. &lt;!-- code block --&gt;
&lt;DIV style="LEFT: -30px; POSITION: relative" align=center&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=7 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;SPAN style="FONT-SIZE: 1px"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; FONT-SIZE: 10pt; BACKGROUND: #dbe5f1; BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; FONT-FAMILY: 'Courier New'" vAlign=top align=left&gt;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrImport(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrSourcePath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrDestPath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterApplicationPreferences&lt;/SPAN&gt; pcap,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IConverterPreferences&lt;/SPAN&gt; ppcp,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterUICallback&lt;/SPAN&gt; pcuic)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ppcp = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;SalesPipelineConverterPreferences&lt;/SPAN&gt;();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; tempIndex = 0;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; foundFile = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; tempDocPath = &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; tempDir = (&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;FileInfo&lt;/SPAN&gt;(bstrDestPath)).Directory.FullName;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;while&lt;/SPAN&gt; (!foundFile &amp;amp;&amp;amp; tempIndex &amp;lt; 999)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tempDocPath = &lt;SPAN style="COLOR: #2b91af"&gt;String&lt;/SPAN&gt;.Format(&lt;SPAN style="COLOR: #a31515"&gt;"{0}\\~SalesPipeline{1:0000}.docx"&lt;/SPAN&gt;, tempDir, tempIndex++);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (!&lt;SPAN style="COLOR: #2b91af"&gt;File&lt;/SPAN&gt;.Exists(tempDocPath))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foundFile = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (!foundFile)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;throw new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;FileNotFoundException&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"Unable to create temp file"&lt;/SPAN&gt;);&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; (Packaging.&lt;SPAN style="COLOR: #2b91af"&gt;WordprocessingDocument&lt;/SPAN&gt; tempDoc = Packaging.&lt;SPAN style="COLOR: #2b91af"&gt;WordprocessingDocument&lt;/SPAN&gt;.Create(tempDocPath, OpenXml.&lt;SPAN style="COLOR: #2b91af"&gt;WordprocessingDocumentType&lt;/SPAN&gt;.Document))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;// create the table, table properties, and header row&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Table&lt;/SPAN&gt; salesPipelineTable = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; DocumentFormat.OpenXml.Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Table&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableProperties&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableStyle&lt;/SPAN&gt;() { Val = &lt;SPAN style="COLOR: #a31515"&gt;"TableGrid"&lt;/SPAN&gt; },&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableWidth&lt;/SPAN&gt;() { Width = 0, Type = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableWidthUnitValues&lt;/SPAN&gt;.Auto },&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableBorders&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TopBorder&lt;/SPAN&gt;() { Val = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;BorderValues&lt;/SPAN&gt;.Single, Size = 4, Space = 0, Color = &lt;SPAN style="COLOR: #a31515"&gt;"auto"&lt;/SPAN&gt; },&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;LeftBorder&lt;/SPAN&gt;() { Val = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;BorderValues&lt;/SPAN&gt;.Single, Size = 4, Space = 0, Color = &lt;SPAN style="COLOR: #a31515"&gt;"auto"&lt;/SPAN&gt; },&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;BottomBorder&lt;/SPAN&gt;() { Val = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;BorderValues&lt;/SPAN&gt;.Single, Size = 4, Space = 0, Color = &lt;SPAN style="COLOR: #a31515"&gt;"auto"&lt;/SPAN&gt; },&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;RightBorder&lt;/SPAN&gt;() { Val = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;BorderValues&lt;/SPAN&gt;.Single, Size = 4, Space = 0, Color = &lt;SPAN style="COLOR: #a31515"&gt;"auto"&lt;/SPAN&gt; },&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;InsideHorizontalBorder&lt;/SPAN&gt;() { Val = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;BorderValues&lt;/SPAN&gt;.Single, Size = 4, Space = 0, Color = &lt;SPAN style="COLOR: #a31515"&gt;"auto"&lt;/SPAN&gt; },&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;InsideVerticalBorder&lt;/SPAN&gt;() { Val = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;BorderValues&lt;/SPAN&gt;.Single, Size = 4, Space = 0, Color = &lt;SPAN style="COLOR: #a31515"&gt;"auto"&lt;/SPAN&gt; }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCellMargin&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TopMargin&lt;/SPAN&gt;() { Width = 10, Type = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableWidthUnitValues&lt;/SPAN&gt;.Dxa },&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;LeftMargin&lt;/SPAN&gt;() { Width = 10, Type = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableWidthUnitValues&lt;/SPAN&gt;.Dxa },&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;BottomMargin&lt;/SPAN&gt;() { Width = 10, Type = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableWidthUnitValues&lt;/SPAN&gt;.Dxa },&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;RightMargin&lt;/SPAN&gt;() { Width = 10, Type = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableWidthUnitValues&lt;/SPAN&gt;.Dxa }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableLook&lt;/SPAN&gt;() { Val = &lt;SPAN style="COLOR: #a31515"&gt;"04A0"&lt;/SPAN&gt; }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableGrid&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;GridColumn&lt;/SPAN&gt;() { Width = 3192 },&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;GridColumn&lt;/SPAN&gt;() { Width = 3192 },&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;GridColumn&lt;/SPAN&gt;() { Width = 3192 }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableRow&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCell&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCellProperties&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCellWidth&lt;/SPAN&gt;() { Width = 3192, Type = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableWidthUnitValues&lt;/SPAN&gt;.Dxa }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Paragraph&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Run&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Text&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"Customer Name"&lt;/SPAN&gt;)))),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCell&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCellProperties&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCellWidth&lt;/SPAN&gt;() { Width = 3192, Type = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableWidthUnitValues&lt;/SPAN&gt;.Dxa }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Paragraph&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;ParagraphProperties&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Justification&lt;/SPAN&gt;() { Val = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;JustificationValues&lt;/SPAN&gt;.Center }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Run&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Text&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"Deal Value"&lt;/SPAN&gt;)))),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCell&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCellProperties&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCellWidth&lt;/SPAN&gt;() { Width = 3192, Type = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableWidthUnitValues&lt;/SPAN&gt;.Dxa }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Paragraph&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;ParagraphProperties&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Justification&lt;/SPAN&gt;() { Val = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;JustificationValues&lt;/SPAN&gt;.Center }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Run&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Text&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"Confidence %"&lt;/SPAN&gt;))))));&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;// loop through each sales item and add a row to the table&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;XDocument&lt;/SPAN&gt; salesPipelineDoc = &lt;SPAN style="COLOR: #2b91af"&gt;XDocument&lt;/SPAN&gt;.Load(bstrSourcePath);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;XElement&lt;/SPAN&gt; salesItem &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; salesPipelineDoc.Root.Descendants(&lt;SPAN style="COLOR: #a31515"&gt;"SalesItem"&lt;/SPAN&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;salesPipelineTable.Append(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableRow&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCell&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCellProperties&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCellWidth&lt;/SPAN&gt;() { Width = 3192, Type = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableWidthUnitValues&lt;/SPAN&gt;.Dxa }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Paragraph&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Run&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Text&lt;/SPAN&gt;(salesItem.Element(&lt;SPAN style="COLOR: #a31515"&gt;"CustomerName"&lt;/SPAN&gt;).Value)))),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCell&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCellProperties&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCellWidth&lt;/SPAN&gt;() { Width = 3192, Type = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableWidthUnitValues&lt;/SPAN&gt;.Dxa }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Paragraph&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;ParagraphProperties&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Justification&lt;/SPAN&gt;() { Val = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;JustificationValues&lt;/SPAN&gt;.Center }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Run&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Text&lt;/SPAN&gt;(String.Format(&lt;SPAN style="COLOR: #a31515"&gt;"${0:#,#}"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #2b91af"&gt;Convert&lt;/SPAN&gt;.ToInt32(salesItem.Element(&lt;SPAN style="COLOR: #a31515"&gt;"DealValue"&lt;/SPAN&gt;).Value)))))),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCell&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCellProperties&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCellWidth&lt;/SPAN&gt;() { Width = 3192, Type = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableWidthUnitValues&lt;/SPAN&gt;.Dxa }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Paragraph&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;ParagraphProperties&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Justification&lt;/SPAN&gt;() { Val = Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;JustificationValues&lt;/SPAN&gt;.Center }),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Run&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Text&lt;/SPAN&gt;(String.Format(&lt;SPAN style="COLOR: #a31515"&gt;"{0:#}%"&lt;/SPAN&gt;, (&lt;SPAN style="COLOR: #2b91af"&gt;Convert&lt;/SPAN&gt;.ToDecimal(salesItem.Element(&lt;SPAN style="COLOR: #a31515"&gt;"ConfidencePercent"&lt;/SPAN&gt;).Value) * 100))))))));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;// create a document part and markup, inserting the table we created&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tempDoc.AddMainDocumentPart();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tempDoc.MainDocumentPart.Document =&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Document&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;Body&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;salesPipelineTable));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tempDoc.MainDocumentPart.Document.Save();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tempDoc.Close();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;File&lt;/SPAN&gt;.Copy(tempDocPath, bstrDestPath, &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;File&lt;/SPAN&gt;.Delete(tempDocPath);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Update the HrExport() method with the following code, which reads through the Word Table and exports the values to the SPLX document format. &lt;!-- code block --&gt;
&lt;DIV style="LEFT: -30px; POSITION: relative" align=center&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=7 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;SPAN style="FONT-SIZE: 1px"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; FONT-SIZE: 10pt; BACKGROUND: #dbe5f1; BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; FONT-FAMILY: 'Courier New'" vAlign=top align=left&gt;&lt;SPAN style="COLOR: blue"&gt;public void&lt;/SPAN&gt; HrExport(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrSourcePath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrDestPath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; bstrClass,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterApplicationPreferences&lt;/SPAN&gt; pcap,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;out&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IConverterPreferences&lt;/SPAN&gt; ppcp,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;IConverterUICallback&lt;/SPAN&gt; pcuic)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ppcp = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;SalesPipelineConverterPreferences&lt;/SPAN&gt;();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: #2b91af"&gt;XDocument&lt;/SPAN&gt; salesPipelineDoc = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;XDocument&lt;/SPAN&gt;(new &lt;SPAN style="COLOR: #2b91af"&gt;XElement&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"SalesPipeline"&lt;/SPAN&gt;));&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;// open the source document&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; (Packaging.&lt;SPAN style="COLOR: #2b91af"&gt;WordprocessingDocument&lt;/SPAN&gt; tempDoc = Packaging.&lt;SPAN style="COLOR: #2b91af"&gt;WordprocessingDocument&lt;/SPAN&gt;.Open(bstrSourcePath, &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; rowIndex = 0;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt; (Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableRow&lt;/SPAN&gt; tableRow &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; tempDoc.MainDocumentPart.Document.Descendants&amp;lt;Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableRow&lt;/SPAN&gt;&amp;gt;())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;// skip the header row&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (rowIndex == 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rowIndex++;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;continue&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; cellIndex = 1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; customerName = &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; dealValue = &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; confidencePercent = &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt; (Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCell&lt;/SPAN&gt; cell &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; tableRow.Descendants&amp;lt;Wordprocessing.&lt;SPAN style="COLOR: #2b91af"&gt;TableCell&lt;/SPAN&gt;&amp;gt;())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (cellIndex == 1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;customerName = cell.InnerText;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;else if&lt;/SPAN&gt; (cellIndex == 2)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dealValue = cell.InnerText.Replace(&lt;SPAN style="COLOR: #a31515"&gt;"$"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;).Replace(&lt;SPAN style="COLOR: #a31515"&gt;","&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;else if&lt;/SPAN&gt; (cellIndex == 3)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;confidencePercent = (&lt;SPAN style="COLOR: #2b91af"&gt;Convert&lt;/SPAN&gt;.ToDecimal(cell.InnerText.Replace(&lt;SPAN style="COLOR: #a31515"&gt;"%"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;)) / 100).ToString();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cellIndex++;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;salesPipelineDoc.Root.Add(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;XElement&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"SalesItem"&lt;/SPAN&gt;,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;XAttribute&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"id"&lt;/SPAN&gt;, rowIndex),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;XElement&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"CustomerName"&lt;/SPAN&gt;, customerName),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;XElement&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"DealValue"&lt;/SPAN&gt;, dealValue),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;XElement&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"ConfidencePercent"&lt;/SPAN&gt;, confidencePercent)));&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rowIndex++;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;// save it to XML&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;salesPipelineDoc.Save(bstrDestPath);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;H4&gt;Test the Sales Pipeline External File Converter&lt;/H4&gt;
&lt;P&gt;You are now ready to test your custom External File Converter.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open Word 2007 SP2, and select Open from the Office Menu&lt;/LI&gt;
&lt;LI&gt;Select Sales Pipeline (*.splx) from the file type drop-down&lt;/LI&gt;
&lt;LI&gt;Select the &lt;B&gt;Sales Pipeline Data Jan 2009.splx&lt;/B&gt; file that you created earlier&lt;BR&gt;&lt;BR&gt;
&lt;DIV align=center&gt;&lt;IMG alt="" src="http://farm4.static.flickr.com/3537/3447637278_0d9a46ea47.jpg" mce_src="http://farm4.static.flickr.com/3537/3447637278_0d9a46ea47.jpg"&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Word should open the file and display the data in a table&lt;BR&gt;&lt;BR&gt;
&lt;DIV align=center&gt;&lt;IMG alt="" src="http://farm4.static.flickr.com/3560/3446823753_9fbe2aff4b.jpg" mce_src="http://farm4.static.flickr.com/3560/3446823753_9fbe2aff4b.jpg"&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;You can add a row, fill in the appropriate values, and Save the document&lt;/LI&gt;
&lt;LI&gt;The &lt;B&gt;Sales Pipeline Data Jan 2009.splx&lt;/B&gt; file should now contain more XML with the data from the newly added row.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;You can also edit your sales pipeline information in the ODT format by doing the following:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Use the Save As feature of Word to save the document as an Open Document Text (*.odt) format&lt;/LI&gt;
&lt;LI&gt;Continue editing the ODT file in Word or close Word and open the ODT file using your favorite ODT editor. For example, you could open the file using Open Office Writer or Symphony.&lt;/LI&gt;
&lt;LI&gt;Add a row of data and save the file&lt;/LI&gt;
&lt;LI&gt;If using an application other than Word, open the file using Word 2007, then use the Save As feature to save the document as our Sales Pipeline (*.splx) format&lt;/LI&gt;
&lt;LI&gt;The row(s) that you added should now be saved in our custom document format. You can open the *.splx file using an XML editor to see the added XML record(s).&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;You can also save your custom format in any other format that Office 2007 SP2 supports. For example, you can use the Save As feature of Word to save the document as HTML.&lt;/P&gt;
&lt;H2&gt;External File Converter Resources&lt;/H2&gt;
&lt;P&gt;If you want to create your own Open XML External File Converter, you can read more about and &lt;A href="http://msdn.microsoft.com/en-us/library/dd300649.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd300649.aspx"&gt;download the API on MSDN&lt;/A&gt;. The MSDN article has a link to a &lt;A href="http://code.msdn.microsoft.com/openxmlconvinterface" mce_href="http://code.msdn.microsoft.com/openxmlconvinterface"&gt;code sample that you can download&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;As always, let me know if you have any questions or comments.&lt;SPAN style="FONT-FAMILY: Wingdings"&gt;J&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9553717" width="1" height="1"&gt;</description></item><item><title>Links for 02-24-2009</title><link>http://blogs.msdn.com/speront/archive/2009/02/24/9443100.aspx</link><pubDate>Tue, 24 Feb 2009 23:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9443100</guid><dc:creator>stephenperont</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/speront/comments/9443100.aspx</comments><wfw:commentRss>http://blogs.msdn.com/speront/commentrss.aspx?PostID=9443100</wfw:commentRss><description>&lt;TABLE class="" cellSpacing=0 cellPadding=0 width=500 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;
&lt;P&gt;In addition to posting my own content, I will from time to time post links to the great new Open XML developer content posted by a few of my colleagues. I took a look back to January of this year and there has been amazingly useful content posted, here is a summary of a few of my favorites. I hope you appreciate the quality of this content! This content just doesn’t exist out there yet; and it is great to see these people dedicating time to get us solid, useful content. They are setting the bar pretty high for the rest of us ... Thanks! (pun intended, chuckles) &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Fraunhofer Fokus – IS29500-Validator and Test-Library.&lt;/B&gt; &lt;A href="http://openxmldeveloper.org/archive/2009/02/24/4146.aspx" mce_href="http://openxmldeveloper.org/archive/2009/02/24/4146.aspx"&gt;Open XML Developer announced this week&lt;/A&gt; that Microsoft has partnered with Fraunhofer Fokus (Fraunhofer) on a project that will test the validity of IS29500 documents. As part of the project Fraunhofer will start a community effort to build an Open Source document validator and test library. You can expect to see a lot more published here on my blog and at &lt;A href="http://www.fokus.fraunhofer.de/en/elan/projekte/international/laufende_projekte/Document-Interop_Lab/index.html" mce_href="http://www.fokus.fraunhofer.de/en/elan/projekte/international/laufende_projekte/Document-Interop_Lab/index.html"&gt;Fraunhofer’s site&lt;/A&gt; about this project as it gets started. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Generating a Product Catalog as a Word Document.&lt;/B&gt; &lt;A href="http://blogs.msdn.com/brian_jones" mce_href="http://blogs.msdn.com/brian_jones"&gt;Brian Jones&lt;/A&gt; and Zeyad Rajabi have &lt;A href="http://blogs.msdn.com/brian_jones/archive/2009/01/19/pushing-data-from-a-database-into-a-word-document.aspx" mce_href="http://blogs.msdn.com/brian_jones/archive/2009/01/19/pushing-data-from-a-database-into-a-word-document.aspx"&gt;posted an article&lt;/A&gt; which shows how to build a solution that is able to easily generate a product catalog as a Word document from a database. They use the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&amp;amp;DisplayLang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&amp;amp;DisplayLang=en"&gt;Open XML SDK 2.0&lt;/A&gt; and build upon previous articles, and this approach works in both client and server environments; this is definitely a good read. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Creating Documents by Using the Open XML Format SDK 2.0.&lt;/B&gt; MSDN (&lt;A href="http://blogs.msdn.com/erikaehrli/" mce_href="http://blogs.msdn.com/erikaehrli/"&gt;Erika Ehrli&lt;/A&gt;) has published a three part article where Zeyad Rajabi and Frank Rice break down in very easy terms how to create wordprocessingML, presentationML and spreadsheetML documents. &lt;A href="http://msdn.microsoft.com/en-us/library/dd440953.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd440953.aspx"&gt;Part 1&lt;/A&gt;, starts the series by introducing the &lt;A href="http://msdn.microsoft.com/en-us/library/bb448854(office.14).aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb448854(office.14).aspx"&gt;Open XML SDK 2.0 CTP&lt;/A&gt;, showing how the packaging conventions work with the document parts and showing some sample code to create a simple document. &lt;A href="http://msdn.microsoft.com/en-us/library/dd452407.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd452407.aspx"&gt;Part 2&lt;/A&gt; shows how to create a SpreadsheetML document by building a chart from a data source to create a sales order. &lt;A href="http://msdn.microsoft.com/en-us/library/dd469465.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd469465.aspx"&gt;Part 3&lt;/A&gt; explores creating a PresentationML document, with roll-up information from Part 2. This is the most comprehensive article series on Open XML SDK development yet, you should seriously take the time to walk through each part. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Equality Semantics of LINQ to XML Trees.&lt;/B&gt; &lt;A href="http://blogs.msdn.com/ericwhite/archive/2009/01/28/equality-semantics-of-linq-to-xml-trees.aspx" mce_href="http://blogs.msdn.com/ericwhite/archive/2009/01/28/equality-semantics-of-linq-to-xml-trees.aspx"&gt;In this post&lt;/A&gt;, you will learn why it is important to be able to compare two XML trees for equivalence and how to use Linq to do just that. &lt;A href="http://blogs.msdn.com/ericwhite" mce_href="http://blogs.msdn.com/ericwhite"&gt;Eric White&lt;/A&gt; uses XSD to validate normalized XML trees and provide differential updates of one tree to the other. Eric explains the issues with normalization and provides excellent guidance on how to handle Xnames, and Xattributes. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Removing Comments from a Wordprocessing Document.&lt;/B&gt; Zeyad Rajabi explains on &lt;A href="http://blogs.msdn.com/brian_jones" mce_href="http://blogs.msdn.com/brian_jones"&gt;Brian Jones&lt;/A&gt; blog &lt;A href="http://blogs.msdn.com/brian_jones/archive/2009/02/06/removing-comments-from-a-wordprocessing-document-programmatically.aspx" mce_href="http://blogs.msdn.com/brian_jones/archive/2009/02/06/removing-comments-from-a-wordprocessing-document-programmatically.aspx"&gt;how to sanitize a document&lt;/A&gt; in order to remove personally identifiable information. Zeyad shows how to programmatically remove the types of personally identifiable information similar to what the Document Inspector feature in Office 2007 does. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;How to Copy a Worksheet within a Workbook.&lt;/B&gt; Based on feedback from blog readers, Zeyad creates an example of how to safely copy a worksheet between different workbooks. &lt;A href="http://blogs.msdn.com/brian_jones/archive/2009/02/19/how-to-copy-a-worksheet-within-a-workbook.aspx" mce_href="http://blogs.msdn.com/brian_jones/archive/2009/02/19/how-to-copy-a-worksheet-within-a-workbook.aspx"&gt;In this post&lt;/A&gt;, Zeyad lists the following steps:&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=3 width=500 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" width=10&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD class="" width=490 bgColor=#f2f2f2&gt;
&lt;OL&gt;
&lt;LI&gt;Open up the Spreadsheet document via the Open XML SDK &lt;/LI&gt;
&lt;LI&gt;Access the main workbook part, which will give us access to a bunch of related parts, like the different worksheets &lt;/LI&gt;
&lt;LI&gt;Access the worksheet we want to copy &lt;/LI&gt;
&lt;LI&gt;Clone the found worksheet plus all related parts and add the clone plus all related parts back to the workbook &lt;/LI&gt;
&lt;LI&gt;Perform cleanup work to ensure that tables, views, etc. work &lt;/LI&gt;
&lt;LI&gt;Add the newly created worksheet reference to the sheets list in the main workbook part &lt;/LI&gt;
&lt;LI&gt;Save changes made to the workbook&lt;/LI&gt;&lt;/OL&gt;&lt;/TD&gt;
&lt;TD class="" width=10&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;Zeyad goes out of his way to show useful worksheet scenarios such as conditional formatting, images and tables. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Export Data to Excel.&lt;/B&gt; &lt;A href="http://blogs.msdn.com/erikaehrli/archive/2009/01/30/how-to-export-data-to-excel-from-an-asp-net-application-avoid-the-file-format-differ-prompt.aspx" mce_href="http://blogs.msdn.com/erikaehrli/archive/2009/01/30/how-to-export-data-to-excel-from-an-asp-net-application-avoid-the-file-format-differ-prompt.aspx"&gt;In this post&lt;/A&gt;, &lt;A href="http://blogs.msdn.com/erikaehrli/" mce_href="http://blogs.msdn.com/erikaehrli/"&gt;Erika Ehrli&lt;/A&gt; explains how to perform the common ASP.NET developer task of exporting data from a database, Web service, or third-party API to Excel. Erika provides guidance on the different ways this is possible and &lt;B&gt;shows how to avoid the File Format Differ warning in Excel.&lt;/B&gt; &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Move/Insert/Delete Paragraphs.&lt;/B&gt; &lt;A href="http://blogs.msdn.com/ericwhite/archive/2009/02/05/move-insert-delete-paragraphs-in-word-processing-documents-using-the-open-xml-sdk.aspx" mce_href="http://blogs.msdn.com/ericwhite/archive/2009/02/05/move-insert-delete-paragraphs-in-word-processing-documents-using-the-open-xml-sdk.aspx"&gt;In this post&lt;/A&gt;, &lt;A href="http://blogs.msdn.com/ericwhite" mce_href="http://blogs.msdn.com/ericwhite"&gt;Eric White&lt;/A&gt; tackles the quite daunting process of copying paragraphs that contain markup which refers to something outside of the paragraph. For example, a paragraph containing markup indicating that a comment begins inside that paragraph, but where the comment ends in a later paragraph, a different paragraph contains the markup indicating the end of the comment. Eric breaks this complex problem down and shows how to safely work with Paragraphs. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Finding Paragraphs by Style Name or Content.&lt;/B&gt; Eric continues working with paragraph’s now taking the time to explain methods on how to &lt;A href="http://blogs.msdn.com/ericwhite/archive/2009/02/16/finding-paragraphs-by-style-name-or-content-in-an-open-xml-word-processing-document.aspx" mce_href="http://blogs.msdn.com/ericwhite/archive/2009/02/16/finding-paragraphs-by-style-name-or-content-in-an-open-xml-word-processing-document.aspx"&gt;find the paragraph(s) that you want&lt;/A&gt; to work with. This is a logical read before or after the move/insert/delete paragraphs post. Eric shows how to use Linq to query the XML markup of the wordprocessingML to find specific style names or content and get access to that part of the document to work with it. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9443100" width="1" height="1"&gt;</description></item><item><title>Implementer Notes Just Make Good Sense</title><link>http://blogs.msdn.com/speront/archive/2009/01/16/9324931.aspx</link><pubDate>Fri, 16 Jan 2009 09:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9324931</guid><dc:creator>stephenperont</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/speront/comments/9324931.aspx</comments><wfw:commentRss>http://blogs.msdn.com/speront/commentrss.aspx?PostID=9324931</wfw:commentRss><description>&lt;P&gt;I am pretty excited about our release of the &lt;A href="http://blogs.msdn.com/dmahugh/archive/2009/01/16/ecma-376-implementation-notes-for-office-2007-sp2.aspx"&gt;ECMA-376 Implementer Notes&lt;/A&gt;. These notes provide a wealth of information that are very useful to developers who are writing code that interoperates with Office. I have been working with Open XML for quite some time now and there are many days that I look back and wish that I had these notes to help aid me in my development. Here is a quick example. &lt;/P&gt;
&lt;P&gt;In this example we will create a simple Excel spreadsheet with one workbook and three worksheets, using the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&amp;amp;DisplayLang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&amp;amp;DisplayLang=en"&gt;Open XML Format SDK 2.0&lt;/A&gt;. We start with some code to create the document. &lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://farm4.static.flickr.com/3484/3200125097_1758e3fea3.jpg?v=0" mce_src="http://farm4.static.flickr.com/3484/3200125097_1758e3fea3.jpg?v=0"&gt;&lt;/CENTER&gt;
&lt;P&gt;Before we go write a bunch of code to place values into cells, we can first go to the &lt;A href="http://www.documentinteropinitiative.org/" mce_href="http://www.documentinteropinitiative.org"&gt;Document Interop Initiative&lt;/A&gt; website to learn about the restrictions that Excel places on values in cells.&lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://farm4.static.flickr.com/3338/3200944440_39a53fb1ff.jpg?v=0" mce_src="http://farm4.static.flickr.com/3338/3200944440_39a53fb1ff.jpg?v=0"&gt;&lt;/CENTER&gt;
&lt;P&gt;We can navigate to the ECMA-376 standard outline by clicking &lt;B&gt;References&lt;/B&gt;, then selecting the &lt;B&gt;ECMA-376 1&lt;SUP&gt;st&lt;/SUP&gt; Edition&lt;/B&gt; item from the menu. &lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://farm4.static.flickr.com/3304/3200977584_09fa8847a2.jpg?v=0" mce_src="http://farm4.static.flickr.com/3304/3200977584_09fa8847a2.jpg?v=0"&gt;&lt;/CENTER&gt;
&lt;P&gt;We then use the left navigation to expand &lt;B&gt;Part 4, Section 3.3.1.93. v (Cell Value)&lt;/B&gt; and click on this node to see the details for this section of the standard. While on that page, we see that there is a &lt;B&gt;View Notes&lt;/B&gt; button indicating that there are implementer notes.&lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://farm4.static.flickr.com/3083/3201000020_ce8c808243.jpg?v=0" mce_src="http://farm4.static.flickr.com/3083/3201000020_ce8c808243.jpg?v=0"&gt;&lt;/CENTER&gt;
&lt;P&gt;We click the &lt;B&gt;View Notes&lt;/B&gt; button to open a popup window that displays the notes that implementers have added for this section of the specification. While there, we see a note, from Microsoft, that explains that Office 2007 places value restrictions.&lt;/P&gt;
&lt;P&gt;We expand this note, by clicking the blue "..." icon at the end of the note preview. And... &lt;B&gt;voila!&lt;/B&gt; We see the restrictions that Excel places on the values of a cell.&lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://farm4.static.flickr.com/3305/3200150811_85680874b2.jpg?v=0" mce_src="http://farm4.static.flickr.com/3305/3200150811_85680874b2.jpg?v=0"&gt;&lt;/CENTER&gt;
&lt;P&gt;&lt;B&gt;This is really great!&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;This is just a short post to introduce the ECMA-376 Implementer Notes and show how it can help enable implementers to achieve great interoperability with Office. I hope you are having a great day!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9324931" width="1" height="1"&gt;</description></item></channel></rss>