<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DkUMRn04eCp7ImA9WhRUGUg.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454</id><updated>2012-01-30T21:11:27.330+01:00</updated><category term="WinRT" /><category term="C#" /><category term="dotnetmag" /><category term="LINQ" /><category term="oData" /><category term="union type" /><category term="spreadsheet" /><category term="Metro" /><category term="NuGet" /><category term="Monad" /><category term="portable libraries" /><category term="XDocument" /><category term="F#" /><category term="Open XML" /><category term="discriminated unions" /><category term="Word" /><category term="Legacy" /><category term="tweet2word" /><title>PsAccelerator</title><subtitle type="html">Blog by Piet Amersfoort of &lt;a href="http://psaccelerator.nl/"&gt;PsAccelerator.nl&lt;/a&gt;</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://ps-a.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Psaccelerator" /><feedburner:info uri="psaccelerator" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkUMRn04fCp7ImA9WhRUGUg.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-836289726067763152</id><published>2012-01-30T21:11:00.001+01:00</published><updated>2012-01-30T21:11:27.334+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-30T21:11:27.334+01:00</app:edited><title>Dutch article: Monads voor de .NET-ontwikkelaar is available at the SDN site</title><content type="html">&lt;p&gt;I have written an article for the Dutch developer magazine of &lt;a href="http://www.sdn.nl/"&gt;SDN&lt;/a&gt; (Magazine 111). It is titled: “Monads voor de .NET-ontwikkelaar”. It is now on line: &lt;a title="http://www.sdn.nl/SDN/Artikelen/tabid/58/view/View/ArticleID/3206/Monads-voor-de-NET-ontwikkelaar.aspx" href="http://www.sdn.nl/SDN/Artikelen/tabid/58/view/View/ArticleID/3206/Monads-voor-de-NET-ontwikkelaar.aspx"&gt;http://www.sdn.nl/SDN/Artikelen/tabid/58/view/View/ArticleID/3206/Monads-voor-de-NET-ontwikkelaar.aspx&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I have tried to read the English version by Google translate. This is not a very good translation. I do not recommend to read it this translation. The German version is even worse. It contains Engels words that are not part of the Dutch version.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-836289726067763152?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OPM61Gbrm8vi9aVZcL3JIuVHVMw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OPM61Gbrm8vi9aVZcL3JIuVHVMw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OPM61Gbrm8vi9aVZcL3JIuVHVMw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OPM61Gbrm8vi9aVZcL3JIuVHVMw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/MBbzlostZxg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/836289726067763152/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=836289726067763152" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/836289726067763152?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/836289726067763152?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/MBbzlostZxg/dutch-article-monads-voor-de-net.html" title="Dutch article: Monads voor de .NET-ontwikkelaar is available at the SDN site" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2012/01/dutch-article-monads-voor-de-net.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYCRno-cSp7ImA9WhdUF04.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-4325619630158222964</id><published>2011-10-04T11:41:00.001+02:00</published><updated>2011-10-04T14:09:27.459+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-04T14:09:27.459+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="portable libraries" /><category scheme="http://www.blogger.com/atom/ns#" term="dotnetmag" /><title>BCL Team Blog provides more information on code reuse (Portable Libraries part 4)</title><content type="html">&lt;h1&gt;&lt;/h1&gt; &lt;p&gt;Today the BCL Team Blog addressed the issue of code reuse: &lt;a href="http://blogs.msdn.com/b/bclteam/archive/2011/10/03/porting-existing-net-code-to-metro-style-apps.aspx" target="_blank"&gt;Porting existing .NET code to Metro style apps&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;"One of the things we know people want to do is reuse existing .NET code but due to the constraints on Metro style apps it is not possible to directly reuse existing .NET class libraries nor is it always possible to simply recompile existing code. We realize this is going to be a pain point for many current .NET developers so we are working on a guide at the &lt;/em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/br230302.aspx"&gt;&lt;em&gt;.NET for Metro style apps overview page&lt;/em&gt;&lt;/a&gt;&lt;em&gt; which will assist developers in translating their existing .NET skill set into the Metro style apps world.”&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;&lt;/h2&gt; &lt;p&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-790C" target="_blank"&gt;Bringing existing managed code into Metro style apps&lt;/a&gt;" by Daniel Plaisted is a recommended resource. &lt;/p&gt; &lt;p&gt;&lt;iframe style="height: 416px; width: 649px" src="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-790C/player?w=960&amp;amp;h=544" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;p&gt;Daniel ports a windows phone app to a Metro app. Most of presentation is mainly about porting the UI.&lt;/p&gt; &lt;p&gt;Some slides from the presentation:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-MftbsE6ggl4/Tor3bGLgU1I/AAAAAAAAAJQ/yXEX7_coH6M/s1600-h/move_code%25255B3%25255D.png"&gt;&lt;img title="move_code" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="move_code" src="http://lh6.ggpht.com/-JeaUiF5Hlr0/Tor3bq69Q3I/AAAAAAAAAJU/MnodwnnHo-4/move_code_thumb%25255B1%25255D.png?imgmax=800" width="583" height="286"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-6_wjv8C0fDM/Tor3bzjRjtI/AAAAAAAAAJY/mth3QP9rsUA/s1600-h/differenes%25255B3%25255D.png"&gt;&lt;img title="differenes" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="differenes" src="http://lh5.ggpht.com/-dCTLAtRiv9Y/Tor3cWwZMvI/AAAAAAAAAJc/z05GDkkTYXE/differenes_thumb%25255B1%25255D.png?imgmax=800" width="578" height="336"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Getting the pictures from a local folder.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-URrOaqhrqzY/Tor3c-yaIfI/AAAAAAAAAJg/1ODGrEH8W5w/s1600-h/folders%25255B3%25255D.png"&gt;&lt;img title="folders" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="folders" src="http://lh5.ggpht.com/-R8PPh7cUyE0/Tor3dkoIKpI/AAAAAAAAAJk/poY-VJ3v8GE/folders_thumb%25255B1%25255D.png?imgmax=800" width="569" height="298"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;There is no database access.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-4325619630158222964?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/e8K9vWzSQHcXOUNCSVqBSt_5oHc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e8K9vWzSQHcXOUNCSVqBSt_5oHc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/e8K9vWzSQHcXOUNCSVqBSt_5oHc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e8K9vWzSQHcXOUNCSVqBSt_5oHc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/KG657L9ukQQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/4325619630158222964/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=4325619630158222964" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/4325619630158222964?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/4325619630158222964?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/KG657L9ukQQ/bcl-team-blog-provides-more-information.html" title="BCL Team Blog provides more information on code reuse (Portable Libraries part 4)" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-JeaUiF5Hlr0/Tor3bq69Q3I/AAAAAAAAAJU/MnodwnnHo-4/s72-c/move_code_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/10/bcl-team-blog-provides-more-information.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UDRns8eCp7ImA9WhdUEk0.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-7483327055444716686</id><published>2011-09-28T11:40:00.001+02:00</published><updated>2011-09-28T12:21:17.570+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-28T12:21:17.570+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="portable libraries" /><category scheme="http://www.blogger.com/atom/ns#" term="dotnetmag" /><title>.NET portability is not an afterthought (adding another layer of indirection - Portable Libraries part 3)</title><content type="html">&lt;p&gt;Before &lt;a href="http://www.buildwindows.com/" target="_blank"&gt;//build/&lt;/a&gt; I was not aware of the &lt;a href="http://msdn.microsoft.com/en-us/library/gg597391.aspx" target="_blank"&gt;Portable Class Libraries Project&lt;/a&gt;. The origin of the project is the notion that the number of platform that provide .NET support has increased from one to four and that this number will increase in the future. Making .NET available on more platforms is the future of .NET.&lt;/p&gt; &lt;p&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/gg597391.aspx" target="_blank"&gt;Portable Class Libraries Project&lt;/a&gt; was the first attempt of solving the portability issue but it ran into some constraints. One of them was the increasing complexity: “Portability is an afterthought”.&lt;/p&gt; &lt;p&gt;After watching some of the presentation at &lt;a href="http://www.buildwindows.com/" target="_blank"&gt;//build/&lt;/a&gt; and experimenting with Visual Studio Express for Windows Developer Preview I thought that the whole purpose of creating a portable library was to bridge the gap between .NET and the WinRT.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-WJJtgt5JhnY/ToLrWFhCoBI/AAAAAAAAAIQ/bu5Cq0wguWc/s1600-h/ClassLibrary3.png"&gt;&lt;img title="ClassLibrary" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="ClassLibrary" src="http://lh6.ggpht.com/-mqSedeXiPsk/ToLrWm7RyUI/AAAAAAAAAIU/CSNm_hwsfqw/ClassLibrary_thumb1.png?imgmax=800" width="651" height="228"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This is not the case. Yesterday I watched &lt;a href="http://channel9.msdn.com/Shows/Going+Deep/NET-45-David-Kean-and-Marcea-Trofin-Portable-Libraries" target="_blank"&gt;.NET 4.5: Portable Libraries&lt;/a&gt; by David Kean and Mircea Trofin at Channel 9. It all made more sense to me.&lt;/p&gt; &lt;p&gt;&lt;iframe style="height: 288px; width: 512px" src="http://channel9.msdn.com/Shows/Going+Deep/NET-45-David-Kean-and-Marcea-Trofin-Portable-Libraries/player?w=512&amp;amp;h=288" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The show:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The first 15 minutes explains portability and the first version of the &lt;a href="http://msdn.microsoft.com/en-us/library/gg597391.aspx" target="_blank"&gt;Portable Class Libraries Project&lt;/a&gt;.  &lt;li&gt;15:00 whiteboard time.  &lt;li&gt;Explaining the first way to solve portability problem:  &lt;li&gt;&lt;a href="http://lh6.ggpht.com/-vXPdPJeyYIE/ToLrXOc7c5I/AAAAAAAAAIY/WBGzQwDd48Y/s1600-h/wb13.png"&gt;&lt;img title="wb1" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wb1" src="http://lh6.ggpht.com/-mdVTV_I-uec/ToLrXhZBznI/AAAAAAAAAIc/zTg_yXF3BRw/wb1_thumb1.png?imgmax=800" width="360" height="213"&gt;&lt;/a&gt;  &lt;li&gt;&lt;a href="http://lh3.ggpht.com/-N7cfBZ19cwY/ToLrYF1weTI/AAAAAAAAAIg/7W7VqrQ-I_Y/s1600-h/wb26.png"&gt;&lt;img title="wb2" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wb2" src="http://lh3.ggpht.com/-rmQcjfT1l_k/ToLrYpQGt_I/AAAAAAAAAIk/hKSqvEM8geE/wb2_thumb2.png?imgmax=800" width="415" height="126"&gt;&lt;/a&gt;  &lt;li&gt;Explaining the problems with System.NET  &lt;li&gt;&lt;a href="http://lh4.ggpht.com/-O1MSUH3MiwM/ToLrZM4h0vI/AAAAAAAAAIo/UJs9MYt3LWM/s1600-h/wb36.png"&gt;&lt;img title="wb3" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wb3" src="http://lh3.ggpht.com/-qYIFlDxfud0/ToLrZu3OkJI/AAAAAAAAAIs/ya6qI3K6j5E/wb3_thumb2.png?imgmax=800" width="391" height="265"&gt;&lt;/a&gt;  &lt;li&gt;22:00 the new solution: one portable library by design.  &lt;li&gt;Portability is not an afterthought  &lt;li&gt;28:00  &lt;ul&gt; &lt;li&gt;You program against a contract  &lt;li&gt;It is up to the platform to implement the contract  &lt;li&gt;Type forwarding:&lt;br&gt;&lt;a href="http://lh5.ggpht.com/-bqvJkqXBGKU/ToLraFoeoeI/AAAAAAAAAIw/0sL77s2fHjk/s1600-h/wb53.png"&gt;&lt;img title="wb5" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wb5" src="http://lh3.ggpht.com/--kJMQTgqA6I/ToLratAGoeI/AAAAAAAAAI0/eaESYPdARzc/wb5_thumb1.png?imgmax=800" width="355" height="124"&gt;&lt;/a&gt;  &lt;li&gt;You program against the exposed api.  &lt;li&gt;&lt;a href="http://lh4.ggpht.com/-PrLradEG6GE/ToLrdEyNw1I/AAAAAAAAAI4/54OU7uOmuUg/s1600-h/wb43.png"&gt;&lt;img title="wb4" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wb4" src="http://lh3.ggpht.com/-AjYSAiBZQmI/ToLrdSNrjzI/AAAAAAAAAI8/VahEz7dNxjc/wb4_thumb1.png?imgmax=800" width="291" height="283"&gt;&lt;/a&gt;  &lt;li&gt;And the GAC will forward to dll that implements the actual code.  &lt;li&gt;33:00 Portability is a first class citizen&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;35:00 It is about granularity a method is too small a dll is too big.  &lt;li&gt;36:00  &lt;ul&gt; &lt;li&gt;Q: Are there two gacs in the Windows 8 world?  &lt;li&gt;A: there is one gac. The metro mode is under “us”.&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;37:00 breaking changes:  &lt;ul&gt; &lt;li&gt;Type  &lt;li&gt;&lt;a href="http://lh5.ggpht.com/-w1iRBc8qlvc/ToLreOv6KjI/AAAAAAAAAJA/jrxGSYCkoq0/s1600-h/wb63.png"&gt;&lt;img title="wb6" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wb6" src="http://lh6.ggpht.com/-wl9M_DNhj_o/ToLre6_wpRI/AAAAAAAAAJE/uQ0CPkfz44o/wb6_thumb1.png?imgmax=800" width="391" height="225"&gt;&lt;/a&gt;  &lt;li&gt;&lt;a href="http://lh3.ggpht.com/-RO9qPaKhY5I/ToLrf0XJvkI/AAAAAAAAAJI/wRJ-P1Zus3U/s1600-h/wb73.png"&gt;&lt;img title="wb7" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wb7" src="http://lh6.ggpht.com/-_xPMpT5jIak/ToLrgbrGKVI/AAAAAAAAAJM/dsjvThjSs48/wb7_thumb1.png?imgmax=800" width="394" height="284"&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;45:00 Close and Dispose. Close is disposed, no more closing just disposing.  &lt;li&gt;They reference: &lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-930C"&gt;A .NET developer's view of Windows 8 app development&lt;/a&gt; by Krzysztof Cwalina  &lt;li&gt;50:00 .NET has a great future with portability in mind.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;So it makes sense to fix and recompile your legacy libraries. You can port them to all platforms that will have .NET available.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-7483327055444716686?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EbNVrV33jzXD4dLShrhi5I0g4Xw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EbNVrV33jzXD4dLShrhi5I0g4Xw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EbNVrV33jzXD4dLShrhi5I0g4Xw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EbNVrV33jzXD4dLShrhi5I0g4Xw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/N6RhubGqvAc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/7483327055444716686/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=7483327055444716686" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/7483327055444716686?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/7483327055444716686?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/N6RhubGqvAc/net-portability-is-not-afterthought.html" title=".NET portability is not an afterthought (adding another layer of indirection - Portable Libraries part 3)" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-mqSedeXiPsk/ToLrWm7RyUI/AAAAAAAAAIU/CSNm_hwsfqw/s72-c/ClassLibrary_thumb1.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/09/net-portability-is-not-afterthought.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUBSXk-eyp7ImA9WhdUEUQ.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-6008357746391457289</id><published>2011-09-22T11:22:00.002+02:00</published><updated>2011-09-28T09:00:58.753+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-28T09:00:58.753+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Metro" /><category scheme="http://www.blogger.com/atom/ns#" term="WinRT" /><category scheme="http://www.blogger.com/atom/ns#" term="Legacy" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="dotnetmag" /><title>Reuse of legacy software by WinRT and Metro (Windows 8) (Portable Libraries part 2)</title><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;This is a follow up to my previous post &lt;a href="http://ps-a.blogspot.com/2011/09/create-metro-app-in-f-not.html" target="_blank"&gt;Create a Metro App in F# (NOT)&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Things become quit complex if you want to reuse your windows legacy software. In this case legacy has a positive connotation. Legacy software is an asset of you and/or your company.&lt;/p&gt; &lt;p&gt;Suppose one want to reuse it and make it available for a Metro app on Windows 8 what are your options? After watching some of the build presentations:  &lt;ul&gt; &lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-875T" target="_blank"&gt;Windows Runtime internals: understanding "Hello World"&lt;/a&gt; by Matt Merry  &lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-877T" target="_blank"&gt;Being pragmatic by leveraging existing code in Metro style apps&lt;/a&gt; by Jason Olson  &lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-930C" target="_blank"&gt;A .NET developer's view of Windows 8 app development&lt;/a&gt; by Krzysztof Cwalina  &lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-876T" target="_blank"&gt;Ten Tips When Writing a Hybrid Language Metro style Application&lt;/a&gt; by Brent Rector  &lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-531T" target="_blank"&gt;Using the Windows Runtime from C# and Visual Basic&lt;/a&gt; by Harry Pierson and Jesse Kaplan&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I came up with the following flow chart:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-uOtEGKKZJVE/Tnr-XIwy8_I/AAAAAAAAAII/PCLzi_2sTCw/s1600-h/LegacyWinRT_4%25255B4%25255D.png"&gt;&lt;img title="LegacyWinRT_4" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="LegacyWinRT_4" src="http://lh6.ggpht.com/-SKxR_zbI9BA/Tnr-XvTJkQI/AAAAAAAAAIM/K6GSrQX5Dxs/LegacyWinRT_4_thumb%25255B2%25255D.png?imgmax=800" width="623" height="652"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;So:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;You can reuse html, css and JavaScript.  &lt;li&gt;I am not an expert on C++, COM, etc. so I do not know.  &lt;li&gt;If you have only a dll you cannot use it.  &lt;li&gt;If you have source code that references a language dll (like F#) or have no options today. This will change when the final product becomes available.  &lt;li&gt;If you want to create a Metro Style project in C++ or JavaScript you can reuse your components code by fixing issues and recompile it to a WinMD file (WinRT component). Some issues can be exposing:  &lt;ul&gt; &lt;li&gt;non WinRT types  &lt;li&gt;non sealed classes  &lt;li&gt;non system provided generic types&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;If you want to create a Metro Style project and this is one of the .NET languages you can reuse your components code by fixing issues and recompile it to a dll. Some issues can be:  &lt;ul&gt; &lt;li&gt;Streams&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: This is my current understanding, based on the presentations I viewed. If you have other information available please leave a note in the comments.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-6008357746391457289?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pX4XS3xhXZLvfzWxA4nKLaQQEA4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pX4XS3xhXZLvfzWxA4nKLaQQEA4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pX4XS3xhXZLvfzWxA4nKLaQQEA4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pX4XS3xhXZLvfzWxA4nKLaQQEA4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/-UvcG2GJXN8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/6008357746391457289/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=6008357746391457289" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/6008357746391457289?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/6008357746391457289?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/-UvcG2GJXN8/reuse-of-legacy-by-winrt-and-metro.html" title="Reuse of legacy software by WinRT and Metro (Windows 8) (Portable Libraries part 2)" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-SKxR_zbI9BA/Tnr-XvTJkQI/AAAAAAAAAIM/K6GSrQX5Dxs/s72-c/LegacyWinRT_4_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/09/reuse-of-legacy-by-winrt-and-metro.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUEQ3c-fip7ImA9WhdUEUQ.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-296687516561839247</id><published>2011-09-21T01:54:00.001+02:00</published><updated>2011-09-28T09:00:02.956+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-28T09:00:02.956+02:00</app:edited><title>Create a Metro App in F# (NOT) (Portable Libraries part 1)</title><content type="html">&lt;p&gt;Today you can follow the all-F# approach (&lt;a href="http://msdn.microsoft.com/en-us/magazine/hh394149.aspx" target="_blank"&gt;Build MVVM Applications in F#&lt;/a&gt;). This is not the easiest way to build a solution, it is not the preferred way, but it is an option. &lt;/p&gt; &lt;p&gt;Don Syme presented last Friday in his &lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-904T" target="_blank"&gt;build talk&lt;/a&gt; the following slide.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-n91bWf6wS-M/TnknsbG1htI/AAAAAAAAAHU/XWLdWGX7vTg/s1600-h/FSharpMetro%25255B3%25255D.png"&gt;&lt;img title="FSharpMetro" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="FSharpMetro" src="http://lh4.ggpht.com/-1V0i5wU3A_0/Tnkns9gjcII/AAAAAAAAAHY/oLWLrtMGdVU/FSharpMetro_thumb%25255B1%25255D.png?imgmax=800" width="490" height="277"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;When he explained this it was not completely clear to me what this meant.&lt;/p&gt; &lt;p&gt;Does this tell us that we cannot create a F# Metro front-end today but we will when F# 3.0 is ready? Or does this mean that you cannot create a F# 3.0 project and reference it from a C# or a VB Metro front-end app in one solution?&lt;/p&gt; &lt;p&gt;Today I watched some other presentations of day 4 of build:&lt;/p&gt; &lt;p&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-875T" target="_blank"&gt;Windows Runtime internals: understanding "Hello World"&lt;/a&gt; by Matt Merry&lt;/p&gt; &lt;p&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-877T" target="_blank"&gt;Being pragmatic by leveraging existing code in Metro style apps&lt;/a&gt; by Jason Olson&lt;/p&gt; &lt;p&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-930C" target="_blank"&gt;A .NET developer's view of Windows 8 app development&lt;/a&gt; by Krzysztof Cwalina&lt;/p&gt; &lt;p&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-876T" target="_blank"&gt;Ten Tips When Writing a Hybrid Language Metro style Application&lt;/a&gt; by Brent Rector&lt;/p&gt; &lt;p&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-531T" target="_blank"&gt;Using the Windows Runtime from C# and Visual Basic&lt;/a&gt; by&amp;nbsp; Harry Pierson and Jesse Kaplan&lt;/p&gt; &lt;p&gt;and experimented with Visual Studio 11 (Developer Preview and Express for Windows Developer Preview).&lt;/p&gt; &lt;p&gt;It became clear to me that you cannot create a Metro style solution that references a project that references .NET dll's that are not part of the .NET Profile for Metro style apps.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-eTZR3NaUB7s/TnkntiVT3uI/AAAAAAAAAHc/4DxKQLGdOpA/s1600-h/requirements%25255B3%25255D.png"&gt;&lt;img title="requirements" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="requirements" src="http://lh6.ggpht.com/-5aShiArkbMQ/TnknucqfFwI/AAAAAAAAAHg/Ks_jNwtUUwc/requirements_thumb%25255B1%25255D.png?imgmax=800" width="507" height="297"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-fb5xZGHErHg/TnknuwhlzGI/AAAAAAAAAHk/uhKMS-A5p44/s1600-h/profile%25255B3%25255D.png"&gt;&lt;img title="profile" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="profile" src="http://lh4.ggpht.com/-TQPvAvwCQGs/TnknvVDduPI/AAAAAAAAAHo/olCVBd7sw3g/profile_thumb%25255B1%25255D.png?imgmax=800" width="505" height="294"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The F# dll is one of them today. So creating a Metro app in C#/VB/C++/JavaScript that references a F# project is not possible.&lt;/p&gt; &lt;p&gt;This should be possible when F# 3.0 becomes available. Will it be possible to create an all-F# Metro app in the F# 3.0 time frame? For me, this is still an unanswered question.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-5TGh1NQbxYQ/TnmrUKrBHYI/AAAAAAAAAH0/5hD7Fl7FU_Y/s1600-h/WinRt%25255B3%25255D.png"&gt;&lt;img title="WinRt" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="WinRt" src="http://lh4.ggpht.com/-rBTputVkpUc/TnmrUTgJ3PI/AAAAAAAAAH4/wXy9PLfqy6Q/WinRt_thumb%25255B1%25255D.png?imgmax=800" width="455" height="261"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Another consequence of this approach: when you intend to reuse your .NET dll's you have to recompile your code as WinMD files. So you need to own the source code.  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-L0hXREYswSM/TnknvsFBy7I/AAAAAAAAAHs/WKvr1k-FxDg/s1600-h/WinMD%25255B2%25255D.png"&gt;&lt;img title="WinMD" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="WinMD" src="http://lh5.ggpht.com/-z7YjWd_pPKM/Tnknvyx4iwI/AAAAAAAAAHw/aE9xy-CXOAk/WinMD_thumb.png?imgmax=800" width="244" height="53"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This are the restrictions:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-bYhFP5Lqyzs/TnnxiL02SCI/AAAAAAAAAH8/mA-6Bd0p_I4/s1600-h/Restrictions%25255B7%25255D.png"&gt;&lt;img title="Restrictions" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Restrictions" src="http://lh3.ggpht.com/-OziNQsX4gEs/TnnxipEr2bI/AAAAAAAAAIA/XuCfeTftWDw/Restrictions_thumb%25255B3%25255D.png?imgmax=800" width="459" height="264"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;(September 21, 2011):&lt;/p&gt; &lt;p&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-877T" target="_blank"&gt;&lt;img title="Jason_Olson" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Jason_Olson" src="http://lh6.ggpht.com/-9Cn3cyL3NwI/TnoZy5QgltI/AAAAAAAAAIE/NH1Q7RbQh7Q/Jason_Olson%25255B4%25255D.png?imgmax=800" width="487" height="332"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-296687516561839247?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/438-Z5c9e999jPrGMEIIw87QuCk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/438-Z5c9e999jPrGMEIIw87QuCk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/438-Z5c9e999jPrGMEIIw87QuCk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/438-Z5c9e999jPrGMEIIw87QuCk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/ViPsemHuijM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/296687516561839247/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=296687516561839247" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/296687516561839247?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/296687516561839247?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/ViPsemHuijM/create-metro-app-in-f-not.html" title="Create a Metro App in F# (NOT) (Portable Libraries part 1)" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-1V0i5wU3A_0/Tnkns9gjcII/AAAAAAAAAHY/oLWLrtMGdVU/s72-c/FSharpMetro_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/09/create-metro-app-in-f-not.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cHRXozeyp7ImA9WhdUE0U.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-914601964371312602</id><published>2011-09-15T10:39:00.001+02:00</published><updated>2011-09-30T14:17:14.483+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-30T14:17:14.483+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><category scheme="http://www.blogger.com/atom/ns#" term="F#" /><category scheme="http://www.blogger.com/atom/ns#" term="oData" /><category scheme="http://www.blogger.com/atom/ns#" term="dotnetmag" /><title>F# type providers: oData from NuGet</title><content type="html">&lt;p&gt;Yesterday &lt;a href="http://blogs.msdn.com/b/fsharpteam/archive/2011/09/14/f-3-0-developer-preview-now-available.aspx" target="_blank"&gt;F# 3.0 Developer Preview&lt;/a&gt;&amp;nbsp; became available at the MSDN Site. It will be general available on Friday.&lt;/p&gt; &lt;p&gt;One of the new features is the &lt;a href="http://msdn.microsoft.com/en-us/library/hh156509(v=VS.110).aspx" target="_blank"&gt;type provider&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;This little snippet shows how easy it is to query a site that provides oData. NuGet is an example of a site that provides &lt;a href="http://haacked.com/archive/2011/02/23/how-to-find-out-which-nuget-packages-depend-on-yours.aspx" target="_blank"&gt;oData&lt;/a&gt;.&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2582b3c4-f242-468e-b2db-7d7a0da84800" class="wlWriterSmartContent"&gt; &lt;div style="border-bottom: #000080 1px solid; border-left: #000080 1px solid; font-family: 'Courier New', courier, monospace; color: #000; font-size: 10pt; border-top: #000080 1px solid; border-right: #000080 1px solid"&gt; &lt;div style="padding-bottom: 2px; padding-left: 5px; padding-right: 5px; font-family: verdana, tahoma, arial, sans-serif; background: #000080; color: #fff; font-weight: bold; padding-top: 2px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; overflow: auto"&gt; &lt;ol style="padding-bottom: 0px; margin: 0px 0px 0px 2.5em; padding-left: 5px; padding-right: 0px; white-space: nowrap; background: #ffffff; padding-top: 0px"&gt; &lt;li&gt;&lt;span style="background: #ffffff; color: #0000ff"&gt;#r&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt; &lt;/span&gt;&lt;span style="background: #ffffff; color: #800000"&gt;"FSharp.Data.TypeProviders.dll"&lt;/span&gt;  &lt;li style="background: #f3f3f3"&gt;&lt;span style="background: #ffffff; color: #0000ff"&gt;#r&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt; &lt;/span&gt;&lt;span style="background: #ffffff; color: #800000"&gt;"System.Data.Services.Client.dll"&lt;/span&gt;  &lt;li&gt;&amp;nbsp; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background: #ffffff; color: #0000ff"&gt;open&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt; Microsoft.FSharp.Data.TypeProviders&lt;/span&gt;  &lt;li&gt;&amp;nbsp; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background: #ffffff; color: #000000"&gt;[&amp;lt;Generate&amp;gt;]&lt;/span&gt;  &lt;li&gt;&lt;span style="background: #ffffff; color: #0000ff"&gt;type&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt; NuGet = ODataService&amp;lt;&lt;/span&gt;&lt;span style="background: #ffffff; color: #800000"&gt;"http://packages.nuget.org/v1/FeedService.svc/"&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt;&amp;gt;&lt;/span&gt;  &lt;li style="background: #f3f3f3"&gt;&amp;nbsp; &lt;li&gt;&lt;span style="background: #ffffff; color: #0000ff"&gt;let&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt; dbNuGet = NuGet.GetDataContext()&lt;/span&gt;  &lt;li style="background: #f3f3f3"&gt;&lt;span style="background: #ffffff; color: #0000ff"&gt;let&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt; packages = dbNuGet.Packages&lt;/span&gt;  &lt;li&gt;&amp;nbsp; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background: #ffffff; color: #0000ff"&gt;let&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt; nuGetQuery = &lt;/span&gt; &lt;li&gt;&lt;span style="background: #ffffff; color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; query { &lt;/span&gt;&lt;span style="background: #ffffff; color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt; package &lt;/span&gt;&lt;span style="background: #ffffff; color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt; packages &lt;/span&gt;&lt;span style="background: #ffffff; color: #0000ff"&gt;do&lt;/span&gt;  &lt;li style="background: #f3f3f3"&gt;&lt;span style="background: #ffffff; color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where (package.Tags.Contains(&lt;/span&gt;&lt;span style="background: #ffffff; color: #800000"&gt;"fsharp"&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt;) &amp;amp;&amp;amp; package.IsLatestVersion)&lt;/span&gt;  &lt;li&gt;&lt;span style="background: #ffffff; color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select package }&lt;/span&gt;  &lt;li style="background: #f3f3f3"&gt;&amp;nbsp; &lt;li&gt;&lt;span style="background: #ffffff; color: #0000ff"&gt;let&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt; printPackage (package:NuGet.ServiceTypes.PublishedPackage) =&lt;/span&gt;  &lt;li style="background: #f3f3f3"&gt;&lt;span style="background: #ffffff; color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printfn &lt;/span&gt;&lt;span style="background: #ffffff; color: #800000"&gt;"- - - - - - - - - - - - - - - - - - - -"&lt;/span&gt;  &lt;li&gt;&lt;span style="background: #ffffff; color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printfn &lt;/span&gt;&lt;span style="background: #ffffff; color: #800000"&gt;"Title: %s"&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt; package.Title&lt;/span&gt;  &lt;li style="background: #f3f3f3"&gt;&lt;span style="background: #ffffff; color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printfn &lt;/span&gt;&lt;span style="background: #ffffff; color: #800000"&gt;"Authors: %s"&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt; package.Authors&lt;/span&gt;  &lt;li&gt;&lt;span style="background: #ffffff; color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printfn &lt;/span&gt;&lt;span style="background: #ffffff; color: #800000"&gt;"Description: %s"&lt;/span&gt;&lt;span style="background: #ffffff; color: #000000"&gt; package.Description&lt;/span&gt;  &lt;li style="background: #f3f3f3"&gt;&amp;nbsp; &lt;li&gt;&lt;span style="background: #ffffff; color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;  &lt;li style="background: #f3f3f3"&gt;&lt;span style="background: #ffffff; color: #000000"&gt;nuGetQuery |&amp;gt; Seq.iter printPackage&lt;/span&gt; &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;This is the result:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-vNumrUvoXqU/TnG5vqgBqyI/AAAAAAAAAHE/bqXol95OQAQ/s1600-h/result%25255B7%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="result" border="0" alt="result" src="http://lh4.ggpht.com/-bTChls8mwMM/TnG5wADeLcI/AAAAAAAAAHI/ABwQvy-LbjY/result_thumb%25255B3%25255D.png?imgmax=800" width="563" height="395"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;One of the nice features of type providers is intellisense for the available types.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-1bCZt8Gc93Y/TnG5w1HsVcI/AAAAAAAAAHM/yV-7R3najjI/s1600-h/intellisense%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="intellisense" border="0" alt="intellisense" src="http://lh4.ggpht.com/-sRFWfA0yeuE/TnG5xGyeeDI/AAAAAAAAAHQ/8lT2z4bIo2E/intellisense_thumb%25255B2%25255D.png?imgmax=800" width="329" height="218"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;It is possible to create your own type provider.&lt;/p&gt; &lt;p&gt;More information will be available on Friday. Don Syme will present all the details at build: &lt;a title="http://channel9.msdn.com/events/BUILD/BUILD2011/SAC-904T" href="http://channel9.msdn.com/events/BUILD/BUILD2011/SAC-904T"&gt;http://channel9.msdn.com/events/BUILD/BUILD2011/SAC-904T&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;update: &lt;a href="http://blogs.msdn.com/b/fsharpteam/archive/2011/09/24/developing-f-type-providers-with-the-f-3-0-developer-preview-an-introductory-guide-and-samples.aspx" target="_blank"&gt;Writing F# Type Providers with the F# 3.0 Developer Preview - An Introductory Guide and Samples&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-914601964371312602?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EcgfdUUascX03-3CIGdLGIvp6fw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EcgfdUUascX03-3CIGdLGIvp6fw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EcgfdUUascX03-3CIGdLGIvp6fw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EcgfdUUascX03-3CIGdLGIvp6fw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/CoCXQ4nN6mU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/914601964371312602/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=914601964371312602" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/914601964371312602?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/914601964371312602?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/CoCXQ4nN6mU/f-type-providers-odata-from-nuget.html" title="F# type providers: oData from NuGet" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-bTChls8mwMM/TnG5wADeLcI/AAAAAAAAAHI/ABwQvy-LbjY/s72-c/result_thumb%25255B3%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/09/f-type-providers-odata-from-nuget.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUHRH48eCp7ImA9WhdWFEs.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-8443279574091335394</id><published>2011-09-01T14:27:00.001+02:00</published><updated>2011-09-08T09:33:55.070+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T09:33:55.070+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Monad" /><category scheme="http://www.blogger.com/atom/ns#" term="F#" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title>Monads for .NET developers</title><content type="html">&lt;p&gt;I have written an article for the Dutch developer magazine of &lt;a href="http://www.sdn.nl/"&gt;SDN&lt;/a&gt; (Magazine 111). It is titled: “Monads voor de .NET-ontwikkelaar”.&lt;/p&gt; &lt;p&gt;In this post I will list some of the available resources on monads for .NET developers:&lt;/p&gt; &lt;h3&gt;C# resources&lt;/h3&gt; &lt;h4&gt;Books:&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;Tomas Petricek &amp;amp; Jon Skeet: &lt;a href="http://www.amazon.com/Real-World-Functional-Programming-Examples/dp/1933988924/ref=sr_1_2?ie=UTF8&amp;amp;qid=1312719498&amp;amp;sr=8-2" target="_blank"&gt;Real World Functional Programming: With Examples in F# and C#&lt;/a&gt;, &lt;a href="http://manning.com/petricek/" target="_blank"&gt;website&lt;/a&gt;  &lt;li&gt;Oliver Sturm: &lt;a href="http://www.amazon.com/Functional-Programming-Techniques-Projects-Programmer/dp/0470744588/ref=sr_1_1?ie=UTF8&amp;amp;qid=1312719498&amp;amp;sr=8-1" target="_blank"&gt;Functional Programming in C#: Classic Programming Techniques for Modern Projects&lt;/a&gt;, &lt;a href="http://www.wrox.com/WileyCDA/WroxTitle/Functional-Programming-in-C-Classic-Programming-Techniques-for-Modern-Projects.productCd-0470744588.html" target="_blank"&gt;website&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;Web:&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;Wes Dyer: &lt;a href="http://blogs.msdn.com/b/wesdyer/archive/2008/01/11/the-marvels-of-monads.aspx" target="_blank"&gt;The marvels of monads&lt;/a&gt;  &lt;li&gt;Mike Hadlow: &lt;a href="http://mikehadlow.blogspot.com/2011/01/monads-in-c1-introduction.html" target="_blank"&gt;Monads in C#–1. Introduction&lt;/a&gt;&lt;/a&gt;.  &lt;li&gt;Derick Bailey: &lt;a href="http://lostechies.com/derickbailey/2010/09/30/monads-in-c-which-part-is-the-monad/" target="_blank"&gt;Monads in C#: Which Part Is The Monad?&lt;/a&gt;  &lt;li&gt;Matthew Podwysocki: &lt;a href="http://weblogs.asp.net/podwysocki/archive/2008/10/13/functional-net-linq-or-language-integrated-monads.aspx" target="_blank"&gt;Functional .NET - LINQ or Language Integrated Monads?&lt;/a&gt;  &lt;li&gt;Tomas Petricek: &lt;a title="http://tomasp.net/blog/idioms-in-linq.aspx" href="http://tomasp.net/blog/idioms-in-linq.aspx" target="_blank"&gt;Beyond the Monad fashion (I.): Writing idioms in LINQ&lt;/a&gt;  &lt;li&gt;Mauricio Scheffer: &lt;a href="http://bugsquash.blogspot.com/2011/04/refactoring-to-monadic-c.html" target="_blank"&gt;Refactoring to monadic C#&lt;/a&gt;  &lt;li&gt;Erik Meijer: &lt;a href="http://delivery.acm.org/10.1145/2030000/2024658/p60-meijer.pdf?ip=83.81.189.54&amp;amp;CFID=38317202&amp;amp;CFTOKEN=68910799&amp;amp;__acm__=1315219994_afb647f60a29db0cea015252ee91ed4b" target="_blank"&gt;The World According to LINQ&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;F# resources&lt;/h3&gt; &lt;p&gt;Computation Expressions are addressed in most of the available F# books (&lt;a href="http://www.amazon.co.uk/Professional-2-0-Wrox-Programmer/dp/047052801X/ref=cm_lmf_tit_10" target="_blank"&gt;Professional F# 2.0&lt;/a&gt; does not): &lt;a href="http://www.amazon.co.uk/F-and-functional-programming/lm/R14JYBWI11LWQS" target="_blank"&gt;F# and functional programming&lt;/a&gt;&lt;/p&gt; &lt;h4&gt;Web:&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;Wiki: &lt;a href="http://en.wikibooks.org/wiki/F_Sharp_Programming/Computation_Expressions" target="_blank"&gt;Computation Expressions&lt;/a&gt;  &lt;li&gt;Don Syme: &lt;a href="http://blogs.msdn.com/b/dsyme/archive/2007/09/22/some-details-on-f-computation-expressions-aka-monadic-or-workflow-syntax.aspx" target="_blank"&gt;Some Details on F# Computation Expressions&lt;/a&gt;  &lt;li&gt;Francois Vanderseypen&lt;strong&gt; :&lt;/strong&gt; &lt;a title="http://visualizationtools.net/default/categories-for-dummies/" href="http://visualizationtools.net/default/categories-for-dummies/" target="_blank"&gt;Categories, monads and F# for dummies&lt;/a&gt;  &lt;li&gt;Steffen Forkmann: &lt;a href="http://www.navision-blog.de/2009/10/23/using-monads-in-fsharp-part-i-the-state-monad/" target="_blank"&gt;Using monads in F# – Part I: The State Monad&lt;/a&gt;  &lt;li&gt;Brian McNamara : &lt;a href="http://lorgonblog.wordpress.com/2008/06/07/catamorphisms-part-seven/" target="_blank"&gt;catamorphisms part seven&lt;/a&gt;  &lt;li&gt;Ivan Towlson : &lt;a href="http://hestia.typepad.com/flatlander/2010/12/f-computation-expressions-for-beginners-part-1-whats-the-problem.html" target="_blank"&gt;F# computation expressions for beginners, part 1: what’s the problem?&lt;/a&gt;  &lt;li&gt;Chance Coble: &lt;a href="http://leibnizdream.wordpress.com/2008/10/21/why-use-computation-workflows-aka-monads-in-f/" target="_blank"&gt;Why use Computation Workflows (aka Monads) in F#?&lt;/a&gt;  &lt;li&gt;Ryan Riley: &lt;a href="http://nuget.org/List/Packages/FSharp.Monad" target="_blank"&gt;A monad library for F# projects&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Presentations&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Mike Hadlow: &lt;a title="http://vimeo.com/21705972" href="http://vimeo.com/21705972" target="_blank"&gt;on Monads @ E-VAN 29 March 2011&lt;/a&gt;  &lt;li&gt;Robert C. Martin (Uncle Bob) at the &lt;a href="http://www.ndc2011.no/" target="_blank"&gt;Norwegian Developers Conference&lt;/a&gt;: “&lt;a href="http://ndc2011.macsimum.no/SAL7/Torsdag/1140-1240.wmv" target="_blank"&gt;WTF is a Monad&lt;/a&gt;” (&lt;a href="http://ps-a.blogspot.com/2011/06/wtf-is-monad-by-robert-c-martin-in-f.html" target="_blank"&gt;F# code&lt;/a&gt;)  &lt;li&gt;Erik Meijer: &lt;a href="http://www.youtube.com/watch?v=UuamC0T3hv8&amp;amp;feature=relmfu" target="_blank"&gt;Fundamentalist Functional Programming&lt;/a&gt; &amp;amp; &lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-8-of-13/" target="_blank"&gt;Chapter 8 - Functional Parsers&lt;/a&gt;  &lt;li&gt;Bart De Smet: &lt;a href="http://www.infoq.com/presentations/LINQ-to-Everything" target="_blank"&gt;LINQ, Take Two: Realizing the LINQ to Everything Dream&lt;/a&gt; &lt;li&gt;Rick Minerich: &lt;a href="http://www.slideshare.net/Rickasaurus/getting-the-mvvm-kicked-out-of-your-fn-monads" target="_blank"&gt;Getting the MVVM Kicked Out of Your F#’n Monads&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Some theory&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Wiki: &lt;a href="http://en.wikipedia.org/wiki/Monad_(functional_programming)" target="_blank"&gt;monad&lt;/a&gt;  &lt;li&gt;&lt;a href="http://haskell.org/haskellwiki/Monad_tutorials_timeline" target="_blank"&gt;Monad tutorials timeline&lt;/a&gt;  &lt;li&gt;Eugenio Moggi: &lt;a href="http://www.disi.unige.it/person/MoggiE/ftp/ic91.pdf" target="_blank"&gt;Notions of Computation and Monads&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.amazon.com/Real-World-Haskell-Bryan-OSullivan/dp/0596514980/ref=pd_sim_b_1" target="_blank"&gt;Real World Haskell&lt;/a&gt;: &lt;a href="http://book.realworldhaskell.org/read/monads.html" target="_blank"&gt;Chapter 14. Monads&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.amazon.com/Learn-You-Haskell-Great-Good/dp/1593272839" target="_blank"&gt;Learn You a Haskell for Great Good!&lt;/a&gt;: &lt;a href="http://learnyouahaskell.com/a-fistful-of-monads" target="_blank"&gt;A Fistful of Monads&lt;/a&gt;  &lt;li&gt;Ertugrul Söylemez: &lt;a title="http://ertes.de/articles/monads.html" href="http://ertes.de/articles/monads.html"&gt;Understanding Haskell Monads&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Code:&lt;/h3&gt; &lt;p&gt;The source code of the article: &lt;a href="http://psaccelerator.nl/code/MonadsVoorDeDotNetOntwikkelaar.zip"&gt;MonadsVoorDeDotNetOntwikkelaar&lt;/a&gt; and &lt;a href="http://psaccelerator.nl/code/MonadsVoorDeDotNetOntwikkelaar_english.zip"&gt;MonadsVoorDeDotNetOntwikkelaar_english&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-8443279574091335394?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lq1drApuNj0-8VJGi3hdxxWgPns/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lq1drApuNj0-8VJGi3hdxxWgPns/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lq1drApuNj0-8VJGi3hdxxWgPns/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lq1drApuNj0-8VJGi3hdxxWgPns/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/tNQJbTGMUIg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/8443279574091335394/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=8443279574091335394" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/8443279574091335394?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/8443279574091335394?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/tNQJbTGMUIg/monads-for-net-developers.html" title="Monads for .NET developers" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><thr:total>2</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/09/monads-for-net-developers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQBRXw4eSp7ImA9WhdXEEw.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-8544726627724581180</id><published>2011-08-22T13:42:00.001+02:00</published><updated>2011-08-22T13:42:34.231+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-22T13:42:34.231+02:00</app:edited><title>The newbie feeling</title><content type="html">&lt;p&gt;I read a blog post:&lt;a href="http://blog.recursivity.com/post/9204470867/the-problem-with-the-scala-community" target="_blank"&gt;http://blog.recursivity.com/post/9204470867/the-problem-with-the-scala-community&lt;/a&gt; that triggered me to write this post.&lt;/p&gt; &lt;p&gt;I do not know the Scala community so I can not agree or disagree with the conclusion:&lt;/p&gt; &lt;p&gt;&lt;em&gt;“I love the Scala community and the eco-system around the language, but quite frankly, to foster the continued growth of the community, we need to call out the small minority of bullies on their bullshit whenever it occurs: being able to confuse and intellectually intimidate newbies to the language and community is not proving your supposed “intellectual superiority”, it is merely a reflection of an insecure ego and social incompetence.”&lt;/em&gt;&lt;/p&gt; &lt;p&gt;I do think that as a person we can not know everything of everything and even if we could one moment in time the world will change and we have to learn the new thing.&lt;/p&gt; &lt;p&gt;So we have two option: stick with what we know or accept the newbie feeling. &lt;/p&gt; &lt;p&gt;When you are a newbie you will make mistakes. My grant parents had the following text on a tile:”The only man who never makes mistakes is the man who never does anything.” I just found out it is a quote from &lt;a href="http://www.goodreads.com/quotes/show/3068"&gt;Theodore Roosevelt&lt;/a&gt; (thanks Google).&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.tegelspreukmaker.nl/index.php?tt=The%20only%20man%20who%20never%20makes%20mistakes%20is%20the%20man%20who%20never%20does%20anything&amp;amp;fs=100&amp;amp;yp=50&amp;amp;ltt=1&amp;amp;lh=120&amp;amp;tg=5&amp;amp;tk=003370&amp;amp;bf=&amp;amp;fx=0&amp;amp;fy=0&amp;amp;se=0"&gt;&lt;img alt="tegelspreukmaker.nl" src="http://www.tegelspreukmaker.nl/includes/timthumb.php?src=/temp/imgTqaZV08C7LxD58lGtBZv1BFLA8H4aW.jpg&amp;amp;w=200&amp;amp;h=200&amp;amp;zc=1" width="381" height="381"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;So if we want to progress we have to accept the newbie feeling, accept the insecurity and make mistakes.&lt;/p&gt; &lt;p&gt;When we want to progress we have several options, one option is to learn it all by yourself, another is to accept the support of the community.&lt;/p&gt; &lt;p&gt;The community can support you in two ways:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;one is provide knowledge&lt;/li&gt; &lt;li&gt;the other to provide mentorship&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I think a programming language community is able to provide knowledge, that is nature of the community. To provide mentorship is something else and it is very hard to provide it on line. &lt;/p&gt; &lt;p&gt;So as a newbie look for knowledge on line and find mentorship somewhere else.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-8544726627724581180?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y-jt6hk2Fo5EdvuBYxRVvnzTnk8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y-jt6hk2Fo5EdvuBYxRVvnzTnk8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y-jt6hk2Fo5EdvuBYxRVvnzTnk8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y-jt6hk2Fo5EdvuBYxRVvnzTnk8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/DVuHbfpNMVs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/8544726627724581180/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=8544726627724581180" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/8544726627724581180?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/8544726627724581180?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/DVuHbfpNMVs/newbie-feeling.html" title="The newbie feeling" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/08/newbie-feeling.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AER3w_fCp7ImA9WhdRGUw.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-6844814476321567107</id><published>2011-08-07T15:20:00.001+02:00</published><updated>2011-08-09T20:48:26.244+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-09T20:48:26.244+02:00</app:edited><title>The difference between SelectMany and Select in LINQ</title><content type="html">&lt;p&gt;This is follow up on my previous blog post:&lt;a title="Adding xml strings in C# using LINQ" href="http://ps-a.blogspot.com/2011/08/adding-xml-strings-in-c-using-linq.html" target="_blank"&gt;Adding xml strings in C# using LINQ&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;In the previous post I showed that LINQ can be used to to manipulate XElements and strings. LINQ managed the transformation between the classes.&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;result =&lt;br /&gt;  &lt;span style="color: blue"&gt;from &lt;/span&gt;x1 &lt;span style="color: blue"&gt;in &lt;/span&gt;el1&lt;br /&gt;  &lt;span style="color: blue"&gt;from &lt;/span&gt;x2 &lt;span style="color: blue"&gt;in &lt;/span&gt;el2&lt;br /&gt;  &lt;span style="color: blue"&gt;select &lt;/span&gt;x1.Substring(0, x1.LastIndexOf(&lt;span style="color: #a31515"&gt;"&amp;lt;"&lt;/span&gt;)) + x2.Substring(x2.IndexOf(&lt;span style="color: #a31515"&gt;"&amp;gt;"&lt;/span&gt;) + 1);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;el1, el2 and the result are XElements and x1, x2 and the object before select are strings.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the example there are two XElements and the compiler requires that we implement SelectMany. If delete SelectMany we get the following error:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-R2MGLe_gW1Q/Tj6RMaVVdEI/AAAAAAAAAGo/2ciOzidoXBA/s1600-h/SelectMany%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SelectMany" border="0" alt="SelectMany" src="http://lh6.ggpht.com/-I_UjDE6nDaw/Tj6RMiRJWQI/AAAAAAAAAGs/seFryN5gEj0/SelectMany_thumb%25255B1%25255D.jpg?imgmax=800" width="415" height="55"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In case we have one XElement we expect that the following will compile:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;ToUpper(&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;el)&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;result =&lt;br /&gt;  &lt;span style="color: blue"&gt;from &lt;/span&gt;x &lt;span style="color: blue"&gt;in &lt;/span&gt;el&lt;br /&gt;  &lt;span style="color: blue"&gt;select &lt;/span&gt;x.ToUpper();&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: blue"&gt;return &lt;/span&gt;result;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;It does not: “'System.Xml.Linq.XElement' does not contain a definition for 'Select'”&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So we implement Select:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;Select(&lt;span style="color: blue"&gt;this &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;el, &lt;span style="color: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;&amp;gt; f)&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: blue"&gt;return &lt;/span&gt;SelectMany(el, f, (x, y) =&amp;gt; y);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Again it does not compile: “Cannot implicitly convert type 'string' to 'System.Xml.Linq.XElement'”&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So we add an extra conversion:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;ToUpper(&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;el)&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;result =&lt;br /&gt;  &lt;span style="color: blue"&gt;from &lt;/span&gt;x &lt;span style="color: blue"&gt;in &lt;/span&gt;el&lt;br /&gt;  &lt;span style="color: blue"&gt;select &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;.Parse(x.ToUpper());&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: blue"&gt;return &lt;/span&gt;result;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;This time it works:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;el = &lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;.Parse(&lt;span style="color: #a31515"&gt;"&amp;lt;a&amp;gt;&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;"&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"ToUpper: {0}"&lt;/span&gt;, ToUpper(el)));&lt;/pre&gt;&lt;pre class="code"&gt;Results in:&lt;/pre&gt;&lt;pre class="code"&gt;&lt;a href="http://lh3.ggpht.com/-WS86IF7rKik/Tj6RNXTbDFI/AAAAAAAAAGw/MQCOJJkrUhs/s1600-h/ToUpper%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="ToUpper" border="0" alt="ToUpper" src="http://lh4.ggpht.com/-W7lVn41jX08/Tj6RNmarJDI/AAAAAAAAAG0/QROk14gyIAI/ToUpper_thumb.jpg?imgmax=800" width="137" height="97"&gt;&lt;/a&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;as expected.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Another way to solve the issue is to add a dummy line and use SelectMany:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;ToUpper(&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;el)&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;result =&lt;br /&gt;  &lt;span style="color: blue"&gt;from &lt;/span&gt;x &lt;span style="color: blue"&gt;in &lt;/span&gt;el&lt;br /&gt;  &lt;span style="color: blue"&gt;from &lt;/span&gt;dummy &lt;span style="color: blue"&gt;in &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;.Parse(&lt;span style="color: #a31515"&gt;"&amp;lt;dummy&amp;gt;&amp;lt;/dummy&amp;gt;"&lt;/span&gt;)&lt;br /&gt;  &lt;span style="color: blue"&gt;select &lt;/span&gt;x.ToUpper();&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: blue"&gt;return &lt;/span&gt;result;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;with the same result.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: more information at: &lt;a title="Projection Operations" href="http://msdn.microsoft.com/en-us/library/bb546168.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/bb546168.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-6844814476321567107?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NjgoRdT0sZVTnsEwjMkAgyimsc8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NjgoRdT0sZVTnsEwjMkAgyimsc8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NjgoRdT0sZVTnsEwjMkAgyimsc8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NjgoRdT0sZVTnsEwjMkAgyimsc8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/ljGFuTi3EHc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/6844814476321567107/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=6844814476321567107" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/6844814476321567107?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/6844814476321567107?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/ljGFuTi3EHc/difference-between-selectmany-and.html" title="The difference between SelectMany and Select in LINQ" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-I_UjDE6nDaw/Tj6RMiRJWQI/AAAAAAAAAGs/seFryN5gEj0/s72-c/SelectMany_thumb%25255B1%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/08/difference-between-selectmany-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QAQHc7fip7ImA9WhdRF08.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-5681719671497892736</id><published>2011-08-07T14:40:00.001+02:00</published><updated>2011-08-07T14:49:01.906+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-07T14:49:01.906+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Monad" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title>Adding xml strings in C# using LINQ</title><content type="html">&lt;p&gt;This is follow up on my previous blog post:&lt;a title="Adding xml strings in F# using computation expressions" href="http://ps-a.blogspot.com/2011/08/adding-xml-strings-in-f-using.html"&gt;Adding xml strings in F# using computation expressions&lt;/a&gt;. The text is nearly identical, the language is C# instead of F#.&lt;/p&gt; &lt;p&gt;In some cases classes are enhanced wrappers of simple classes. For instance in .NET:  &lt;ul&gt; &lt;li&gt;DateTime is a point in time and provides, among others things, extra functionality related to representing date and time formats.  &lt;li&gt;XElement is an xml string and provides, among others things, checks to determine the validity of the xml string.  &lt;li&gt;Option can contain a value and can tell you if there is value available.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Sometimes you have to deal with underling class and reuse some of the functionality of the wrapper. In this case you could consider using &lt;a title="LINQ" href="http://msdn.microsoft.com/en-us/netframework/aa904594"&gt;LINQ&lt;/a&gt;. We first define the Return, Bind and SelectMany functions to create the required functions.  &lt;p&gt;For details more details see:  &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.amazon.com/Functional-Programming-Techniques-Projects-Programmer/dp/0470744588/ref=sr_1_1?ie=UTF8&amp;amp;qid=1312719498&amp;amp;sr=8-1"&gt;Functional Programming in C#: Classic Programming Techniques for Modern Projects (Wrox Programmer to Programmer)&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.amazon.com/Real-World-Functional-Programming-Examples/dp/1933988924/ref=sr_1_2?ie=UTF8&amp;amp;qid=1312719498&amp;amp;sr=8-2"&gt;Real World Functional Programming: With Examples in F# and C#&lt;/a&gt;  &lt;li&gt;&lt;a href="http://mikehadlow.blogspot.com/2011/01/monads-in-c1-introduction.html"&gt;Monads in C#–1. Introduction&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;All excellent resources.&lt;/p&gt; &lt;ul&gt; &lt;p&gt;&lt;span style="color: blue"&gt;public static class&lt;/span&gt;&lt;span style="color: #2b91af"&gt;XmlMonad&lt;br&gt;&lt;/span&gt;{&lt;br&gt;&amp;nbsp; &lt;span style="color: green"&gt;//monad&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue"&gt;public static&lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;Return(&lt;span style="color: blue"&gt;this string&lt;/span&gt;text)&lt;br&gt;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;try&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;.Parse(text);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;catch&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;XmlException &lt;/span&gt;exc)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;.Parse(&lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"&amp;lt;XmlException&amp;gt;{0}&amp;lt;/XmlException&amp;gt;"&lt;/span&gt;, exc.Message));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public static&lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;Bind(&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;el, &lt;span style="color: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;&amp;gt; f)&lt;br&gt;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;try&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt;f(el.ToString());&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;catch&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;XmlException &lt;/span&gt;exc)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;.Parse(&lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"&amp;lt;XmlException&amp;gt;{0}&amp;lt;/XmlException&amp;gt;"&lt;/span&gt;, exc.Message));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp; &lt;span style="color: blue"&gt;public static&lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;SelectMany(&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;el, &lt;span style="color: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;&amp;gt; f, &lt;span style="color: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; select)&lt;br&gt;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt;el.Bind(text =&amp;gt; f(text).Bind(x =&amp;gt; select(text, x).Return()));&lt;br&gt;&amp;nbsp; }&lt;br&gt;}&lt;/p&gt;&lt;/ul&gt;&lt;pre&gt;&lt;font face="Verdana"&gt;We can now define a add function that will xml elements by using a string manipulation:&lt;/font&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;Add(&lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;el1, &lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;el2)&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: #2b91af"&gt;XElement &lt;/span&gt;result =&lt;br /&gt;  &lt;span style="color: blue"&gt;from &lt;/span&gt;x1 &lt;span style="color: blue"&gt;in &lt;/span&gt;el1&lt;br /&gt;  &lt;span style="color: blue"&gt;from &lt;/span&gt;x2 &lt;span style="color: blue"&gt;in &lt;/span&gt;el2&lt;br /&gt;  &lt;span style="color: blue"&gt;select &lt;/span&gt;x1.Substring(0, x1.LastIndexOf(&lt;span style="color: #a31515"&gt;"&amp;lt;"&lt;/span&gt;)) + x2.Substring(x2.IndexOf(&lt;span style="color: #a31515"&gt;"&amp;gt;"&lt;/span&gt;) + 1);&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: blue"&gt;return &lt;/span&gt;result;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font face="Verdana"&gt;Add in action:&lt;/font&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;el1 = &lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;.Parse(&lt;span style="color: #a31515"&gt;"&amp;lt;a&amp;gt;&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;"&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;el2 = &lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;.Parse(&lt;span style="color: #a31515"&gt;"&amp;lt;a&amp;gt;&amp;lt;b&amp;gt;3&amp;lt;/b&amp;gt;&amp;lt;b&amp;gt;4&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"Add: {0}"&lt;/span&gt;, Add(el1,el2)));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Results in:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-cZxk8zHT8LA/Tj6HtPfMTDI/AAAAAAAAAGY/UbI61-t39Fg/s1600-h/AddInAction%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="AddInAction" border="0" alt="AddInAction" src="http://lh6.ggpht.com/-I3Ffc5XPZco/Tj6HtQW6YXI/AAAAAAAAAGc/uHXPFf48oQU/AddInAction_thumb.jpg?imgmax=800" width="169" height="103"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;When we change the xml into:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;el2 = &lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;.Parse(&lt;span style="color: #a31515"&gt;"&amp;lt;c&amp;gt;&amp;lt;b&amp;gt;3&amp;lt;/b&amp;gt;&amp;lt;b&amp;gt;4&amp;lt;/b&amp;gt;&amp;lt;/c&amp;gt;"&lt;/span&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The result is:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-oL0NOzTAnfA/Tj6HtnJ8nKI/AAAAAAAAAGg/CbebMdKuWA0/s1600-h/AddInActionException%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="AddInActionException" border="0" alt="AddInActionException" src="http://lh5.ggpht.com/-wi9nI-wpQLk/Tj6HuDAqaxI/AAAAAAAAAGk/3hLuFFA5l4c/AddInActionException_thumb%25255B1%25255D.jpg?imgmax=800" width="430" height="54"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-5681719671497892736?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-Yv5QCBypc9XpNXotl_LYtTCj1c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-Yv5QCBypc9XpNXotl_LYtTCj1c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-Yv5QCBypc9XpNXotl_LYtTCj1c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-Yv5QCBypc9XpNXotl_LYtTCj1c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/Ar7Kw85w6GI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/5681719671497892736/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=5681719671497892736" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/5681719671497892736?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/5681719671497892736?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/Ar7Kw85w6GI/adding-xml-strings-in-c-using-linq.html" title="Adding xml strings in C# using LINQ" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-I3Ffc5XPZco/Tj6HtQW6YXI/AAAAAAAAAGc/uHXPFf48oQU/s72-c/AddInAction_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/08/adding-xml-strings-in-c-using-linq.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8DQn88fip7ImA9WhdRF08.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-1600666697942088065</id><published>2011-08-04T15:19:00.001+02:00</published><updated>2011-08-07T14:41:13.176+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-07T14:41:13.176+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Monad" /><category scheme="http://www.blogger.com/atom/ns#" term="F#" /><title>Adding xml strings in F# using computation expressions</title><content type="html">&lt;p&gt;In some cases types are enhanced wrappers of simple types. For instance in .NET:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;DateTime is a point in time and provides, among others things, extra functionality related to representing date and time formats.  &lt;li&gt;XElement is an xml string and provides, among others things, checks to determine the validity of the xml string.  &lt;li&gt;Option can contain a value and can tell you if there is value available.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Sometimes you have to deal with underling type and reuse some of the functionality of the wrapper. In this case you could consider using &lt;a href="http://msdn.microsoft.com/en-us/library/dd233182.aspx" target="_blank"&gt;computation expressions&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;This is a simple xml example. We create a xmlBuilder and reuse the validation logic of XElement:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;open &lt;/span&gt;System&lt;br /&gt;&lt;span style="color: blue"&gt;open &lt;/span&gt;System.Xml&lt;br /&gt;&lt;span style="color: blue"&gt;open &lt;/span&gt;System.Xml.Linq&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;type &lt;/span&gt;xmlBuilder()=&lt;br /&gt;    &lt;span style="color: blue"&gt;member &lt;/span&gt;x.Bind(el:XElement,(f:string &lt;span style="color: blue"&gt;-&amp;gt; &lt;/span&gt;XElement)) =&lt;br /&gt;        &lt;span style="color: blue"&gt;try&lt;br /&gt;            &lt;/span&gt;f(el.ToString())&lt;br /&gt;        &lt;span style="color: blue"&gt;with&lt;br /&gt;            &lt;/span&gt;| :? XmlException &lt;span style="color: blue"&gt;as &lt;/span&gt;exc &lt;span style="color: blue"&gt;-&amp;gt; &lt;/span&gt;XElement.Parse(String.Format(&lt;span style="color: maroon"&gt;"&amp;lt;XmlException&amp;gt;{0}&amp;lt;/XmlException&amp;gt;"&lt;/span&gt;, exc.Message))&lt;br /&gt;    &lt;span style="color: blue"&gt;member &lt;/span&gt;x.Return(text) = &lt;br /&gt;        &lt;span style="color: blue"&gt;try&lt;br /&gt;            &lt;/span&gt;XElement.Parse(text)&lt;br /&gt;        &lt;span style="color: blue"&gt;with&lt;br /&gt;            &lt;/span&gt;| :? XmlException &lt;span style="color: blue"&gt;as &lt;/span&gt;exc &lt;span style="color: blue"&gt;-&amp;gt; &lt;/span&gt;XElement.Parse(String.Format(&lt;span style="color: maroon"&gt;"&amp;lt;XmlException&amp;gt;{0}&amp;lt;/XmlException&amp;gt;"&lt;/span&gt;, exc.Message))&lt;br /&gt;&lt;br /&gt;The string “123” creates an error:&lt;/pre&gt;&lt;span style="color: green"&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;xml = &lt;span style="color: blue"&gt;new &lt;/span&gt;xmlBuilder()&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;error =&lt;br /&gt;    xml { &lt;br /&gt;            &lt;span style="color: blue"&gt;return &lt;/span&gt;&lt;span style="color: maroon"&gt;"123"&lt;br /&gt;        &lt;/span&gt;}&lt;/pre&gt;&lt;pre class="code"&gt;val error : XElement = &amp;lt;XmlException&amp;gt;Data at the root level is invalid. Line 1, position 1.&amp;lt;/XmlException&amp;gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;The expression can now be used to reuse sting functions:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;toUpper el =&lt;br /&gt;    xml { &lt;br /&gt;            &lt;span style="color: blue"&gt;let! &lt;/span&gt;x = el&lt;br /&gt;            &lt;span style="color: blue"&gt;return &lt;/span&gt;x.ToUpper()&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;el = XElement.Parse(&lt;span style="color: maroon"&gt;"&amp;lt;a&amp;gt;&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result1 = el |&amp;gt; toUpper &lt;br /&gt;&lt;br /&gt;&lt;span style="color: green"&gt;val result1 : XElement = &amp;lt;A&amp;gt;&lt;br /&gt;  &amp;lt;B&amp;gt;1&amp;lt;/B&amp;gt;&lt;br /&gt;  &amp;lt;B&amp;gt;2&amp;lt;/B&amp;gt;&lt;br /&gt;&amp;lt;/A&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;In the same way we can define a simple add function for xml:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;(+) (el1:XElement) (el2:XElement) =&lt;br /&gt;    xml { &lt;br /&gt;            &lt;span style="color: blue"&gt;let! &lt;/span&gt;x1 = el1&lt;br /&gt;            &lt;span style="color: blue"&gt;let! &lt;/span&gt;x2 = el2&lt;br /&gt;            &lt;span style="color: blue"&gt;return &lt;/span&gt;x1.Substring(0, x1.LastIndexOf(&lt;span style="color: maroon"&gt;"&amp;lt;"&lt;/span&gt;)) + x2.Substring(x2.IndexOf(&lt;span style="color: maroon"&gt;"&amp;gt;"&lt;/span&gt;) + 1)&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;el1 = XElement.Parse(&lt;span style="color: maroon"&gt;"&amp;lt;a&amp;gt;&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;el2 = XElement.Parse(&lt;span style="color: maroon"&gt;"&amp;lt;a&amp;gt;&amp;lt;b&amp;gt;3&amp;lt;/b&amp;gt;&amp;lt;b&amp;gt;4&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result2 = el1 + el2&lt;br /&gt;&lt;br /&gt;&lt;span style="color: green"&gt;val result2 : XElement =&lt;br /&gt;  &amp;lt;a&amp;gt;&lt;br /&gt;  &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&lt;br /&gt;  &amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt;&lt;br /&gt;  &amp;lt;b&amp;gt;3&amp;lt;/b&amp;gt;&lt;br /&gt;  &amp;lt;b&amp;gt;4&amp;lt;/b&amp;gt;&lt;br /&gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;el3 = XElement.Parse(&lt;span style="color: maroon"&gt;"&amp;lt;c&amp;gt;&amp;lt;b&amp;gt;3&amp;lt;/b&amp;gt;&amp;lt;b&amp;gt;4&amp;lt;/b&amp;gt;&amp;lt;/c&amp;gt;"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result3 = el1 + el3&lt;br /&gt;&lt;br /&gt;&lt;span style="color: green"&gt;val result3 : XElement = &amp;lt;XmlException&amp;gt;The 'a' start tag on line 1 position 2 does not match the end tag of 'c'. Line 7, position 3.&amp;lt;/XmlException&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;This may not be in line with the concept of information hiding, but it can help you in case you have to deal with the simple type to get the work done.&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-1600666697942088065?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zotYqZzfRM-frQqgurlmAwaXJCk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zotYqZzfRM-frQqgurlmAwaXJCk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zotYqZzfRM-frQqgurlmAwaXJCk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zotYqZzfRM-frQqgurlmAwaXJCk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/KbdD-uQvCwM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/1600666697942088065/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=1600666697942088065" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/1600666697942088065?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/1600666697942088065?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/KbdD-uQvCwM/adding-xml-strings-in-f-using.html" title="Adding xml strings in F# using computation expressions" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/08/adding-xml-strings-in-f-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAFQXg5fSp7ImA9WhdTFkk.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-442148023738438298</id><published>2011-07-14T15:05:00.001+02:00</published><updated>2011-07-14T15:05:10.625+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-14T15:05:10.625+02:00</app:edited><title>What is the USP of the monad?</title><content type="html">&lt;p&gt;I am preparing an introductory article on monads for a Dutch software magazine. It is intended for .NET developers. I have to restrict myself so I am looking for the Unique Selling Point (USP) of the monad.&lt;/p&gt; &lt;p&gt;This is the list of selling points I could find. I left out selling points of specific monads and used the formulation of &lt;a href="http://en.wikipedia.org/wiki/Monad_(functional_programming)" target="_blank"&gt;Wikipedia&lt;/a&gt;: &lt;ol&gt; &lt;li&gt;Monads are a kind of abstract data type constructor that encapsulate program logic instead of data in the domain model.&lt;/li&gt; &lt;li&gt;Control structure/inspection.&lt;/li&gt; &lt;li&gt;Hiding complexity with syntactic sugar.&lt;/li&gt; &lt;li&gt;Composition : monads chain actions together to build a pipeline.&lt;/li&gt; &lt;li&gt;To express input/output (I/O) operations and changes in state without using language features that introduce side effects.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;I put them in the order of most favorite to least favorite. &lt;p&gt;&lt;strong&gt;My remarks&lt;/strong&gt;: &lt;p&gt;1. Monads are a kind of abstract data type constructor that encapsulate program logic instead of data in the domain model. &lt;p&gt;This point can be split into two aspects of monads: &lt;ol&gt; &lt;li&gt;The monadic type is a wrapper of a data type (If M is the name of the monad and t is a data type, then "M t" is the corresponding type in the monad).&lt;/li&gt; &lt;li&gt;The functions: read (unit) and bind.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;I think that the ability to have both access to the functionality of the wrapper and the original data type and a way to transform solution between the two is the most valuable selling point. &lt;p&gt;2. Control structure/inspection. &lt;p&gt;The monad is an excellent way to encapsulate inspection logic. Most monad tutorials start with the maybe monad because it is a simple example. It also shows the value of the monadic approach by hiding inspection plumbing. &lt;p&gt;3. Hiding complexity with syntactic sugar. &lt;p&gt;I think that the popularity of LINQ in C# and VB.NET is a proof that hiding complexity with syntactic sugar has its value. &lt;p&gt;4. Composition: monads chain actions together to build a pipeline. &lt;p&gt;In &lt;a href="http://msdn.microsoft.com/en-us/library/dd233182.aspx" target="_blank"&gt;F# computation expressions&lt;/a&gt; or monads are also described as workflows. So this could be the USP. Sequence expression are a proof of the value of composition. &lt;p&gt;5. To express input/output (I/O) operations and changes in state without using language features that introduce side effects. &lt;p&gt;This is the least relevant point for a .NET developer. I do understand that this the most relevant one for a developer in a pure language or one that want to reduce the number of side effects. &lt;p&gt;Please feel free to add a command in case I missed a selling point or you have a better way to order the them.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-442148023738438298?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TyMaOW4gT_alt-UYmdqMqzS2Ksc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TyMaOW4gT_alt-UYmdqMqzS2Ksc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TyMaOW4gT_alt-UYmdqMqzS2Ksc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TyMaOW4gT_alt-UYmdqMqzS2Ksc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/XQjtuopqH-M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/442148023738438298/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=442148023738438298" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/442148023738438298?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/442148023738438298?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/XQjtuopqH-M/what-is-usp-of-monad.html" title="What is the USP of the monad?" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/07/what-is-usp-of-monad.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8NR38_fCp7ImA9WhZaE0o.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-6297306168888818859</id><published>2011-06-28T19:59:00.001+02:00</published><updated>2011-06-29T20:41:36.144+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-29T20:41:36.144+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Monad" /><category scheme="http://www.blogger.com/atom/ns#" term="F#" /><title>WTF is a Monad by Robert C. Martin in F#</title><content type="html">&lt;p&gt;I have read some material describing &lt;a href="http://msdn.microsoft.com/en-us/library/dd233182.aspx"&gt;Computation Expressions&lt;/a&gt; and knew computation expressions are the F# implementation of monads, but I did know why one should use a monad.  &lt;p&gt;A few days ago saw the video of presentation by &lt;a href="http://www.objectmentor.com/omTeam/martin_r.html" target="_blank"&gt;Robert C. Martin&lt;/a&gt; (Uncle Bob) at the &lt;a href="http://www.ndc2011.no/"&gt;Norwegian Developers Conference&lt;/a&gt; called “&lt;a href="http://ndc2011.macsimum.no/SAL7/Torsdag/1140-1240.wmv"&gt;WTF is a Monad&lt;/a&gt;” and now it makes sense to me.  &lt;p&gt;It is a proven way of solving problems. If you:  &lt;ul&gt; &lt;li&gt;have a problem in one domain  &lt;li&gt;you can transform it to another domain  &lt;li&gt;solve the problem in the other domain  &lt;li&gt;and can transform it back&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;you have a solution.  &lt;p&gt;I have translated some of the code of the presentation to F#. I tried to stay as close to the original code as possible and did not do much refactoring. I skipped the last two examples (distributions an state).  &lt;p&gt;Update:&lt;strike&gt; I did not implement the examples that required lift. I have not figured out how to do that.&lt;/strike&gt; I have created the lift myself (details: &lt;a title="http://bugsquash.blogspot.com/2010/12/notes-on-haskell-functors-and-f.html" href="http://bugsquash.blogspot.com/2010/12/notes-on-haskell-functors-and-f.html" target="_blank"&gt;http://bugsquash.blogspot.com/2010/12/notes-on-haskell-functors-and-f.html&lt;/a&gt;) &lt;p&gt;I like to thank Robert for the permission to share the code. Feel free to add improvements in the comments.&lt;pre class="code"&gt;&lt;span style="color: green"&gt;&lt;pre class="code"&gt;&lt;span style="color: green"&gt;//Non-Monadic dots&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;dotsToN (d:string) =&lt;br /&gt;    d.Length&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result1 = dotsToN &lt;span style="color: maroon"&gt;"....."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;nToDots (n:int) =&lt;br /&gt;    &lt;span style="color: blue"&gt;new &lt;/span&gt;string(&lt;span style="color: maroon"&gt;'.'&lt;/span&gt;, n)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result2 = nToDots 5&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;addDots da db =&lt;br /&gt;    &lt;span style="color: blue"&gt;let &lt;/span&gt;a = dotsToN da&lt;br /&gt;    &lt;span style="color: blue"&gt;let &lt;/span&gt;b = dotsToN db&lt;br /&gt;    nToDots (a+b)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result3 = addDots &lt;span style="color: maroon"&gt;"..." "..."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: green"&gt;//Monadic dots&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;dotResult = nToDots&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;dotBind d (f:int &lt;span style="color: blue"&gt;-&amp;gt; &lt;/span&gt;string) =&lt;br /&gt;    d |&amp;gt; dotsToN |&amp;gt; f&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;addDots' da db =&lt;br /&gt;    dotBind da (&lt;span style="color: blue"&gt;fun &lt;/span&gt;a &lt;span style="color: blue"&gt;-&amp;gt;&lt;br /&gt;        &lt;/span&gt;dotBind db (&lt;span style="color: blue"&gt;fun &lt;/span&gt;b &lt;span style="color: blue"&gt;-&amp;gt;&lt;br /&gt;            &lt;/span&gt;dotResult (a + b)))&lt;br /&gt;    &lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result4= addDots' &lt;span style="color: maroon"&gt;"..." "..."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: green"&gt;//dot-Monad&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;type &lt;/span&gt;dotBuilder()=&lt;br /&gt;    &lt;span style="color: blue"&gt;member &lt;/span&gt;x.Bind(d,(f:int &lt;span style="color: blue"&gt;-&amp;gt; &lt;/span&gt;string)) = d |&amp;gt; dotsToN |&amp;gt; f&lt;br /&gt;    &lt;span style="color: blue"&gt;member &lt;/span&gt;x.Return(n) = &lt;span style="color: blue"&gt;new &lt;/span&gt;string(&lt;span style="color: maroon"&gt;'.'&lt;/span&gt;, n)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;dot = &lt;span style="color: blue"&gt;new &lt;/span&gt;dotBuilder()&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;addDots'' da db =&lt;br /&gt;    dot { &lt;span style="color: blue"&gt;let! &lt;/span&gt;x = da&lt;br /&gt;          &lt;span style="color: blue"&gt;let! &lt;/span&gt;y = db&lt;br /&gt;          &lt;span style="color: blue"&gt;return &lt;/span&gt;x + y&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result5= addDots'' &lt;span style="color: maroon"&gt;"..." "..."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;multiplyDots da db =&lt;br /&gt;    dot { &lt;span style="color: blue"&gt;let! &lt;/span&gt;x = da&lt;br /&gt;          &lt;span style="color: blue"&gt;let! &lt;/span&gt;y = db&lt;br /&gt;          &lt;span style="color: blue"&gt;return &lt;/span&gt;x*y&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result6= multiplyDots &lt;span style="color: maroon"&gt;"..." "..."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;dcd dt du =&lt;br /&gt;    dot { &lt;span style="color: blue"&gt;let! &lt;/span&gt;tens = dt&lt;br /&gt;          &lt;span style="color: blue"&gt;let! &lt;/span&gt;units = du&lt;br /&gt;          &lt;span style="color: blue"&gt;return &lt;/span&gt;(10 * tens + units)&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result7= dcd &lt;span style="color: maroon"&gt;"..." "....."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: green"&gt;// In Clojure the monad gets the lift for free&lt;br /&gt;// In F# we have to create it ourselves&lt;br /&gt;// More info: &lt;a href="http://bugsquash.blogspot.com/2010/12/notes-on-haskell-functors-and-f.html" target="_blank"&gt;http://bugsquash.blogspot.com/2010/12/notes-on-haskell-functors-and-f.html&lt;/a&gt; --&lt;br /&gt;//&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;liftDots_1 f a1 = &lt;br /&gt;    dot { &lt;br /&gt;            &lt;span style="color: blue"&gt;let! &lt;/span&gt;x1 = a1 &lt;br /&gt;            &lt;span style="color: blue"&gt;return &lt;/span&gt;f x1 &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;liftDots_2 f a1 a2 = &lt;br /&gt;    dot { &lt;br /&gt;            &lt;span style="color: blue"&gt;let! &lt;/span&gt;x1 = a1&lt;br /&gt;            &lt;span style="color: blue"&gt;let! &lt;/span&gt;x2 = a2&lt;br /&gt;            &lt;span style="color: blue"&gt;return &lt;/span&gt;f x1 x2&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;liftDots_4 f a1 a2 a3 a4 = &lt;br /&gt;    dot { &lt;br /&gt;            &lt;span style="color: blue"&gt;let! &lt;/span&gt;x1 = a1&lt;br /&gt;            &lt;span style="color: blue"&gt;let! &lt;/span&gt;x2 = a2&lt;br /&gt;            &lt;span style="color: blue"&gt;let! &lt;/span&gt;x3 = a3&lt;br /&gt;            &lt;span style="color: blue"&gt;let! &lt;/span&gt;x4 = a4&lt;br /&gt;            &lt;span style="color: blue"&gt;return &lt;/span&gt;f x1 x2 x3 x4&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;substractDots = liftDots_2 (-)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result7a= substractDots &lt;span style="color: maroon"&gt;"....." ".."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;mean4 a b c d = (a+b+c+d)/4&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;dmean4 = liftDots_4 mean4&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result7b= dmean4 &lt;span style="color: maroon"&gt;"..." ".." "..." "...."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: green"&gt;//&lt;br /&gt;//complex number (inspection)&lt;br /&gt;//&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;open &lt;/span&gt;System.Numerics&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;c_0 = Complex.Zero&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;c_1 = Complex.One&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;c_i = Complex.ImaginaryOne&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;type &lt;/span&gt;complexBuilder()=&lt;br /&gt;    &lt;span style="color: blue"&gt;member &lt;/span&gt;b.Return(x:float) = &lt;span style="color: blue"&gt;new &lt;/span&gt;Complex(x,0.0) &lt;br /&gt;    &lt;span style="color: blue"&gt;member &lt;/span&gt;b.Bind((c:Complex),(f:float &lt;span style="color: blue"&gt;-&amp;gt; &lt;/span&gt;Complex)) = &lt;br /&gt;        &lt;span style="color: blue"&gt;if &lt;/span&gt;c.Imaginary = 0.0 &lt;span style="color: blue"&gt;then&lt;br /&gt;            &lt;/span&gt;f c.Real&lt;br /&gt;        &lt;span style="color: blue"&gt;else &lt;br /&gt;            &lt;/span&gt;failwithf &lt;span style="color: maroon"&gt;"Imaginary"&lt;br /&gt;   &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;complex = &lt;span style="color: blue"&gt;new &lt;/span&gt;complexBuilder()&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;addComplex c1 c2 =&lt;br /&gt;    complex { &lt;span style="color: blue"&gt;let! &lt;/span&gt;x = c1&lt;br /&gt;              &lt;span style="color: blue"&gt;let! &lt;/span&gt;y = c2&lt;br /&gt;              &lt;span style="color: blue"&gt;return &lt;/span&gt;x + y&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result8= addComplex c_1 c_1;;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result9= addComplex c_1 c_i;; &lt;span style="color: green"&gt;//System.Exception: Imaginary&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result10= addComplex c_i c_i;; &lt;span style="color: green"&gt;//System.Exception: Imaginary&lt;br /&gt;&lt;br /&gt;//null&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;type &lt;/span&gt;noNullBuilder()=&lt;br /&gt;    &lt;span style="color: blue"&gt;member &lt;/span&gt;b.Return(mv) = mv &lt;br /&gt;    &lt;span style="color: blue"&gt;member &lt;/span&gt;b.Bind(mv,f) = &lt;span style="color: blue"&gt;if &lt;/span&gt;(mv = &lt;span style="color: blue"&gt;null&lt;/span&gt;) &lt;span style="color: blue"&gt;then null else &lt;/span&gt;f mv&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;nuNull = &lt;span style="color: blue"&gt;new &lt;/span&gt;noNullBuilder()&lt;br /&gt;&lt;br /&gt;&lt;span style="color: green"&gt;// int can not be null in .Net&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;fragile (a:string) (b:string) (c:string) =&lt;br /&gt;    &lt;span style="color: blue"&gt;if &lt;/span&gt;(a= &lt;span style="color: blue"&gt;null&lt;/span&gt;||b=&lt;span style="color: blue"&gt;null&lt;/span&gt;||c=&lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;br /&gt;    &lt;span style="color: blue"&gt;then&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: maroon"&gt;"CRASH"&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: blue"&gt;else&lt;br /&gt;        &lt;/span&gt;a + b + c&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result11 = fragile &lt;span style="color: maroon"&gt;"a" "b" "c"&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result12 = fragile &lt;span style="color: maroon"&gt;"a" &lt;/span&gt;&lt;span style="color: blue"&gt;null &lt;/span&gt;&lt;span style="color: maroon"&gt;"c" &lt;/span&gt;&lt;span style="color: green"&gt;//"CRASH"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;safeFragile (a:string) (b:string) (c:string) =&lt;br /&gt;    nuNull { &lt;span style="color: blue"&gt;let! &lt;/span&gt;x = a&lt;br /&gt;             &lt;span style="color: blue"&gt;let! &lt;/span&gt;y = b&lt;br /&gt;             &lt;span style="color: blue"&gt;let! &lt;/span&gt;z = c&lt;br /&gt;             &lt;span style="color: blue"&gt;return &lt;/span&gt;x + y + z&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result13 = safeFragile &lt;span style="color: maroon"&gt;"a" "b" "c"&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result14 = safeFragile &lt;span style="color: maroon"&gt;"a" &lt;/span&gt;&lt;span style="color: blue"&gt;null &lt;/span&gt;&lt;span style="color: maroon"&gt;"c" &lt;/span&gt;&lt;span style="color: green"&gt;//val result14 : string = null&lt;br /&gt;&lt;br /&gt;//List&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;l_a = [1;2;3]&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;l_b = [4;5;6]&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;addList = seq {&lt;span style="color: blue"&gt;for &lt;/span&gt;a &lt;span style="color: blue"&gt;in &lt;/span&gt;l_a &lt;span style="color: blue"&gt;do&lt;br /&gt;                    for &lt;/span&gt;b &lt;span style="color: blue"&gt;in &lt;/span&gt;l_b &lt;span style="color: blue"&gt;do &lt;br /&gt;                    yield &lt;/span&gt;a+b&lt;br /&gt;                  }|&amp;gt; Seq.toList&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;multList = seq {&lt;span style="color: blue"&gt;for &lt;/span&gt;a &lt;span style="color: blue"&gt;in &lt;/span&gt;l_a &lt;span style="color: blue"&gt;do&lt;br /&gt;                    for &lt;/span&gt;b &lt;span style="color: blue"&gt;in &lt;/span&gt;l_b &lt;span style="color: blue"&gt;do &lt;br /&gt;                    yield &lt;/span&gt;a*b&lt;br /&gt;                  }|&amp;gt; Seq.toList&lt;br /&gt;&lt;br /&gt;&lt;span style="color: green"&gt;//helper for the demo&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;flatten l = &lt;br /&gt;    &lt;span style="color: blue"&gt;let rec &lt;/span&gt;flatten' l result =&lt;br /&gt;        &lt;span style="color: blue"&gt;match &lt;/span&gt;l &lt;span style="color: blue"&gt;with &lt;br /&gt;        &lt;/span&gt;|[] &lt;span style="color: blue"&gt;-&amp;gt; &lt;/span&gt;result&lt;br /&gt;        |h::t &lt;span style="color: blue"&gt;-&amp;gt; &lt;/span&gt;flatten' t (h@result)&lt;br /&gt;    flatten' (l|&amp;gt;List.rev) []&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result15 = flatten [[1;2;3];[7;8;9]]&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;type &lt;/span&gt;listBuilder()=&lt;br /&gt;    &lt;span style="color: blue"&gt;member &lt;/span&gt;b.Return(v) = [v]&lt;br /&gt;    &lt;span style="color: blue"&gt;member &lt;/span&gt;b.Bind(mv,f) = mv |&amp;gt; List.map f |&amp;gt; flatten&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;list = &lt;span style="color: blue"&gt;new &lt;/span&gt;listBuilder()&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;addList' a b = list {&lt;br /&gt;                       &lt;span style="color: blue"&gt;let! &lt;/span&gt;x = a&lt;br /&gt;                       &lt;span style="color: blue"&gt;let! &lt;/span&gt;y = b&lt;br /&gt;                       &lt;span style="color: blue"&gt;return &lt;/span&gt;x + y &lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result16 = addList' l_a l_b&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;multList' a b = list {&lt;br /&gt;                       &lt;span style="color: blue"&gt;let! &lt;/span&gt;x = a&lt;br /&gt;                       &lt;span style="color: blue"&gt;let! &lt;/span&gt;y = b&lt;br /&gt;                       &lt;span style="color: blue"&gt;return &lt;/span&gt;x * y &lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;result17 = multList' l_a l_b&lt;br /&gt;&lt;br /&gt;&lt;span style="color: green"&gt;//distribution example see Expert F# of Don Syme page 239..244&lt;br /&gt;//state http://fsharpcode.blogspot.com/2008/12/f-state-monad-type-state-state-state-of.html&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-6297306168888818859?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kxGE_Cbo-bM7a09yjmAjiu6Re9E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kxGE_Cbo-bM7a09yjmAjiu6Re9E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kxGE_Cbo-bM7a09yjmAjiu6Re9E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kxGE_Cbo-bM7a09yjmAjiu6Re9E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/dL1MDsYVSAc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/6297306168888818859/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=6297306168888818859" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/6297306168888818859?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/6297306168888818859?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/dL1MDsYVSAc/wtf-is-monad-by-robert-c-martin-in-f.html" title="WTF is a Monad by Robert C. Martin in F#" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><thr:total>3</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/06/wtf-is-monad-by-robert-c-martin-in-f.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUAQng4cSp7ImA9WhZbGEw.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-1531656007617805563</id><published>2011-06-22T23:24:00.003+02:00</published><updated>2011-06-23T09:14:03.639+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-23T09:14:03.639+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="F#" /><category scheme="http://www.blogger.com/atom/ns#" term="Open XML" /><title>LINQ to XML, when lazy is too lazy in F# (and C# )</title><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Today a F# program did not work as expected. This is a small example I created:&lt;/p&gt;&lt;p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;xml =&lt;span style="color: maroon"&gt;"&amp;lt;a&amp;gt;&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;"
&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;doc = XDocument.Parse(xml)

&lt;span style="color: blue"&gt;let &lt;/span&gt;getXElements_b (doc:XDocument) =
&lt;span style="color: blue"&gt;let &lt;/span&gt;els = doc.Root.Elements(XName.Get(&lt;span style="color: maroon"&gt;"b"&lt;/span&gt;))
els&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: green"&gt;//test&lt;/span&gt;
&lt;span style="color: blue"&gt;let &lt;/span&gt;result1 = doc |&amp;gt; getXElements_b |&amp;gt; Seq.toList
&lt;span style="color: green"&gt;//val result1 : XElement list = [&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;; &amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt;]
&lt;span style="color: green"&gt;//the expected result &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: green"&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;proces (el:XElement) =
XElement(XName.Get(&lt;span style="color: maroon"&gt;"c"&lt;/span&gt;)) |&amp;gt; el.ReplaceWith

doc |&amp;gt; getXElements_b |&amp;gt; Seq.iter proces

&lt;span style="color: blue"&gt;let &lt;/span&gt;result2 =  doc.ToString();;
&lt;span style="color: green"&gt;//val result2 : string = "&amp;lt;a&amp;gt;
//  &amp;lt;c /&amp;gt;
//  &amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt;
//&amp;lt;/a&amp;gt;"
&lt;/span&gt;&lt;/pre&gt;This is not the expected result. I expected:&lt;/p&gt;&lt;pre class="code"&gt;val result2 : string = "&amp;lt;a&amp;gt;
&amp;lt;c /&amp;gt;
&amp;lt;c /&amp;gt;
&amp;lt;/a&amp;gt;"
&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;I can fix it by changing the getXElements_b function:&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;getXElements_b (doc:XDocument) =
&lt;span style="color: blue"&gt;let &lt;/span&gt;els = doc.Root.Elements(XName.Get(&lt;span style="color: maroon"&gt;"b"&lt;/span&gt;)) |&amp;gt; &lt;strong&gt;Seq.toList&lt;/strong&gt;
els
&lt;/pre&gt;&lt;br /&gt;
With this adjustment everything works fine. It seems that I have to force the the computation.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;This is a problem in C# too.&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private void &lt;/span&gt;GetXml()
{
&lt;span style="color: blue"&gt;var &lt;/span&gt;xml = &lt;span style="color: #a31515"&gt;"&amp;lt;a&amp;gt;&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;"&lt;/span&gt;;
&lt;span style="color: blue"&gt;var &lt;/span&gt;doc = &lt;span style="color: #2b91af"&gt;XDocument&lt;/span&gt;.Parse(xml);
&lt;span style="color: blue"&gt;var &lt;/span&gt;els = doc.Root.Elements(&lt;span style="color: #2b91af"&gt;XName&lt;/span&gt;.Get(&lt;span style="color: #a31515"&gt;"b"&lt;/span&gt;));

&lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;var &lt;/span&gt;el &lt;span style="color: blue"&gt;in &lt;/span&gt;els)
{
el.ReplaceWith(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;XName&lt;/span&gt;.Get(&lt;span style="color: #a31515"&gt;"c"&lt;/span&gt;)));
}

txtResult.Text = doc.ToString();
}&lt;/pre&gt;&lt;pre class="code"&gt;produces:&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&amp;lt;a&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;c /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;When I step with the debuger through the code the foreach is only one time triggered.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;With support of Google I found the following document:&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb308960.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/bb308960.aspx&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-mgFDIB-V4WE/TgJdlnib8OI/AAAAAAAAAGQ/UHCqUiD1xAA/s1600-h/lazyXML%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="lazyXML" border="0" alt="lazyXML" src="http://lh3.ggpht.com/-jdz8-2TV81E/TgJdmfCHkMI/AAAAAAAAAGU/YuQ53qx6m_A/lazyXML_thumb%25255B2%25255D.jpg?imgmax=800" width="710" height="608"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;You can learn something new everyday.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Interesting links:&lt;br /&gt;
&lt;p&gt;The "Halloween Problem" for XML APIs:&lt;br /&gt;
&lt;p&gt;&lt;a title="http://blogs.msdn.com/b/mikechampion/archive/2006/07/20/672208.aspx" href="http://blogs.msdn.com/b/mikechampion/archive/2006/07/20/672208.aspx" target="_blank"&gt;http://blogs.msdn.com/b/mikechampion/archive/2006/07/20/672208.aspx&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;Query Composition using Functional Programming Techniques in C# 3.0:&lt;br /&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/ericwhite/archive/2006/10/04/fp-tutorial.aspx" target="_blank"&gt;http://blogs.msdn.com/b/ericwhite/archive/2006/10/04/fp-tutorial.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-1531656007617805563?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zj5hRL7nuKbXKSkjegHwzAHniu8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zj5hRL7nuKbXKSkjegHwzAHniu8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zj5hRL7nuKbXKSkjegHwzAHniu8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zj5hRL7nuKbXKSkjegHwzAHniu8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/81pWV203eE4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/1531656007617805563/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=1531656007617805563" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/1531656007617805563?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/1531656007617805563?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/81pWV203eE4/linq-to-xml-when-lazy-is-too-lazy-in-f.html" title="LINQ to XML, when lazy is too lazy in F# (and C# )" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-jdz8-2TV81E/TgJdmfCHkMI/AAAAAAAAAGU/YuQ53qx6m_A/s72-c/lazyXML_thumb%25255B2%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/06/linq-to-xml-when-lazy-is-too-lazy-in-f.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAESX8yeCp7ImA9WhZbFkk.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-1263152930152493151</id><published>2011-06-20T22:13:00.002+02:00</published><updated>2011-06-21T10:25:08.190+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-21T10:25:08.190+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XDocument" /><category scheme="http://www.blogger.com/atom/ns#" term="F#" /><category scheme="http://www.blogger.com/atom/ns#" term="Open XML" /><category scheme="http://www.blogger.com/atom/ns#" term="Word" /><title>Update an open XML word document in F#</title><content type="html">&lt;pre class="code"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font face="Verdana"&gt;I have created a small function in F# to update the content of a word document.&lt;/font&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font face="Verdana"&gt;&lt;font size="1"&gt;&lt;span style="color: green"&gt;//reference to the package 
&lt;/span&gt;&lt;span style="color: blue"&gt;#r &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="color: maroon"&gt;&lt;font size="1" face="Verdana"&gt;"WindowsBase"
&lt;/font&gt;&lt;/span&gt;&lt;font face="Verdana"&gt;&lt;font size="1"&gt;&lt;span style="color: green"&gt;//reference to the Xml and Linq 
&lt;/span&gt;&lt;span style="color: blue"&gt;#r &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;font size="1"&gt;&lt;span style="color: maroon"&gt;"System.Xml"
&lt;/span&gt;&lt;span style="color: blue"&gt;#r &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;font size="1"&gt;&lt;span style="color: maroon"&gt;"System.Xml.Linq"

&lt;/span&gt;&lt;span style="color: blue"&gt;open &lt;/span&gt;System
&lt;span style="color: blue"&gt;open &lt;/span&gt;System.IO
&lt;span style="color: blue"&gt;open &lt;/span&gt;System.IO.Packaging
&lt;span style="color: blue"&gt;open &lt;/span&gt;System.Xml
&lt;span style="color: blue"&gt;open &lt;/span&gt;System.Xml.Linq

&lt;/font&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;font size="1"&gt;&lt;span style="color: green"&gt;//helper to create XName with a namespace
&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;xname str =
XName.Get(str, &lt;span style="color: maroon"&gt;"http://schemas.openxmlformats.org/wordprocessingml/2006/main"&lt;/span&gt;)

&lt;/font&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;font size="1"&gt;&lt;span style="color: green"&gt;// the main function 
// changeDoc copies a word .docx document and updates the content by changing the xml that represents the content
&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;changeDoc oldPath newPath (updateDocument:XDocument &lt;span style="color: blue"&gt;-&amp;gt; &lt;/span&gt;XDocument) =
&lt;/font&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;font size="1"&gt;&lt;span style="color: green"&gt;//update the package part
&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;updatePart (part:PackagePart) =
using (part.GetStream(FileMode.Open, FileAccess.Read)) (&lt;span style="color: blue"&gt;fun &lt;/span&gt;stream &lt;/font&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;-&amp;gt; 
let &lt;/span&gt;xDocumentOut = stream |&amp;gt; XDocument.Load |&amp;gt; updateDocument
xDocumentOut.Save(part.GetStream(FileMode.Create, FileAccess.Write))
)

File.Copy(oldPath, newPath, &lt;span style="color: blue"&gt;true&lt;/span&gt;)
using (Package.Open(newPath, FileMode.Open, FileAccess.ReadWrite)) (&lt;span style="color: blue"&gt;fun &lt;/span&gt;package &lt;/font&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;-&amp;gt;
let &lt;/span&gt;uri = &lt;span style="color: blue"&gt;new &lt;/span&gt;Uri(&lt;span style="color: maroon"&gt;"/word/document.xml"&lt;/span&gt;, UriKind.Relative )

uri |&amp;gt; package.GetPart|&amp;gt; updatePart
)

&lt;/font&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;font size="1"&gt;&lt;span style="color: green"&gt;// test function to update the document
// adds "_test" to every text  in the document.
&lt;/span&gt;&lt;span style="color: blue"&gt;let &lt;/span&gt;updateText (xDoc:XDocument) =
&lt;span style="color: maroon"&gt;"t" &lt;/span&gt;|&amp;gt; xname  |&amp;gt; xDoc.Descendants |&amp;gt; Seq.iter (&lt;span style="color: blue"&gt;fun &lt;/span&gt;x &lt;span style="color: blue"&gt;-&amp;gt; &lt;/span&gt;x.Value &amp;lt;- x.Value + &lt;span style="color: maroon"&gt;"_test"&lt;/span&gt;)
xDoc

&lt;/font&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;font size="1"&gt;&lt;span style="color: green"&gt;//test
&lt;/span&gt;changeDoc &lt;span style="color: maroon"&gt;@"D:\Tmp\test.docx" @"D:\Tmp\test_copy.docx" &lt;/span&gt;updateText;;
&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;Before &lt;span style="color: maroon"&gt;"D:\Tmp\test.docx"&lt;/span&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font size="1" face="Verdana"&gt;&lt;a href="http://lh6.ggpht.com/-ti42qPMPi0U/Tf-p4zVDm_I/AAAAAAAAAGA/ZM9Q9pSOsmA/s1600-h/before%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="before" border="0" alt="before" src="http://lh5.ggpht.com/-veCVPoX78zo/Tf-p5iufaFI/AAAAAAAAAGE/7yIfaDx_GHE/before_thumb.jpg?imgmax=800" width="244" height="243"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font size="2" face="Verdana"&gt;After "D:\Tmp\test_copy.docx":&lt;/font&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;a href="http://lh4.ggpht.com/-16Ia8BbkgDc/Tf-p6IwMBcI/AAAAAAAAAGI/Wf2kflo6bUQ/s1600-h/after%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="after" border="0" alt="after" src="http://lh6.ggpht.com/-hgP3ayyJWzk/Tf-p63q7aDI/AAAAAAAAAGM/mrKJpc8CRsQ/after_thumb.jpg?imgmax=800" width="225" height="206"&gt;&lt;/a&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-1263152930152493151?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_YkfadrLrTB6Vko8P1JlE8Gyeeg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_YkfadrLrTB6Vko8P1JlE8Gyeeg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_YkfadrLrTB6Vko8P1JlE8Gyeeg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_YkfadrLrTB6Vko8P1JlE8Gyeeg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/f649a2Squi8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/1263152930152493151/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=1263152930152493151" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/1263152930152493151?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/1263152930152493151?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/f649a2Squi8/update-open-xml-word-document-in-f.html" title="Update an open XML word document in F#" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-veCVPoX78zo/Tf-p5iufaFI/AAAAAAAAAGE/7yIfaDx_GHE/s72-c/before_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/06/update-open-xml-word-document-in-f.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04AQXg7fip7ImA9WhZbE0U.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-2186532920755375197</id><published>2011-06-16T11:31:00.009+02:00</published><updated>2011-06-18T09:25:40.606+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-18T09:25:40.606+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="F#" /><title>F# blogs</title><content type="html">These are the F# blogs I am following:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://tomasp.net/blog/rss.aspx" target="_blank"&gt;http://tomasp.net/blog/rss.aspx&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://feeds.feedburner.com/bugsquash" target="_blank"&gt;http://feeds.feedburner.com/bugsquash&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://feeds.feedburner.com/Devhawk" target="_blank"&gt;http://feeds.feedburner.com/Devhawk&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://feeds.feedburner.com/DidItWithDotNet" target="_blank"&gt;http://feeds.feedburner.com/DidItWithDotNet&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/dsyme/rss.xml" target="_blank"&gt;http://blogs.msdn.com/dsyme/rss.xml&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://fsharpnews.blogspot.com/feeds/posts/default" target="_blank"&gt;http://fsharpnews.blogspot.com/feeds/posts/default&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cs.hubfs.net/blogs/MainFeed.aspx" target="_blank"&gt;http://cs.hubfs.net/blogs/MainFeed.aspx&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jyliao.blogspot.com/feeds/posts/default" target="_blank"&gt;http://jyliao.blogspot.com/feeds/posts/default&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/jomo_fisher/rss.xml" target="_blank"&gt;http://blogs.msdn.com/jomo_fisher/rss.xml&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/lukeh/rss.xml" target="_blank"&gt;http://blogs.msdn.com/lukeh/rss.xml&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://feeds.feedburner.com/MatthewPodwysockisBlog" target="_blank"&gt;http://feeds.feedburner.com/MatthewPodwysockisBlog&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lepensemoi.free.fr/index.php/feed" target="_blank"&gt;http://lepensemoi.free.fr/index.php/feed&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://feeds.feedburner.com/planet_fsharp?format=xml" target="_blank"&gt;http://feeds.feedburner.com/planet_fsharp?format=xml&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ps-a.blogspot.com/" target="_blank"&gt;http://ps-a.blogspot.com/&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://strangelights.com/blog/" target="_blank"&gt;http://strangelights.com/blog/&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cs.hubfs.net/blogs/thepopeofthehub/" target="_blank"&gt;http://cs.hubfs.net/blogs/thepopeofthehub/&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.achrissmith.com/" target="_blank"&gt;http://blog.achrissmith.com&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://litemedia.info/" target="_blank"&gt;http://litemedia.info/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moiraesoftware.com/" target="_blank"&gt;http://Moiraesoftware.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://richardminerich.com/" target="_blank"&gt;http://RichardMinerich.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.intellifactory.com/blogs/rss/F!sharp!/" target="_blank"&gt;http://www.intellifactory.com/blogs/rss/F!sharp!/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.danielmohl.com/" target="_blank"&gt;http://blog.danielmohl.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hestia.typepad.com/flatlander/" target="_blank"&gt;http://hestia.typepad.com/flatlander/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sharp-gamedev.blogspot.com/" target="_blank"&gt;http://sharp-gamedev.blogspot.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.decoratorpattern.com/" target="_blank"&gt;http://blog.decoratorpattern.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
Please add a comment when your blog is missing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-2186532920755375197?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MW4aEq_4cHzqdgmf51OViyE_9gU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MW4aEq_4cHzqdgmf51OViyE_9gU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MW4aEq_4cHzqdgmf51OViyE_9gU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MW4aEq_4cHzqdgmf51OViyE_9gU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/kYunFH-Fv4M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/2186532920755375197/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=2186532920755375197" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/2186532920755375197?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/2186532920755375197?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/kYunFH-Fv4M/f-blogs.html" title="F# blogs" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><thr:total>6</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/06/f-blogs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYAQH88fSp7ImA9WhZUFUs.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-3744059396722778749</id><published>2011-06-08T13:51:00.001+02:00</published><updated>2011-06-08T22:49:01.175+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-08T22:49:01.175+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="spreadsheet" /><category scheme="http://www.blogger.com/atom/ns#" term="Open XML" /><title>Creation of a very simple F# model of a spreadsheet</title><content type="html">&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Today I posted&amp;nbsp; a F# snipped at &lt;a href="http://fssnip.net/5F"&gt;http://fssnip.net/5F&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;It creates an Open Xml spreadsheet and does not depend on the Open Xml SDK.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;To add data to the sheet you need SheetData . I have created a small model op a spreadsheet and some functions to generate the SheetData.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;First the model:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas; font-size: 10pt;"&gt;//model&amp;nbsp;of&amp;nbsp;spreadsheet&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas; font-size: 10pt;"&gt;//&amp;nbsp;column&amp;nbsp;*&amp;nbsp;value&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;type&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&amp;nbsp;Cell&amp;nbsp;=&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&amp;nbsp;Text&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;of&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&amp;nbsp;string&amp;nbsp;*&amp;nbsp;string&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&amp;nbsp;Number&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;of&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&amp;nbsp;string&amp;nbsp;*&amp;nbsp;int&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&amp;nbsp;Formula&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;of&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&amp;nbsp;string&amp;nbsp;*&amp;nbsp;string&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas; font-size: 10pt;"&gt;//&amp;nbsp;row&amp;nbsp;number&amp;nbsp;*&amp;nbsp;cells&amp;nbsp;in&amp;nbsp;the&amp;nbsp;row&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;type&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&amp;nbsp;Row&amp;nbsp;=&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|Cells&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;of&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&amp;nbsp;int&amp;nbsp;*&amp;nbsp;Cell&amp;nbsp;list&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas; font-size: 10pt;"&gt;//list&amp;nbsp;of&amp;nbsp;rows&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;type&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&amp;nbsp;Sheet&amp;nbsp;=&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&amp;nbsp;Rows&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;of&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&amp;nbsp;Row&amp;nbsp;list&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Notice that the model reflects the structure of the Open Xml specifications. Sheets contain Rows and Rows contain Cells. &amp;nbsp;I have modeled three types of cells inline text, numbers and formulas. There are more. From the specifications (17.18.11 ST_CellType (Cell Type)):&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; mso-padding-alt: 0cm 0cm 0cm 0cm; mso-yfti-tbllook: 1184; width: 100.0%;"&gt;&lt;thead&gt;
&lt;tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; page-break-inside: avoid;"&gt;    &lt;td style="background: silver; border: solid black 1.0pt; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;"&gt;&lt;b&gt;Enumeration    Value&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td style="background: silver; border-left: none; border: solid black 1.0pt; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;"&gt;&lt;b&gt;Description&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;/thead&gt;  &lt;tbody&gt;
&lt;tr style="mso-yfti-irow: 1;"&gt;   &lt;td style="border-top: none; border: solid black 1.0pt; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: Cambria, serif;"&gt;b&lt;/span&gt; (Boolean)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Cell containing a boolean.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 2;"&gt;   &lt;td style="border-top: none; border: solid black 1.0pt; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: Cambria, serif;"&gt;d&lt;/span&gt; (Date)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span lang="EN-US"&gt;Cell contains a date in the   ISO 8601 format.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 3;"&gt;   &lt;td style="border-top: none; border: solid black 1.0pt; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: Cambria, serif;"&gt;e&lt;/span&gt; (Error)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Cell containing an error.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 4;"&gt;   &lt;td style="border-top: none; border: solid black 1.0pt; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: Cambria, serif;"&gt;inlineStr&lt;/span&gt; (Inline String)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span lang="EN-US"&gt;Cell containing an (inline)   rich string, i.e., one not in the shared string table. If this cell type is   used, then the cell value is in the &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Cambria, serif;"&gt;is&lt;/span&gt;&lt;span lang="EN-US"&gt; element rather than the &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Cambria, serif;"&gt;v&lt;/span&gt;&lt;span lang="EN-US"&gt; element in the cell (&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Cambria, serif;"&gt;c&lt;/span&gt;&lt;span lang="EN-US"&gt; element).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 5;"&gt;   &lt;td style="border-top: none; border: solid black 1.0pt; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: Cambria, serif;"&gt;n&lt;/span&gt; (Number)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Cell containing a number.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 6;"&gt;   &lt;td style="border-top: none; border: solid black 1.0pt; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: Cambria, serif;"&gt;s&lt;/span&gt; (Shared String)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span lang="EN-US"&gt;Cell containing a shared   string.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 7; mso-yfti-lastrow: yes;"&gt;   &lt;td style="border-top: none; border: solid black 1.0pt; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: Cambria, serif;"&gt;str&lt;/span&gt; (String)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: solid black 1.0pt; border-top: none; padding: 2.15pt 5.75pt 2.15pt 5.75pt; width: 50.0%;" valign="top" width="50%"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span lang="EN-US"&gt;Cell containing a formula   string.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;These are the tests:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas;"&gt;//test&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;cell1&amp;nbsp;=&amp;nbsp;Text(&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"A"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"test1"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;cell2&amp;nbsp;=&amp;nbsp;Number(&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"B"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;42)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;cell3&amp;nbsp;=&amp;nbsp;Text(&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"A"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"test2"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;cell4&amp;nbsp;=&amp;nbsp;Number(&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"B"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;43)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;cell5&amp;nbsp;=&amp;nbsp;Formula(&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"B"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"SUM(B1:B2)"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;row1&amp;nbsp;=&amp;nbsp;Cells(1,&amp;nbsp;[cell1;&amp;nbsp;cell2])&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;row2&amp;nbsp;=&amp;nbsp;Cells(2,&amp;nbsp;[cell3;&amp;nbsp;cell4])&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;row3&amp;nbsp;=&amp;nbsp;Cells(3,&amp;nbsp;[cell5])&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;sheet&amp;nbsp;=&amp;nbsp;Rows([row1;&amp;nbsp;row2;&amp;nbsp;row3])&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;This are the required functions to generate the SheetData:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;createTextCell&amp;nbsp;column&amp;nbsp;rowNumber&amp;nbsp;(value:string)&amp;nbsp;=&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;cell&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"c"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XAttribute(xnameEmpty&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"r"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;column&amp;nbsp;+&amp;nbsp;rowNumber.ToString()),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XAttribute(xnameEmpty&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"t"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"inlineStr"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"is"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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;&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&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"t"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;value)))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cell&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas;"&gt;//test&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;result1&amp;nbsp;=&amp;nbsp;createTextCell&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"A"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;1&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"abc"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;createNumberCell&amp;nbsp;column&amp;nbsp;rowNumber&amp;nbsp;(value:int)&amp;nbsp;=&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;cell&amp;nbsp;=&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"c"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XAttribute(xnameEmpty&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"r"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;column&amp;nbsp;+&amp;nbsp;rowNumber.ToString()),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XAttribute(xnameEmpty&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"t"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"n"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"v"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;value&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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;&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;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cell&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;createFormulaCell&amp;nbsp;column&amp;nbsp;rowNumber&amp;nbsp;(formula:string)&amp;nbsp;=&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;cell&amp;nbsp;=&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"c"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XAttribute(xnameEmpty&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"r"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;column&amp;nbsp;+&amp;nbsp;rowNumber.ToString()),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XAttribute(xnameEmpty&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"t"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"n"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"f"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;formula&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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;&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;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: Consolas;"&gt;cell&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span style="color: green; font-family: Consolas;"&gt;//test&lt;/span&gt;&lt;span style="color: black; font-family: Consolas;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;result2&amp;nbsp;=&amp;nbsp;createNumberCell&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"B"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;1&amp;nbsp;4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;createCell&amp;nbsp;rowNumber&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;function&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&amp;nbsp;Text&amp;nbsp;(culumn,&amp;nbsp;value)&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;-&amp;gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;createTextCell&amp;nbsp;culumn&amp;nbsp;rowNumber&amp;nbsp;value&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&amp;nbsp;Number&amp;nbsp;(culumn,&amp;nbsp;value)&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;-&amp;gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;createNumberCell&amp;nbsp;culumn&amp;nbsp;rowNumber&amp;nbsp;value&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&amp;nbsp;Formula&amp;nbsp;(culumn,&amp;nbsp;formula)&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;-&amp;gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;createFormulaCell&amp;nbsp;culumn&amp;nbsp;rowNumber&amp;nbsp;formula&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas;"&gt;//test&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;result3&amp;nbsp;=createCell&amp;nbsp;1&amp;nbsp;cell1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;result4&amp;nbsp;=createCell&amp;nbsp;1&amp;nbsp;cell2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;createRow&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;function&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|Cells&amp;nbsp;(rowNumber,&amp;nbsp;cells)&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;-&amp;gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;rowElement&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"row"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XAttribute(xnameEmpty&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"r"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;rowNumber))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cells&amp;nbsp;|&amp;gt;&amp;nbsp;List.map&amp;nbsp;(createCell&amp;nbsp;rowNumber)&amp;nbsp;|&amp;gt;&amp;nbsp;rowElement.Add&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rowElement&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;result5&amp;nbsp;=&amp;nbsp;createRow&amp;nbsp;row2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;createSheetData&amp;nbsp;(sheet:Sheet)&amp;nbsp;=&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;createRows&amp;nbsp;=&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;function&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&amp;nbsp;Rows&amp;nbsp;rows&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;-&amp;gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;rows|&amp;gt;&amp;nbsp;List.map&amp;nbsp;createRow&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;sheetData&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"sheetData"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sheet|&amp;gt;&amp;nbsp;createRows&amp;nbsp;|&amp;gt;&amp;nbsp;sheetData.Add&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sheetData&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;result6&amp;nbsp;=&amp;nbsp;createSheetData&amp;nbsp;sheet&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;This is the result:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-xFDI40bTRsA/Te9h4raPl4I/AAAAAAAAAFY/5SuS_vmsr6k/s1600/spreadsheet.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-xFDI40bTRsA/Te9h4raPl4I/AAAAAAAAAFY/5SuS_vmsr6k/s1600/spreadsheet.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Because the sheet contains a formula in cell B3 Excel will calculates the result.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-3744059396722778749?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TfYtj8oAXK5n9SCJfKDb3QZTiz4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TfYtj8oAXK5n9SCJfKDb3QZTiz4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TfYtj8oAXK5n9SCJfKDb3QZTiz4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TfYtj8oAXK5n9SCJfKDb3QZTiz4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/ATZLxolamKg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/3744059396722778749/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=3744059396722778749" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/3744059396722778749?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/3744059396722778749?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/ATZLxolamKg/creation-very-simple-f-model-of.html" title="Creation of a very simple F# model of a spreadsheet" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-xFDI40bTRsA/Te9h4raPl4I/AAAAAAAAAFY/5SuS_vmsr6k/s72-c/spreadsheet.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/06/creation-very-simple-f-model-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEER3wyeip7ImA9WhdUFE0.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-8427684563962198109</id><published>2011-06-07T12:14:00.003+02:00</published><updated>2011-09-30T19:43:26.292+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-30T19:43:26.292+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tweet2word" /><category scheme="http://www.blogger.com/atom/ns#" term="Open XML" /><category scheme="http://www.blogger.com/atom/ns#" term="Word" /><category scheme="http://www.blogger.com/atom/ns#" term="dotnetmag" /><title>Create Open XML Word document in F# (update)</title><content type="html">&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;This time I will create a word document (open xml) in F# without using the Open XML SDK and using XML libraries. Things have been intentionally kept simple.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;I start by modelling a simple word document:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;There are Two types of paragraphs: normal and bold ones:&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0f793779-b1c2-4c7e-8362-6d4a9e649ae1" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #ddd; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//reference to the package &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;#r&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;WindowsBase&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;open&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; System&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;open&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; System.IO&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;open&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; System.IO.Packaging&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;type&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Paragraph =&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;| Normal &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;of&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; string&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;| Bold &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;of&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; string&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="MsoNormal"&gt;&amp;nbsp;&lt;/div&gt; &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;And a document is a list of paragraphs:&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:95ee2b66-c7bc-44d9-b9fc-57b8f0a4d8f8" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;type&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Document =&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;| Paragraphs &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;of&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Paragraph list&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="MsoNormal"&gt;&amp;nbsp;&lt;/div&gt; &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;This is the test:&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:853f2e9e-2b4a-47a5-8fdd-3d85fe37fd13" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #ddd; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//test&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; list = [Normal(&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;test1&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;); Normal(&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;test2&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;); Bold(&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;test3&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;); Normal(&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;test4&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)]&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; doc = Paragraphs(list)&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;pre style="background: white"&gt;&lt;span style="font-family: consolas; color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Next we have the to create an xml version of document:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d909f0bf-1357-4a78-9717-1fcbbf71fac4" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;&lt;br /&gt;&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;&lt;br /&gt;&lt;div style="background: #ddd; overflow: auto"&gt;&lt;br /&gt;&lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//helpers&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// http://weblogs.sqlteam.com/mladenp/archive/2008/10/21/Different-ways-how-to-escape-an-XML-string-in-C.aspx&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; encodedXml (text: string) =&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;text.Replace(&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;amp;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;amp;amp;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;).Replace(&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;lt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;amp;lt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;).Replace(&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;amp;gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;).Replace(&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;#92;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;).Replace(&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;#39;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;amp;apos;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; xml1 = &lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;lt;node&amp;gt;it&amp;#39;s my &amp;#92;&amp;quot;node&amp;#92;&amp;quot; &amp;amp; i like it&amp;lt;node&amp;gt;&amp;quot;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; encode = encodedXml xml1&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; addString acc item = acc + &lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;#92;r&amp;#92;t&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; + item&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; createParagraphNormal text =&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;lt;w:p&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;      &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;w:r&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;        &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;w:t&amp;gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; + encodedXml text + &lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;lt;/w:t&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;      &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;/w:r&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;/w:p&amp;gt;&amp;quot;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; createParagraphBold text =&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;lt;w:p&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;      &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;w:r&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;        &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;w:rPr&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;         &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;w:b /&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;        &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;/w:rPr&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;w:t&amp;gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; + encodedXml text + &lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;lt;/w:t&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;      &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;/w:r&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;    &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;/w:p&amp;gt;&amp;quot;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; createParagraph = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;function&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;| Normal(text) &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; createParagraphNormal text&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;| Bold (text) &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; createParagraphBold text&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; createParagraphs = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;function&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;| Paragraphs(list) &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; list|&amp;gt; List.map createParagraph |&amp;gt; List.reduce addString&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//test&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; p = createParagraphs doc&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; createDocument doc =&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; startDocument = &lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;@&amp;quot;&amp;lt;?xml version=&amp;quot;&amp;quot;1.0&amp;quot;&amp;quot; encoding=&amp;quot;&amp;quot;utf-8&amp;quot;&amp;quot;?&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;                    &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;w:document xmlns:w=&amp;quot;&amp;quot;http://schemas.openxmlformats.org/wordprocessingml/2006/main&amp;quot;&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;                      &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;w:body&amp;gt;&amp;quot;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; endDocument = &lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;  &amp;lt;/w:body&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;                        &lt;span style="background:#ffffff;color:#800000"&gt;&amp;lt;/w:document&amp;gt;&amp;quot;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; content = createParagraphs doc&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;startDocument + content + endDocument&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Then we have to create a package, add the document and save it to disk:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8db1b27f-15de-4aef-8331-9bd1456bccab" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;&lt;br /&gt;&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;&lt;br /&gt;&lt;div style="background: #ddd; overflow: auto"&gt;&lt;br /&gt;&lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//add the document to package and save&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; createFile doc (fileName:string) =&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;using (Package.Open(fileName, FileMode.Create, FileAccess.ReadWrite))(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;fun&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; package &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;-&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; uri = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Uri(&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;/word/document.xml&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, UriKind.Relative )&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; partDocumentXML = &lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;package.CreatePart(&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;                                &lt;span style="background:#ffffff;color:#000000"&gt;uri,&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;                                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; )&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;using(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; StreamWriter(partDocumentXML.GetStream(FileMode.Create, FileAccess.Write)))(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;fun&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; stream &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;-&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;doc |&amp;gt; createDocument |&amp;gt; stream.Write&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;package.CreateRelationship(&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;                                    &lt;span style="background:#ffffff;color:#000000"&gt;uri,&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;                                    &lt;span style="background:#ffffff;color:#000000"&gt;TargetMode.Internal,&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;                                    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;                                    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;rId1&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;) |&amp;gt; ignore&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//test&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; fileName = &lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;@&amp;quot;D:&amp;#92;Tmp&amp;#92;test.docx&amp;quot;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;createFile doc fileName;;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre style="background: white"&gt;&lt;span style="font-family: consolas; color: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white"&gt;&lt;span style="font-family: consolas; color: black"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white"&gt;&lt;span style="font-family: consolas; color: black"&gt;This is the result:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both"&gt;&lt;a style="margin-left: 1em; margin-right: 1em" href="http://2.bp.blogspot.com/-BdLJldd25nA/Te35RmrTMqI/AAAAAAAAAFQ/0d431-cXDDc/s1600/word1.jpg" imageanchor="1"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-BdLJldd25nA/Te35RmrTMqI/AAAAAAAAAFQ/0d431-cXDDc/s1600/word1.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;pre style="background: white"&gt;&lt;/pre&gt;&lt;pre style="background: white"&gt;&lt;span style="font-family: consolas; color: black"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;I have created a map from twitter to my document model&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:9bcf82b2-e2ad-46a3-bf19-faceee8f9a82" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;&lt;br /&gt;&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;&lt;br /&gt;&lt;div style="background: #ddd; overflow: auto"&gt;&lt;br /&gt;&lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;type&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; UserStatus = &lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;{ UserName : string; &lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;ProfileImage : string; &lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;Status : string; &lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;StatusDate : DateTime }&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; mapUserStatus (us:UserStatus) =&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; date = &lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;Date: &amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; + us.StatusDate.ToShortDateString()  + &lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot; time: &amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; + us.StatusDate.ToLongTimeString()&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;[Normal(date); Bold(us.UserName); Normal(us.Status); Normal(&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)]&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; addUserStatus acc item = item @ acc&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;let&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; result = xml|&amp;gt; parseTweetXml |&amp;gt; List.map mapUserStatus|&amp;gt; List.reduce addUserStatus&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;(the details of the twitter part can be found at: &lt;a href="http://blogs.msdn.com/b/dsyme/archive/2010/01/10/async-and-parallel-design-patterns-in-f-reporting-progress-with-events-plus-twitter-sample.aspx" target="_blank"&gt;http://blogs.msdn.com/b/dsyme/archive/2010/01/10/async-and-parallel-design-patterns-in-f-reporting-progress-with-events-plus-twitter-sample.aspx&lt;/a&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;This results in the following document:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both"&gt;&lt;a style="margin-left: 1em; margin-right: 1em" href="http://3.bp.blogspot.com/-Em4FfJhsC5M/Te35dzkld3I/AAAAAAAAAFU/Zzvcmx4A50g/s1600/word2.jpg" imageanchor="1"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-Em4FfJhsC5M/Te35dzkld3I/AAAAAAAAAFU/Zzvcmx4A50g/s400/word2.jpg" width="522" height="435"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Remark: I had to Google “Weiner” to understand the jokes.&lt;/span&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-8427684563962198109?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A8D8B0CTvU2RruIIYeQSaxgaUDk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A8D8B0CTvU2RruIIYeQSaxgaUDk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A8D8B0CTvU2RruIIYeQSaxgaUDk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A8D8B0CTvU2RruIIYeQSaxgaUDk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/A5YwiJoExgs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/8427684563962198109/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=8427684563962198109" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/8427684563962198109?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/8427684563962198109?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/A5YwiJoExgs/create-open-xml-word-document-in-f.html" title="Create Open XML Word document in F# (update)" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-BdLJldd25nA/Te35RmrTMqI/AAAAAAAAAFQ/0d431-cXDDc/s72-c/word1.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/06/create-open-xml-word-document-in-f.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08EQno_eip7ImA9WhZUE0Q.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-239937478432548414</id><published>2011-06-06T22:23:00.000+02:00</published><updated>2011-06-06T22:23:23.442+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-06T22:23:23.442+02:00</app:edited><title>Create Open XML Spreadsheet in F# (update)</title><content type="html">&lt;div class="MsoNoSpacing"&gt;&lt;span class="apple-style-span"&gt;&lt;span lang="EN-US" style="color: black; font-size: 13.5pt; mso-ansi-language: EN-US;"&gt;I have updated the &lt;a href="http://fssnip.net/54"&gt;code snippet &lt;/a&gt;for the creation of a spreadsheet in F#. I rewritten it in a more functional way an I have added an test with data.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;1: &lt;/span&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;//reference to the Open Office SDK&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;2: &lt;/span&gt;&lt;span lang="EN-US" style="color: purple; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;#r&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt; &lt;span style="color: olive;"&gt;@"C:\Program Files (x86)\Open XML SDK\V2.0\lib\DocumentFormat.OpenXml.dll"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;3: &lt;/span&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;//reference to the package &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;4: &lt;/span&gt;&lt;span style="color: purple; font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;#r&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt; &lt;span style="color: olive;"&gt;"WindowsBase"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;5: &lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;6: &lt;/span&gt;&lt;span style="color: navy; font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;open&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt; &lt;span style="color: black;"&gt;DocumentFormat&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;OpenXml&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;7: &lt;/span&gt;&lt;span style="color: navy; font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;open&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt; &lt;span style="color: black;"&gt;DocumentFormat&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;OpenXml&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Packaging&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;8: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;open&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt; &lt;span style="color: black;"&gt;DocumentFormat&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;OpenXml&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Spreadsheet&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;9: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;10: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt; &lt;span style="color: black;"&gt;createSpreadsheet&lt;/span&gt; (&lt;span style="color: black;"&gt;filepath&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;string&lt;/span&gt;) (&lt;span style="color: black;"&gt;sheetName&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;string&lt;/span&gt;) (&lt;span style="color: black;"&gt;sheetData&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;SheetData&lt;/span&gt;) &lt;span style="color: purple;"&gt;=&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;11: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: green;"&gt;// Create a spreadsheet document by supplying the filepath.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;12: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: green;"&gt;// By default, AutoSave = true, Editable = true, and Type = xlsx.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;13: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;14: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;using&lt;/span&gt; (&lt;span style="color: black;"&gt;SpreadsheetDocument&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Create&lt;/span&gt;(&lt;span style="color: black;"&gt;filepath&lt;/span&gt;, &lt;span style="color: black;"&gt;SpreadsheetDocumentType&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Workbook&lt;/span&gt;)) (&lt;span style="color: navy;"&gt;fun&lt;/span&gt; &lt;span style="color: black;"&gt;spreadsheetDocument&lt;/span&gt; &lt;span style="color: navy;"&gt;-&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;15: &lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;16: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: green;"&gt;// Add a WorkbookPart to the document.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;17: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;workbookPart&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;spreadsheetDocument&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AddWorkbookPart&lt;/span&gt;(&lt;span style="color: black;"&gt;Workbook&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Workbook&lt;/span&gt;())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;18: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;19: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: green;"&gt;// Add a WorksheetPart to the WorkbookPart.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;20: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: green;"&gt;// http://stackoverflow.com/questions/5702939/unable-to-append-a-sheet-using-openxml-with-f-fsharp&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;21: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;worksheetPart&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;workbookPart&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AddNewPart&lt;/span&gt;&lt;span style="color: purple;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black;"&gt;WorksheetPart&lt;/span&gt;&lt;span style="color: purple;"&gt;&amp;gt;&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;22: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;23: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;worksheetPart&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Worksheet&lt;/span&gt; &lt;span style="color: purple;"&gt;&amp;lt;-&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Worksheet&lt;/span&gt;(&lt;span style="color: black;"&gt;sheetData&lt;/span&gt;&lt;span style="color: purple;"&gt;:&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;OpenXmlElement&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;24: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;25: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: green;"&gt;// Add Sheets to the Workbook.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;26: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;sheets&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;spreadsheetDocument&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;WorkbookPart&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Workbook&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AppendChild&lt;/span&gt;&lt;span style="color: purple;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black;"&gt;Sheets&lt;/span&gt;&lt;span style="color: purple;"&gt;&amp;gt;&lt;/span&gt;(&lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Sheets&lt;/span&gt;())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;27: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;28: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: green;"&gt;// Append a new worksheet and associate it with the workbook.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;29: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;sheet&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Sheet&lt;/span&gt;(&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;Id&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;StringValue&lt;/span&gt;(&lt;span style="color: black;"&gt;spreadsheetDocument&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;WorkbookPart&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;GetIdOfPart&lt;/span&gt;(&lt;span style="color: black;"&gt;worksheetPart&lt;/span&gt;)),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;30: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&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;&lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SheetId&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;UInt32Value&lt;/span&gt;(&lt;span style="color: green;"&gt;1u&lt;/span&gt;),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;31: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&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&gt;&lt;span style="color: black;"&gt;Name&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;StringValue&lt;/span&gt;(&lt;span style="color: black;"&gt;sheetName&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;32: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&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&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;33: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;[&lt;span style="color: black;"&gt;sheet&lt;/span&gt; &lt;span style="color: purple;"&gt;:&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;OpenXmlElement&lt;/span&gt;] &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;sheets&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Append&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;34: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;35: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;36: &lt;/span&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;//helpers&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;37: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt; &lt;span style="color: black;"&gt;createCellReference&lt;/span&gt; (&lt;span style="color: black;"&gt;header&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;string&lt;/span&gt;) (&lt;span style="color: black;"&gt;index&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;int&lt;/span&gt;) &lt;span style="color: purple;"&gt;=&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;38: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;StringValue&lt;/span&gt;(&lt;span style="color: black;"&gt;header&lt;/span&gt; &lt;span style="color: purple;"&gt;+&lt;/span&gt; &lt;span style="color: black;"&gt;string&lt;/span&gt;(&lt;span style="color: black;"&gt;index&lt;/span&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;39: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;40: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt; &lt;span style="color: black;"&gt;createNumberCell&lt;/span&gt; &lt;span style="color: black;"&gt;number&lt;/span&gt; (&lt;span style="color: black;"&gt;header&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;string&lt;/span&gt;) (&lt;span style="color: black;"&gt;index&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;int&lt;/span&gt;) &lt;span style="color: purple;"&gt;=&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;41: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;cell&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Cell&lt;/span&gt;(&lt;span style="color: black;"&gt;DataType&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;EnumValue&lt;/span&gt;(&lt;span style="color: black;"&gt;CellValues&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Number&lt;/span&gt;), &lt;span style="color: black;"&gt;CellReference&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;createCellReference&lt;/span&gt; &lt;span style="color: black;"&gt;header&lt;/span&gt; &lt;span style="color: black;"&gt;index&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;42: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;value&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;CellValue&lt;/span&gt;(&lt;span style="color: black;"&gt;Text&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;number&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;ToString&lt;/span&gt;())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;43: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;value&lt;/span&gt; &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;cell&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AppendChild&lt;/span&gt;&lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;ignore&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;44: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;cell&lt;/span&gt; &lt;span style="color: purple;"&gt;:&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;OpenXmlElement&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;45: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;46: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt; &lt;span style="color: black;"&gt;createTextCell&lt;/span&gt; &lt;span style="color: black;"&gt;text&lt;/span&gt; (&lt;span style="color: black;"&gt;header&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;string&lt;/span&gt;) (&lt;span style="color: black;"&gt;index&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;int&lt;/span&gt;) &lt;span style="color: purple;"&gt;=&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;47: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;cell&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Cell&lt;/span&gt;(&lt;span style="color: black;"&gt;DataType&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;EnumValue&lt;/span&gt;(&lt;span style="color: black;"&gt;CellValues&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;InlineString&lt;/span&gt;), &lt;span style="color: black;"&gt;CellReference&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;createCellReference&lt;/span&gt; &lt;span style="color: black;"&gt;header&lt;/span&gt; &lt;span style="color: black;"&gt;index&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;48: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;inlineString&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;InlineString&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;49: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;t&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Text&lt;/span&gt;(&lt;span style="color: black;"&gt;Text&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;text&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;50: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;t&lt;/span&gt; &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;inlineString&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AppendChild&lt;/span&gt; &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;ignore&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;51: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;inlineString&lt;/span&gt; &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;cell&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AppendChild&lt;/span&gt;&lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;ignore&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;52: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;cell&lt;/span&gt; &lt;span style="color: purple;"&gt;:&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;OpenXmlElement&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;53: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;54: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt; &lt;span style="color: black;"&gt;createContentRow&lt;/span&gt; (&lt;span style="color: black;"&gt;text&lt;/span&gt;, (&lt;span style="color: black;"&gt;number1&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;int&lt;/span&gt;), (&lt;span style="color: black;"&gt;number2&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;int&lt;/span&gt;), (&lt;span style="color: black;"&gt;index&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;int&lt;/span&gt;)) &lt;span style="color: purple;"&gt;=&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;55: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;row&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Row&lt;/span&gt;(&lt;span style="color: black;"&gt;RowIndex&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;UInt32Value&lt;/span&gt;(&lt;span style="color: black;"&gt;uint32&lt;/span&gt;(&lt;span style="color: black;"&gt;index&lt;/span&gt;)))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;56: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;cell1&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;createTextCell&lt;/span&gt; &lt;span style="color: black;"&gt;text&lt;/span&gt; &lt;span style="color: olive;"&gt;"A"&lt;/span&gt; &lt;span style="color: black;"&gt;index&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;57: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;cell2&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;createNumberCell&lt;/span&gt; &lt;span style="color: black;"&gt;number1&lt;/span&gt; &lt;span style="color: olive;"&gt;"B"&lt;/span&gt; &lt;span style="color: black;"&gt;index&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;58: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;cell3&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;createNumberCell&lt;/span&gt; &lt;span style="color: black;"&gt;number2&lt;/span&gt; &lt;span style="color: olive;"&gt;"C"&lt;/span&gt; &lt;span style="color: black;"&gt;index&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;59: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;cell1&lt;/span&gt; &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;row&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Append&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;60: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;cell2&lt;/span&gt; &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;row&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Append&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;61: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;cell3&lt;/span&gt; &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;row&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Append&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;62: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;row&lt;/span&gt; &lt;span style="color: purple;"&gt;:&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;OpenXmlElement&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;63: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;64: &lt;/span&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;//test&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;65: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt; &lt;span style="color: black;"&gt;createTestSheetData&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;66: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;sheetData&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;SheetData&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;67: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;(&lt;span style="color: olive;"&gt;"test1"&lt;/span&gt;, &lt;span style="color: green;"&gt;123&lt;/span&gt;, &lt;span style="color: green;"&gt;456&lt;/span&gt;, &lt;span style="color: green;"&gt;1&lt;/span&gt;) &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;createContentRow&lt;/span&gt; &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;sheetData&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AppendChild&lt;/span&gt; &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;ignore&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;68: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;(&lt;span style="color: olive;"&gt;"test2"&lt;/span&gt;, &lt;span style="color: green;"&gt;35&lt;/span&gt;, &lt;span style="color: green;"&gt;1231&lt;/span&gt;, &lt;span style="color: green;"&gt;2&lt;/span&gt;) &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;createContentRow&lt;/span&gt; &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;sheetData&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AppendChild&lt;/span&gt; &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;ignore&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;69: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;(&lt;span style="color: olive;"&gt;"test3"&lt;/span&gt;, &lt;span style="color: green;"&gt;345&lt;/span&gt;, &lt;span style="color: green;"&gt;21&lt;/span&gt;, &lt;span style="color: green;"&gt;3&lt;/span&gt;) &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;createContentRow&lt;/span&gt; &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;sheetData&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AppendChild&lt;/span&gt; &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;ignore&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;70: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;sheetData&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;71: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;72: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt; &lt;span style="color: black;"&gt;testData&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;createTestSheetData&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;73: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt; &lt;span style="color: black;"&gt;result&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;createSpreadsheet&lt;/span&gt; &lt;span style="color: olive;"&gt;@"D:\Tmp\test.xlsx"&lt;/span&gt; &lt;span style="color: olive;"&gt;"test"&lt;/span&gt; &lt;span style="color: black;"&gt;testData&lt;/span&gt;;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;74: &lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: NL;"&gt;75:&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span lang="EN-US" style="color: black; font-size: 13.5pt; mso-ansi-language: EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-239937478432548414?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MAbR-hs_AUFOYmswzcO2WH3bOh0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MAbR-hs_AUFOYmswzcO2WH3bOh0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MAbR-hs_AUFOYmswzcO2WH3bOh0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MAbR-hs_AUFOYmswzcO2WH3bOh0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/TW6oO52vW78" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/239937478432548414/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=239937478432548414" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/239937478432548414?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/239937478432548414?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/TW6oO52vW78/create-open-xml-spreadsheet-in-f-update.html" title="Create Open XML Spreadsheet in F# (update)" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/06/create-open-xml-spreadsheet-in-f-update.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYGRno-fSp7ImA9WhZVGEo.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-1576957873075174461</id><published>2011-05-31T21:28:00.000+02:00</published><updated>2011-05-31T21:28:47.455+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-31T21:28:47.455+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XDocument" /><category scheme="http://www.blogger.com/atom/ns#" term="F#" /><category scheme="http://www.blogger.com/atom/ns#" term="Open XML" /><title>Create in F#  XDocument with XDeclaration and namespace</title><content type="html">&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="font-family: Verdana, sans-serif;"&gt;In this example I will create the following XML in F#:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;lt;w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp; &amp;lt;w:body&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;w:p&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;w:r&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;w:t&amp;gt;This is a test&amp;lt;/w:t&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/w:r&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/w:p&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp; &amp;lt;/w:body&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;lt;/w:document&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana, sans-serif;"&gt;Transferring C#-code is not straightforward because the constructor of XDocument does not accept the following code: new &amp;nbsp;XDocument(&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XDeclaration(&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"1.0"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"utf-8"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"true"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;), &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"document"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;))&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Consolas;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Consolas;"&gt;//First create some helpers:&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Consolas;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;xnameNs&amp;nbsp;str&amp;nbsp;ns&amp;nbsp;=&amp;nbsp;XName.Get(str,&amp;nbsp;ns)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;xname&amp;nbsp;str&amp;nbsp;=&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xnameNs&amp;nbsp;str&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"http://schemas.openxmlformats.org/wordprocessingml/2006/main"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;ns&amp;nbsp;=&amp;nbsp;XNamespace.Get(&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"http://schemas.openxmlformats.org/wordprocessingml/2006/main"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;dec&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XDeclaration(&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"1.0"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"utf-8"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"true"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;el&amp;nbsp;=&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"document"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XAttribute(XNamespace.Xmlns&amp;nbsp;+&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"w"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;ns),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"body"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"p"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"r"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XElement(xname&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"t"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: Consolas;"&gt;"This&amp;nbsp;is&amp;nbsp;a&amp;nbsp;test"&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas;"&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&gt;&lt;span style="color: black; font-family: Consolas;"&gt;))))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span style="color: black; font-family: Consolas;"&gt;//Add them together:&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span style="color: black; font-family: Consolas;"&gt;&amp;nbsp;document&amp;nbsp;=&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;let&lt;/span&gt;&lt;span style="color: black; font-family: Consolas;"&gt;&amp;nbsp;doc&amp;nbsp;=&lt;/span&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;new&lt;/span&gt;&lt;span style="color: black; font-family: Consolas;"&gt;&amp;nbsp;XDocument(dec)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doc.AddFirst(el)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doc&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span style="color: black; font-family: Consolas;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span style="color: black; font-family: Consolas;"&gt;//And test:&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span style="color: black; font-family: Consolas;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white;"&gt;&lt;span style="color: black; font-family: Consolas;"&gt;document.Save(&lt;/span&gt;&lt;span style="color: maroon; font-family: Consolas;"&gt;@"D:\Tmp\test1.xml"&lt;/span&gt;&lt;span style="color: black; font-family: Consolas;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-1576957873075174461?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FbsF-NJOT7qYVCjHkNJLgy5L-tA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FbsF-NJOT7qYVCjHkNJLgy5L-tA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FbsF-NJOT7qYVCjHkNJLgy5L-tA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FbsF-NJOT7qYVCjHkNJLgy5L-tA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/ZhrYl1L0O1Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/1576957873075174461/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=1576957873075174461" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/1576957873075174461?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/1576957873075174461?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/ZhrYl1L0O1Y/create-in-f-xdocument-with-xdeclaration.html" title="Create in F#  XDocument with XDeclaration and namespace" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/05/create-in-f-xdocument-with-xdeclaration.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QCQn8-eip7ImA9WhZUE0Q.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-1689250567824553636</id><published>2011-05-25T14:46:00.001+02:00</published><updated>2011-06-06T22:16:03.152+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-06T22:16:03.152+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="spreadsheet" /><category scheme="http://www.blogger.com/atom/ns#" term="Open XML" /><title>Create Open XML Spreadsheet in F#</title><content type="html">&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span class="apple-style-span"&gt;&lt;span lang="EN-US" style="color: black; font-family: Georgia, serif;"&gt;I also created a spreadsheet with the&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="color: black; font-family: Georgia, serif;"&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&amp;amp;displaylang=en"&gt;&lt;span class="apple-converted-space"&gt;&lt;span lang="EN-US" style="color: #1c9b41; text-decoration: none;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #1c9b41; text-decoration: none;"&gt;Open XML SDK&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span lang="EN-US" style="color: black; font-family: Georgia, serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span lang="EN-US" style="color: black; font-family: Georgia, serif;"&gt;and F# and posted the snippet at&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span lang="EN-US" style="color: black; font-family: Georgia, serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="color: blue; font-family: Georgia, serif;"&gt;&lt;a href="http://fssnip.net/54"&gt;&lt;span lang="EN-US" style="color: #1c9b41; text-decoration: none;"&gt;fssnip.net&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span lang="EN-US" style="color: black; font-family: Georgia, serif;"&gt;.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;1: &lt;/span&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas; font-size: 9.5pt;"&gt;//reference to the Open Office SDK&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;2: &lt;/span&gt;&lt;span lang="EN-US" style="color: purple; font-family: Consolas; font-size: 9.5pt;"&gt;#r&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: olive;"&gt;@"C:\Program Files (x86)\Open XML SDK\V2.0\lib\DocumentFormat.OpenXml.dll"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;3: &lt;/span&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas; font-size: 9.5pt;"&gt;//reference to the package &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;4: &lt;/span&gt;&lt;span style="color: purple; font-family: Consolas; font-size: 9.5pt;"&gt;#r&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: olive;"&gt;"WindowsBase"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;5: &lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;6: &lt;/span&gt;&lt;span style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;open&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;DocumentFormat&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;OpenXml&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;7: &lt;/span&gt;&lt;span style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;open&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;DocumentFormat&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;OpenXml&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Packaging&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;8: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;open&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;DocumentFormat&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;OpenXml&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Spreadsheet&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;9: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;10: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;createSpreadsheet&lt;/span&gt; (&lt;span style="color: black;"&gt;filepath&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;string&lt;/span&gt;) (&lt;span style="color: black;"&gt;sheetName&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;string&lt;/span&gt;) &lt;span style="color: purple;"&gt;=&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;11: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: green;"&gt;// Create a spreadsheet document by supplying the filepath.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;12: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: green;"&gt;// By default, AutoSave = true, Editable = true, and Type = xlsx.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;13: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;14: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: black;"&gt;using&lt;/span&gt; (&lt;span style="color: black;"&gt;SpreadsheetDocument&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Create&lt;/span&gt;(&lt;span style="color: black;"&gt;filepath&lt;/span&gt;, &lt;span style="color: black;"&gt;SpreadsheetDocumentType&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Workbook&lt;/span&gt;)) (&lt;span style="color: navy;"&gt;fun&lt;/span&gt; &lt;span style="color: black;"&gt;spreadsheetDocument&lt;/span&gt; &lt;span style="color: navy;"&gt;-&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;15: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;16: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: green;"&gt;// Add a WorkbookPart to the document.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;17: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;workbookpart&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;spreadsheetDocument&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AddWorkbookPart&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;18: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: black;"&gt;workbookpart&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Workbook&lt;/span&gt; &lt;span style="color: purple;"&gt;&amp;lt;-&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Workbook&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;19: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;20: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: green;"&gt;// Add a WorksheetPart to the WorkbookPart.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;21: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: green;"&gt;// http://stackoverflow.com/questions/5702939/unable-to-append-a-sheet-using-openxml-with-f-fsharp&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;22: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;worksheetPart&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;workbookpart&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AddNewPart&lt;/span&gt;&lt;span style="color: purple;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black;"&gt;WorksheetPart&lt;/span&gt;&lt;span style="color: purple;"&gt;&amp;gt;&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;23: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: black;"&gt;worksheetPart&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Worksheet&lt;/span&gt; &lt;span style="color: purple;"&gt;&amp;lt;-&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Worksheet&lt;/span&gt;(&lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;SheetData&lt;/span&gt;()&lt;span style="color: purple;"&gt;:&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;OpenXmlElement&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;24: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;25: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: green;"&gt;// Add Sheets to the Workbook.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;26: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;sheets&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;spreadsheetDocument&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;WorkbookPart&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Workbook&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AppendChild&lt;/span&gt;&lt;span style="color: purple;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black;"&gt;Sheets&lt;/span&gt;&lt;span style="color: purple;"&gt;&amp;gt;&lt;/span&gt;(&lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Sheets&lt;/span&gt;())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;27: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;28: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: green;"&gt;// Append a new worksheet and associate it with the workbook.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;29: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;sheet&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Sheet&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;30: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: black;"&gt;sheet&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Id&lt;/span&gt; &lt;span style="color: purple;"&gt;&amp;lt;-&lt;/span&gt;&amp;nbsp; &lt;span style="color: black;"&gt;StringValue&lt;/span&gt;(&lt;span style="color: black;"&gt;spreadsheetDocument&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;WorkbookPart&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;GetIdOfPart&lt;/span&gt;(&lt;span style="color: black;"&gt;worksheetPart&lt;/span&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;31: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: black;"&gt;sheet&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;SheetId&lt;/span&gt; &lt;span style="color: purple;"&gt;&amp;lt;-&lt;/span&gt;&amp;nbsp; &lt;span style="color: black;"&gt;UInt32Value&lt;/span&gt;(&lt;span style="color: green;"&gt;1u&lt;/span&gt;) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;32: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: black;"&gt;sheet&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Name&lt;/span&gt; &lt;span style="color: purple;"&gt;&amp;lt;-&lt;/span&gt;&amp;nbsp; &lt;span style="color: black;"&gt;StringValue&lt;/span&gt;(&lt;span style="color: black;"&gt;sheetName&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;33: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: black;"&gt;sheets&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Append&lt;/span&gt;([&lt;span style="color: black;"&gt;sheet&lt;/span&gt; &lt;span style="color: purple;"&gt;:&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;OpenXmlElement&lt;/span&gt;])&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;34: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;35: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;36: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;result&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;createSpreadsheet&lt;/span&gt; &lt;span style="color: olive;"&gt;@"D:\Tmp\test1.xlsx"&lt;/span&gt; &lt;span style="color: olive;"&gt;"test"&lt;/span&gt;;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: rgb(240, 240, 240); line-height: normal; margin: 0cm 0cm 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;37: &lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;I thought that it would be as straightforward as creating a word document. This was not the case.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;This time some objects have be up casted (the :&amp;gt; symbol) to &lt;span style="color: black;"&gt;&lt;span style="font-family: Consolas; font-size: x-small;"&gt;OpenXmlElement&amp;nbsp;&lt;span style="font-family: Calibri; font-size: small;"&gt;objects and some values had to be transfomed form strings to StringValues&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;"&gt;The source: &lt;/span&gt;&lt;a href="http://stackoverflow.com/questions/5702939/unable-to-append-a-sheet-using-openxml-with-f-fsharp"&gt;&lt;span style="color: blue; font-family: Calibri;"&gt;http://stackoverflow.com/questions/5702939/unable-to-append-a-sheet-using-openxml-with-f-fsharp&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-1689250567824553636?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BwB-xZBxMUYRZf--xFPkdSO4AMM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BwB-xZBxMUYRZf--xFPkdSO4AMM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BwB-xZBxMUYRZf--xFPkdSO4AMM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BwB-xZBxMUYRZf--xFPkdSO4AMM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/lIWl-v1D1QI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/1689250567824553636/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=1689250567824553636" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/1689250567824553636?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/1689250567824553636?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/lIWl-v1D1QI/create-open-xml-spreadsheet-in-f.html" title="Create Open XML Spreadsheet in F#" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/05/create-open-xml-spreadsheet-in-f.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcCSXs9cCp7ImA9WhZVEkg.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-8503194342220210273</id><published>2011-05-24T19:27:00.000+02:00</published><updated>2011-05-24T19:27:48.568+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-24T19:27:48.568+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="F#" /><category scheme="http://www.blogger.com/atom/ns#" term="Open XML" /><category scheme="http://www.blogger.com/atom/ns#" term="Word" /><title>Create Open XML Word document in F#</title><content type="html">&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-margin-top-alt: auto;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Georgia, serif; font-size: 12pt;"&gt;I needed a word document. I created it with the&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&amp;amp;displaylang=en"&gt; Open XML SDK&lt;/a&gt; and  F# and posted the snippet at &lt;span style="color: blue;"&gt;&lt;a href="http://fssnip.net/53"&gt;fssnip.net&lt;/a&gt;&lt;/span&gt;.&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Times New Roman', serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-margin-top-alt: auto;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Georgia, serif; font-size: 12pt;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt; 1: &lt;/span&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas; font-size: 9.5pt;"&gt;//reference to the Open Office SDK&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt; &lt;/span&gt;2: &lt;/span&gt;&lt;span lang="EN-US" style="color: purple; font-family: Consolas; font-size: 9.5pt;"&gt;#r&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: olive;"&gt;@"C:\Program Files (x86)\Open XML SDK\V2.0\lib\DocumentFormat.OpenXml.dll"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt; &lt;/span&gt;3: &lt;/span&gt;&lt;span lang="EN-US" style="color: green; font-family: Consolas; font-size: 9.5pt;"&gt;//reference to the package &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;4: &lt;/span&gt;&lt;span style="color: purple; font-family: Consolas; font-size: 9.5pt;"&gt;#r&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: olive;"&gt;"WindowsBase"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt; &lt;/span&gt;5: &lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt; &lt;/span&gt;6: &lt;/span&gt;&lt;span style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;open&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;DocumentFormat&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;OpenXml&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt; &lt;/span&gt;7: &lt;/span&gt;&lt;span style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;open&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;DocumentFormat&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;OpenXml&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Wordprocessing&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;8: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;open&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;DocumentFormat&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;OpenXml&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Packaging&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt; &lt;/span&gt;9: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;10: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;testString&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: olive;"&gt;"This is a test"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;11: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;printXml&lt;/span&gt; &lt;span style="color: black;"&gt;text&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;12: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color: black;"&gt;printfn&lt;/span&gt; &lt;span style="color: olive;"&gt;"xml: %s"&lt;/span&gt; &lt;span style="color: black;"&gt;text&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;13: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;14: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;createBody&lt;/span&gt; (&lt;span style="color: black;"&gt;text&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;string&lt;/span&gt;) &lt;span style="color: purple;"&gt;=&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;15: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;text&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Text&lt;/span&gt;(&lt;span style="color: black;"&gt;text&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;16: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;run&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Run&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;17: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color: black;"&gt;run&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AppendChild&lt;/span&gt;(&lt;span style="color: black;"&gt;text&lt;/span&gt;) &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;ignore&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;18: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;para&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Paragraph&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;19: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color: black;"&gt;para&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AppendChild&lt;/span&gt;(&lt;span style="color: black;"&gt;run&lt;/span&gt;)&lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;ignore&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;20: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;body&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Body&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;21: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color: black;"&gt;body&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AppendChild&lt;/span&gt;(&lt;span style="color: black;"&gt;para&lt;/span&gt;)&lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;ignore&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;22: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color: black;"&gt;body&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;23: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;24: &lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 9.5pt;"&gt;printXml&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; (&lt;span style="color: black;"&gt;createBody&lt;/span&gt; &lt;span style="color: black;"&gt;testString&lt;/span&gt;)&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;InnerXml&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;25: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;26: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;createDocument&lt;/span&gt; (&lt;span style="color: black;"&gt;text&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;string&lt;/span&gt;) &lt;span style="color: purple;"&gt;=&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;27: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;   &lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;body&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;createBody&lt;/span&gt; &lt;span style="color: black;"&gt;text&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;28: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;   &lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;doc&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: navy;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;Document&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;29: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;   &lt;/span&gt;&lt;span style="color: black;"&gt;doc&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AppendChild&lt;/span&gt;(&lt;span style="color: black;"&gt;body&lt;/span&gt;) &lt;span style="color: purple;"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;ignore&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;30: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;   &lt;/span&gt;&lt;span style="color: black;"&gt;doc&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;31: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;32: &lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Consolas; font-size: 9.5pt;"&gt;printXml&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; (&lt;span style="color: black;"&gt;createDocument&lt;/span&gt; &lt;span style="color: black;"&gt;testString&lt;/span&gt;)&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;InnerXml&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;33: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;34: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;createWordprocessingDocument&lt;/span&gt; (&lt;span style="color: black;"&gt;filepath&lt;/span&gt;&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: black;"&gt;string&lt;/span&gt;) &lt;span style="color: black;"&gt;text&lt;/span&gt;&lt;span style="color: purple;"&gt;=&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;35: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color: black;"&gt;using&lt;/span&gt; (&lt;span style="color: black;"&gt;WordprocessingDocument&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Create&lt;/span&gt;(&lt;span style="color: black;"&gt;filepath&lt;/span&gt;, &lt;span style="color: black;"&gt;WordprocessingDocumentType&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Document&lt;/span&gt;)) (&lt;span style="color: navy;"&gt;fun&lt;/span&gt; &lt;span style="color: black;"&gt;doc&lt;/span&gt; &lt;span style="color: navy;"&gt;-&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;36: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color: navy;"&gt;let&lt;/span&gt; &lt;span style="color: black;"&gt;mainPart&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;doc&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;AddMainDocumentPart&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;37: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color: black;"&gt;mainPart&lt;/span&gt;&lt;span style="color: purple;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;Document&lt;/span&gt; &lt;span style="color: purple;"&gt;&amp;lt;-&lt;/span&gt; &lt;span style="color: black;"&gt;createDocument&lt;/span&gt; &lt;span style="color: black;"&gt;text&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;38: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span&gt;    &lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;39: &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F0F0F0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: #80b0b0; font-family: Consolas; font-size: 9.5pt;"&gt;40: &lt;/span&gt;&lt;span lang="EN-US" style="color: navy; font-family: Consolas; font-size: 9.5pt;"&gt;let&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: black;"&gt;result3&lt;/span&gt; &lt;span style="color: purple;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;createWordprocessingDocument&lt;/span&gt; &lt;span style="color: olive;"&gt;@"D:\Tmp\test1.docx"&lt;/span&gt; &lt;span style="color: black;"&gt;testString&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val testString : string&lt;br /&gt;
&lt;br /&gt;
Full name: Snippet.testString&lt;br /&gt;
&lt;br /&gt;
type: string&lt;br /&gt;
implements: System.IComparable&lt;br /&gt;
implements: System.ICloneable&lt;br /&gt;
implements: System.IConvertible&lt;br /&gt;
implements: System.IComparable&lt;string&gt;&lt;br /&gt;
implements: seq&lt;char&gt;&lt;br /&gt;
implements: System.Collections.IEnumerable&lt;br /&gt;
implements: System.IEquatable&lt;string&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/string&gt;&lt;/char&gt;&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val printXml : string -&amp;gt; unit&lt;br /&gt;
&lt;br /&gt;
Full name: Snippet.printXml&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val text : string&lt;br /&gt;
&lt;br /&gt;
type: string&lt;br /&gt;
implements: System.IComparable&lt;br /&gt;
implements: System.ICloneable&lt;br /&gt;
implements: System.IConvertible&lt;br /&gt;
implements: System.IComparable&lt;string&gt;&lt;br /&gt;
implements: seq&lt;char&gt;&lt;br /&gt;
implements: System.Collections.IEnumerable&lt;br /&gt;
implements: System.IEquatable&lt;string&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/string&gt;&lt;/char&gt;&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val printfn : Printf.TextWriterFormat&amp;lt;'T&amp;gt; -&amp;gt; 'T&lt;br /&gt;
&lt;br /&gt;
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.printfn&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val createBody : string -&amp;gt; 'a&lt;br /&gt;
&lt;br /&gt;
Full name: Snippet.createBody&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;Multiple items&lt;br /&gt;
val string : 'T -&amp;gt; string&lt;br /&gt;
&lt;br /&gt;
Full name: Microsoft.FSharp.Core.Operators.string&lt;br /&gt;
&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
type string = System.String&lt;br /&gt;
&lt;br /&gt;
Full name: Microsoft.FSharp.Core.string&lt;br /&gt;
&lt;br /&gt;
type: string&lt;br /&gt;
implements: System.IComparable&lt;br /&gt;
implements: System.ICloneable&lt;br /&gt;
implements: System.IConvertible&lt;br /&gt;
implements: System.IComparable&lt;string&gt;&lt;br /&gt;
implements: seq&lt;char&gt;&lt;br /&gt;
implements: System.Collections.IEnumerable&lt;br /&gt;
implements: System.IEquatable&lt;string&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/string&gt;&lt;/char&gt;&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val text : 'a&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;namespace Microsoft.FSharp.Text&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val run : 'a&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val ignore : 'T -&amp;gt; unit&lt;br /&gt;
&lt;br /&gt;
Full name: Microsoft.FSharp.Core.Operators.ignore&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val para : 'a&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val body : 'a&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val createDocument : string -&amp;gt; 'a&lt;br /&gt;
&lt;br /&gt;
Full name: Snippet.createDocument&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val doc : 'a&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val createWordprocessingDocument : string -&amp;gt; 'a -&amp;gt; 'b&lt;br /&gt;
&lt;br /&gt;
Full name: Snippet.createWordprocessingDocument&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val filepath : string&lt;br /&gt;
&lt;br /&gt;
type: string&lt;br /&gt;
implements: System.IComparable&lt;br /&gt;
implements: System.ICloneable&lt;br /&gt;
implements: System.IConvertible&lt;br /&gt;
implements: System.IComparable&lt;string&gt;&lt;br /&gt;
implements: seq&lt;char&gt;&lt;br /&gt;
implements: System.Collections.IEnumerable&lt;br /&gt;
implements: System.IEquatable&lt;string&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/string&gt;&lt;/char&gt;&lt;/string&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val using : 'T -&amp;gt; ('T -&amp;gt; 'U) -&amp;gt; 'U (requires 'T :&amp;gt; System.IDisposable)&lt;br /&gt;
&lt;br /&gt;
Full name: Microsoft.FSharp.Core.Operators.using&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val doc : 'a (requires 'a :&amp;gt; System.IDisposable)&lt;br /&gt;
&lt;br /&gt;
type: 'a&lt;br /&gt;
implements: System.IDisposable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val mainPart : 'a&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #FFFFD0; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="display: none; font-size: 8pt;"&gt;val result3 : 'a&lt;br /&gt;
&lt;br /&gt;
Full name: Snippet.result3&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-margin-top-alt: auto;"&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Times New Roman', serif; font-size: 12pt;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-margin-top-alt: auto;"&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Times New Roman', serif; font-size: 12pt;"&gt;It is a direct transformation of the C# code from the help file of the Open XML SDK:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;public static void CreateWordprocessingDocument(string filepath)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;    &lt;/span&gt;// Create a document by supplying the filepath. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;    &lt;/span&gt;using (WordprocessingDocument wordDocument =&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;        &lt;/span&gt;WordprocessingDocument.Create(filepath, WordprocessingDocumentType.Document))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt; &lt;span&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;        &lt;/span&gt;// Add a main document part. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;        &lt;/span&gt;MainDocumentPart mainPart = wordDocument.AddMainDocumentPart();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;        &lt;/span&gt;// Create the document structure and add some text.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;        &lt;/span&gt;mainPart.Document = new Document();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;        &lt;/span&gt;Body body = mainPart.Document.AppendChild(new Body());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;        &lt;/span&gt;Paragraph para = body.AppendChild(new Paragraph());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;        &lt;/span&gt;Run run = para.AppendChild(new Run());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;        &lt;/span&gt;run.AppendChild(new Text("Create text in body - CreateWordprocessingDocument"));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="color: black; font-family: Georgia, serif; font-size: 12pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-8503194342220210273?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rg2JMgKr6gvcu0yR-GkCpBgNScc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rg2JMgKr6gvcu0yR-GkCpBgNScc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rg2JMgKr6gvcu0yR-GkCpBgNScc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rg2JMgKr6gvcu0yR-GkCpBgNScc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/U3UmOGT66Jc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/8503194342220210273/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=8503194342220210273" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/8503194342220210273?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/8503194342220210273?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/U3UmOGT66Jc/create-open-xml-word-document-in-f.html" title="Create Open XML Word document in F#" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2011/05/create-open-xml-word-document-in-f.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8CQ3w4eyp7ImA9WxRQEE4.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-8586023119272335239</id><published>2008-09-29T13:05:00.001+02:00</published><updated>2008-10-03T12:47:42.233+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-03T12:47:42.233+02:00</app:edited><title>F# Winform</title><content type="html">&lt;p&gt;When you want to make a F# winform application and you don&amp;#8217;t want to open an extra console when you start the application.&lt;/p&gt;  &lt;p&gt;How can you do this (F# version 1.9.6.2)?&lt;/p&gt;  &lt;p&gt;1. Create a F# application:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/PsAccelerator/SOC2dRM28KI/AAAAAAAAADE/Dy95Dz10MBk/s1600-h/clip_image002%5B1%5D%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="clip_image002[1]" src="http://lh4.ggpht.com/PsAccelerator/SOC2d5dgiWI/AAAAAAAAADI/uepULg76jqQ/clip_image002%5B1%5D_thumb%5B1%5D.jpg?imgmax=800" width="328" height="84" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;[&lt;strong&gt;Edit- thanks Brian&lt;/strong&gt; ]&lt;/p&gt;  &lt;p&gt;2. Open the project properties&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/PsAccelerator/SOX4SNb1JWI/AAAAAAAAAD8/WlI6gvfZg1Y/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/PsAccelerator/SOX4SnETrEI/AAAAAAAAAEA/dod03Y613A0/image_thumb.png?imgmax=800" width="97" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. In the application tab change the output type&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/PsAccelerator/SOX4TOHlK7I/AAAAAAAAAEE/rFbpFzQAADc/s1600-h/image%5B17%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/PsAccelerator/SOX4Tei4TlI/AAAAAAAAAEI/JFTwU2i6-3M/image_thumb%5B7%5D.png?imgmax=800" width="436" height="134" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;4. Add reference to the System.Windows.Forms&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/PsAccelerator/SOC2grpu7TI/AAAAAAAAADk/0GlKt14QSPU/s1600-h/clip_image010%5B1%5D%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="clip_image010[1]" src="http://lh5.ggpht.com/PsAccelerator/SOC2g0rx4yI/AAAAAAAAADo/UkmP_G5YuAA/clip_image010%5B1%5D_thumb%5B1%5D.jpg?imgmax=800" width="291" height="40" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;5. Add your code.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/PsAccelerator/SOC2hKAbA0I/AAAAAAAAADs/kV6cr6bbe8s/s1600-h/clip_image012%5B1%5D%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="clip_image012[1]" src="http://lh6.ggpht.com/PsAccelerator/SOC2hoI_24I/AAAAAAAAADw/U35Lg8wgwlU/clip_image012%5B1%5D_thumb.jpg?imgmax=800" width="244" height="135" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;6. Run your app&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/PsAccelerator/SOC2hwXZspI/AAAAAAAAAD0/Km3NYCdZ8n8/s1600-h/clip_image014%5B1%5D%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="clip_image014[1]" src="http://lh4.ggpht.com/PsAccelerator/SOC2iNWD2qI/AAAAAAAAAD4/1TKvfzkbL3o/clip_image014%5B1%5D_thumb.jpg?imgmax=800" width="244" height="96" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;7. Close.&lt;/p&gt;  &lt;p&gt;8. Add your own details.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-8586023119272335239?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SMFg68-4QHN-DSIFnRVG_LMr5fo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SMFg68-4QHN-DSIFnRVG_LMr5fo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SMFg68-4QHN-DSIFnRVG_LMr5fo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SMFg68-4QHN-DSIFnRVG_LMr5fo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/kPWbrNA66Rw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/8586023119272335239/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=8586023119272335239" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/8586023119272335239?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/8586023119272335239?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/kPWbrNA66Rw/f-winform_29.html" title="F# Winform" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/PsAccelerator/SOC2d5dgiWI/AAAAAAAAADI/uepULg76jqQ/s72-c/clip_image002%5B1%5D_thumb%5B1%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2008/09/f-winform_29.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAARXs-eSp7ImA9WxRREEQ.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-8843623785043580884</id><published>2008-09-22T12:03:00.001+02:00</published><updated>2008-09-22T17:52:24.551+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-22T17:52:24.551+02:00</app:edited><title /><content type="html">&lt;span xmlns=''&gt;&lt;h1&gt;Creating a parser with F#&lt;br /&gt;&lt;/h1&gt;&lt;p&gt;I want to write my own html-parser. That is one of the reasons I am learning F#. I have read all the documentation that is available in the three published F# books and tried to build some simple parsers myself and downloaded the examples of &lt;a href='http://blogs.msdn.com/chrsmith/default.aspx'&gt;Chris Smith&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;This resulted in a naïve development approach: start with lexer, than create the parser, compose the AST and finally build your application that consumes the AST. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;One of the lessons learned: when you want to create a parser you have to start with analyses of the text type. In case you can step through the text and can determine the action after each token a lexer is what  you need.  In case the action is determined by server tokens you need a parser.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Example of program that needs a lexer: &lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A program that replacing digits by roman numerals.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A simple encryptor&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Example of program that needs a lexer and a parser: &lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Xml-parser&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Code&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-8843623785043580884?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HQt9gwijKbG6JjUc79fxrB3lZMM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HQt9gwijKbG6JjUc79fxrB3lZMM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HQt9gwijKbG6JjUc79fxrB3lZMM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HQt9gwijKbG6JjUc79fxrB3lZMM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/rcIsOGUsmT8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/8843623785043580884/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=8843623785043580884" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/8843623785043580884?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/8843623785043580884?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/rcIsOGUsmT8/creating-parser-with-f-this-is-test.html" title="" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2008/09/creating-parser-with-f-this-is-test.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08HQ3g9eCp7ImA9WxZRE08.&quot;"><id>tag:blogger.com,1999:blog-6810762626202656454.post-5895861457021023274</id><published>2008-02-06T21:07:00.001+01:00</published><updated>2008-02-06T21:30:32.660+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-06T21:30:32.660+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="union type" /><category scheme="http://www.blogger.com/atom/ns#" term="F#" /><category scheme="http://www.blogger.com/atom/ns#" term="discriminated unions" /><title>F# union types in C#</title><content type="html">&lt;div face="courier new"&gt;&lt;/div&gt;&lt;div face="courier new"&gt;An other name for union types is discriminated unions.&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;I was interested what a union type looks and behaves in C#.&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;I build small demo applcation:&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; nudTest_ValueChanged(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt; x = Convert.ToInt32(nudTest.Value);&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;(PsA.resultOfVote(x).IsYes())&lt;br /&gt;{&lt;br /&gt;lblResult.Text = &lt;span style="color:maroon;"&gt;"Yes"&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;(PsA.resultOfVote(x).IsNo())&lt;br /&gt;{&lt;br /&gt;lblResult.Text = &lt;span style="color:maroon;"&gt;"No"&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;(PsA.resultOfVote(x).IsMaybe())&lt;br /&gt;{&lt;br /&gt;lblResult.Text = PsA.resultOfVote(x).Maybe1.ToString();&lt;br /&gt;}&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;}&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;a href="http://lh4.google.com/PsAccelerator/R6oThSqgPDI/AAAAAAAAABo/evfLVu1vzQc/image%5B2%5D"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="65" alt="image" src="http://lh5.google.com/PsAccelerator/R6oThiqgPEI/AAAAAAAAAB0/_6xacWmzbOo/image_thumb" width="244" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;a href="http://lh5.google.com/PsAccelerator/R6oTiiqgPFI/AAAAAAAAAB8/iTwhCpTuqT8/image%5B8%5D"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="84" alt="image" src="http://lh3.google.com/PsAccelerator/R6oTjCqgPGI/AAAAAAAAACE/UPJQoSgeelU/image_thumb%5B2%5D" width="244" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;a href="http://lh4.google.com/PsAccelerator/R6oTjSqgPHI/AAAAAAAAACM/9di_W6ILKMI/image%5B11%5D"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="77" alt="image" src="http://lh6.google.com/PsAccelerator/R6oTjyqgPII/AAAAAAAAACU/ajctKUzRWkg/image_thumb%5B3%5D" width="244" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;The object created by F# looked like this:&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;a href="http://lh5.google.com/PsAccelerator/R6oTkiqgPJI/AAAAAAAAACc/mwr_y0B6IEY/image%5B14%5D"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="95" alt="image" src="http://lh3.google.com/PsAccelerator/R6oTlCqgPKI/AAAAAAAAACk/LRA10RJHrCQ/image_thumb%5B4%5D" width="244" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;I called the dll PsA.&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div style="FONT-FAMILY: courier new"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6810762626202656454-5895861457021023274?l=ps-a.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/snQAREF4hVAPr3UFlLLreTvCB9E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/snQAREF4hVAPr3UFlLLreTvCB9E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/snQAREF4hVAPr3UFlLLreTvCB9E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/snQAREF4hVAPr3UFlLLreTvCB9E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Psaccelerator/~4/I8J7D7s55A4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ps-a.blogspot.com/feeds/5895861457021023274/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6810762626202656454&amp;postID=5895861457021023274" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/5895861457021023274?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6810762626202656454/posts/default/5895861457021023274?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Psaccelerator/~3/I8J7D7s55A4/f-union-types-in-c.html" title="F# union types in C#" /><author><name>Piet Amersfoort</name><uri>http://www.blogger.com/profile/10536068168999188614</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/-P1Wa3oCRM70/TfregHSyA7I/AAAAAAAAAFk/X05xTbZz6A4/s220/PietAmersfoort.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://ps-a.blogspot.com/2008/02/f-union-types-in-c.html</feedburner:origLink></entry></feed>

