<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Office Development is more than VBA</title><link>http://blogs.msdn.com/b/jensha/</link><description>News zu Open XML, VSTO, Deployment, .NET, Cloud Computing und anderes</description><dc:language>de-DE</dc:language><generator>Telligent Community 5.6.583.19431 (Build: 5.6.583.19431)</generator><item><title>installierte .NET Versionen ermitteln</title><link>http://blogs.msdn.com/b/jensha/archive/2011/11/21/installierte-net-versionen-ermitteln.aspx</link><pubDate>Mon, 21 Nov 2011 10:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10239068</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10239068</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/11/21/installierte-net-versionen-ermitteln.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Eine einfache Möglichkeit, die installierten Versionen des .NET Frameworks zu ermitteln bietet dieses kleine &lt;a href="http://www.asoft.be/prod_netver.html"&gt;Tool&lt;/a&gt; von ASoft. Außerdem kann man auch gleich das benötigte Framework oder SDK von Microsoft herunterladen. Die Links sind eingebaut.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/1768.image_5F00_2.png"&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="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/5670.image_5F00_thumb.png" width="373" height="531"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Kollege Aaron Stebner hat ein &lt;a href="http://blogs.msdn.com/b/astebner/archive/2006/08/02/687233.aspx"&gt;Code-Beispiel für C++&lt;/a&gt; veröffentlicht, das sich ebenfalls diesem Thema widmet.&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10239068" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Coding+Tips/">Coding Tips</category></item><item><title>VSTO PowerTools: ImageMSO Window in Visual Studio 2010</title><link>http://blogs.msdn.com/b/jensha/archive/2011/11/18/vsto-powertools-imagemso-window-in-visual-studio-2010.aspx</link><pubDate>Fri, 18 Nov 2011 12:52:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10238498</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10238498</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/11/18/vsto-powertools-imagemso-window-in-visual-studio-2010.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Wenn bei installiertem Visual Studio 2010 die VSTO PowerTools installiert werden, wird das Visual Studio Add-In &lt;em&gt;&lt;strong&gt;ImageMSO Window&lt;/strong&gt;&lt;/em&gt; zum Anzeigen und Auswählen des gewünschten in Office integrierten Icons nicht angezeigt. Mit folgendem kleinen Trick funktioniert es wieder:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;In der Konfigurationsdatei &lt;strong&gt;ImageMsoVS2008.AddIn&lt;/strong&gt; muss die Version des Hosts (also Visual Studio) geändert werden:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&amp;lt;HostApplication&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;Microsoft Visual Studio&amp;lt;/Name&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Version&amp;gt;&lt;strong&gt;10.0&lt;/strong&gt;&amp;lt;/Version&amp;gt;&lt;br&gt;&amp;lt;/HostApplication&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die Datei befindet sich im Ordner &lt;strong&gt;C:\Users\&amp;lt;UserName&amp;gt;\AppData\Roaming\Microsoft\MSEnvShared\Addins\&lt;/strong&gt; (unter Windows 7).&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/1108.image_5F00_2.png"&gt;&lt;font size="2"&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="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/0131.image_5F00_thumb.png" width="350" height="375"&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/1682.image_5F00_4.png"&gt;&lt;font size="2"&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="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/8032.image_5F00_thumb_5F00_1.png" width="430" height="421"&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;(getestet mit der englischen Version von VS 2010)&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10238498" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/-NET+Dev+mit+Office/">.NET Dev mit Office</category></item><item><title>Microsoft Germany is hireing …</title><link>http://blogs.msdn.com/b/jensha/archive/2011/11/03/microsoft-germany-is-hireing.aspx</link><pubDate>Thu, 03 Nov 2011 13:07:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10233579</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10233579</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/11/03/microsoft-germany-is-hireing.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Wir suchen engagierte Softwarespezialisten, die Spaß an Teamwork haben, gerne unterwegs bei Kunden sind und einen von folgenden Bereichen abdecken können:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="https://careers.microsoft.com/JobDetails.aspx?ss=&amp;amp;pg=0&amp;amp;so=&amp;amp;rw=1&amp;amp;jid=67418&amp;amp;jlang=EN"&gt;&lt;font size="2" face="Tahoma"&gt;SQL-Developer&lt;/font&gt;&lt;/a&gt; &lt;p&gt;&lt;a href="https://careers.microsoft.com/JobDetails.aspx?ss=&amp;amp;pg=0&amp;amp;so=&amp;amp;rw=1&amp;amp;jid=67412&amp;amp;jlang=EN"&gt;&lt;font size="2" face="Tahoma"&gt;C++/Debugging Expert&lt;/font&gt;&lt;/a&gt; &lt;p&gt;&lt;a href="https://careers.microsoft.com/JobDetails.aspx?ss=&amp;amp;pg=0&amp;amp;so=&amp;amp;rw=6&amp;amp;jid=30958&amp;amp;jlang=EN"&gt;&lt;font size="2" face="Tahoma"&gt;Testing Expert&lt;/font&gt;&lt;/a&gt; &lt;p&gt;&lt;a href="https://careers.microsoft.com/JobDetails.aspx?ss=&amp;amp;pg=0&amp;amp;so=&amp;amp;rw=2&amp;amp;jid=43984&amp;amp;jlang=EN"&gt;&lt;font size="2" face="Tahoma"&gt;Sharepoint Developer&lt;/font&gt;&lt;/a&gt; &lt;p&gt;&lt;a href="https://careers.microsoft.com/JobDetails.aspx?ss=&amp;amp;pg=0&amp;amp;so=&amp;amp;rw=7&amp;amp;jid=63293&amp;amp;jlang=EN"&gt;&lt;font size="2" face="Tahoma"&gt;.NET Developer&lt;/font&gt;&lt;/a&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Bewerbt Euch entweder direkt über den Link oder meldet Euch bei mir.&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10233579" width="1" height="1"&gt;</description></item><item><title>Office Business Application Day bei Microsoft in München</title><link>http://blogs.msdn.com/b/jensha/archive/2011/10/10/office-business-application-day-bei-microsoft-in-m-252-nchen.aspx</link><pubDate>Mon, 10 Oct 2011 14:19:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10222777</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10222777</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/10/10/office-business-application-day-bei-microsoft-in-m-252-nchen.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Am 04.11.11 findet zum dritten Mal die Community Veranstaltung &lt;b&gt;Office Business Applikation (OBA) Day &lt;/b&gt;in Unterschleißheim bei Microsoft Deutschland statt. Dieser Tag widmet sich der &lt;strong&gt;Entwicklung&lt;/strong&gt; rund um MS &lt;strong&gt;Office&lt;/strong&gt;. Themen sind &lt;strong&gt;VSTO&lt;/strong&gt;, &lt;strong&gt;SharePoint&lt;/strong&gt; und &lt;strong&gt;Office 365&lt;/strong&gt;. Des Weiteren bleibt auch viel Zeit für das &lt;strong&gt;Netzwerken&lt;/strong&gt; und den &lt;strong&gt;Erfahrungsaustausch&lt;/strong&gt;. Als &lt;strong&gt;Sprecher&lt;/strong&gt; sind dabei: &lt;strong&gt;Thorsten Hans&lt;/strong&gt;, &lt;strong&gt;Tom Wendel&lt;/strong&gt;, &lt;strong&gt;Helmut Obertanner&lt;/strong&gt;, &lt;strong&gt;Andreas Aschauer&lt;/strong&gt;, &lt;strong&gt;Mario Meir-Huber&lt;/strong&gt; und &lt;strong&gt;Lars Keller&lt;/strong&gt;.&lt;br&gt;Weitere Informationen &amp;amp; die &lt;strong&gt;Anmeldung&lt;/strong&gt; finden Sie unter &lt;/font&gt;&lt;a href="http://www.oba-day.de"&gt;&lt;font size="2" face="Tahoma"&gt;http://www.oba-day.de&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10222777" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Events/">Events</category></item><item><title>Say Good Bye to Hollywood…</title><link>http://blogs.msdn.com/b/jensha/archive/2011/08/26/say-good-bye-to-hollywood.aspx</link><pubDate>Fri, 26 Aug 2011 14:02:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10200796</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10200796</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/08/26/say-good-bye-to-hollywood.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-family: Tahoma;" face="Tahoma"&gt;Nach 8 Jahren in der DPE als Technical Evangelist und Platform Strategy Manager (wie schnell doch die Zeit vergeht&amp;hellip;) habe ich mich entschlossen, etwas anderes zu machen. Seit Kurzem bin ich jetzt bei Premier Services for Developers (@ Microsoft) als Application Development Manager t&amp;auml;tig. Das wird auch bedeuten, dass in diesem Blog nur noch gelegentlich Informationen auftauchen.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Tahoma;" face="Tahoma"&gt;Auf jeden Fall sage ich erst mal &lt;span style="font-size: medium;" size="4"&gt;&lt;strong&gt;Danke&lt;/strong&gt;&lt;/span&gt; an alle, die hier mehr oder weniger regelm&amp;auml;&amp;szlig;ig vorbeigesehen haben. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Tahoma;" face="Tahoma"&gt;Ist das das Ende vom Lied? Gewi&amp;szlig; nicht. Eigentlich schwebt mir vor, mal dort mitzuarbeiten, wo am Ende auch etwas heraus kommt, was man anfassen kann&amp;nbsp;;-) -&amp;nbsp;n&amp;auml;mlich reale Produkte. Im Product Management oder der Entwicklungsleitung eines ISV zum Beispiel. Wenn das dann noch im M&amp;uuml;nchner Raum ist und etwas mit Cloud Computing und Windows Azure zu tun hat, dann bin ich interessiert.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Tahoma;" face="Tahoma"&gt;Also dann, bis demn&amp;auml;chst mal. Und pa&amp;szlig;t auf Euch auf.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Tahoma;" face="Tahoma"&gt;- Jens&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10200796" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Off_2D00_Topic+Gedanken/">Off-Topic Gedanken</category></item><item><title>Die nächste PDC heisst //build</title><link>http://blogs.msdn.com/b/jensha/archive/2011/06/10/die-n-228-chste-pdc-heisst-build.aspx</link><pubDate>Fri, 10 Jun 2011 19:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10173453</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10173453</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/06/10/die-n-228-chste-pdc-heisst-build.aspx#comments</comments><description>&lt;p&gt;Die Professional Developer&amp;rsquo;s Conference 2011 hei&amp;szlig;t &lt;strong&gt;//build&lt;/strong&gt;. Diesen Termin unbedingt vormerken: &lt;strong&gt;13.- 16. September 2011&lt;/strong&gt;, in Anaheim, Ca. Es gibt spannende Neuigkeiten! Einen Vorgeschmack gibt es &lt;a href="http://www.youtube.com/watch?v=p92QfWOw88I&amp;amp;feature=player_detailpage"&gt;hier&lt;/a&gt;. Die &lt;a href="http://www.buildwindows.com/"&gt;Registrierung&lt;/a&gt; ist offen!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.buildwindows.com/"&gt;&lt;img height="106" width="109" src="http://build.blob.core.windows.net/media/Default/home/sq_large.png" border="0" style="background-image: none; margin: 5px 5px 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; border-width: 0px;" /&gt;&lt;/a&gt;&lt;a href="http://www.buildwindows.com/"&gt;&lt;img src="http://www.buildwindows.com/themes/buildtheme/content/build_logo.png" alt="BUILD" border="0" style="background-image: none; margin: 5px 5px 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; border-width: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PS: Die //Build wird die PDC &lt;strong&gt;nicht &lt;/strong&gt;ersetzen. Es handelt sich um eine neue Konferenz.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10173453" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/ISV+News+/">ISV News </category></item><item><title>Sneak Peek: Visual Studio vNext</title><link>http://blogs.msdn.com/b/jensha/archive/2011/06/09/sneak-peek-visual-studio-vnext.aspx</link><pubDate>Thu, 09 Jun 2011 09:50:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10172834</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10172834</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/06/09/sneak-peek-visual-studio-vnext.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;&lt;font size="2" face="Tahoma"&gt;Highlights in Visual Studio vNext kurz als deutsches Video erklärt – 30 Minuten die sich lohnen!&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001" border="0" hspace="12" alt="clip_image001" align="right" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/5127.clip_5F00_image001_5F00_6e3cc3d7_2D00_fe79_2D00_4b49_2D00_bff6_2D00_48533c42b471.jpg" width="281" height="116"&gt;&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Einen kurzen Überblick über die bisher angekündigten Highlights in Visual Studio vNext&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; – der nächsten &lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;Version von Visual Studio – gibt ALM Architekt und Visual &lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;Studio-Experte Christian Binder in seinem &lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;30 Minuten dauernden Webcast&lt;/a&gt;. Hier bekommen Sie einen Ausblick auf einige der neuen Funktionen von &lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;Visual Studio vNext.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Schwerpunkte: &lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt; &lt;ul&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Requirements Storyboarding &lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Sprint Planning &amp;amp; Durchführung &lt;/font&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Entwicklerproduktivität abrunden &lt;a href="http://blogs.msdn.com/b/cbinder/archive/2011/05/28/webcast-preview-visual-studio-vnext-alm.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/a&gt;&lt;/font&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Stakeholder-Feedback &lt;/font&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;IntelliTrace in Production &lt;/font&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;System Center-Integration &lt;/font&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;TFS on Azure &lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Alle bisherigen und zukünftigen Beiträge zu Visual Studio vNext finden Sie immer aktuell &lt;a href="http://blogs.msdn.com/b/vsnewsde/archive/tags/vnext/"&gt;unter diesem Link&lt;/a&gt;. &lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10172834" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/ISV+News+/">ISV News </category></item><item><title>Cloud Computing verständlich erklärt</title><link>http://blogs.msdn.com/b/jensha/archive/2011/06/06/cloud-computing-verst-228-ndlich-erkl-228-rt.aspx</link><pubDate>Mon, 06 Jun 2011 11:29:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10171580</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10171580</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/06/06/cloud-computing-verst-228-ndlich-erkl-228-rt.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Ich muss zugeben, inzwischen hasse ich den Begriff &lt;em&gt;Cloud&lt;/em&gt;. Inzwischen ist es ein Buzz Word, dass jeder in den Mund nímmt. Das ist wie damals mit .NET. Auf einmal muss alles in der Cloud sein, notfalls macht man diese dann einfach privat. Aber was bedeutet das überhaupt? Und welche Rolle spielen hierbei die Begriffe SaaS, IaaS und PaaS? Wo paßt Windows Azure hinein? &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Also vielleicht zuerst zu SaaS – &lt;strong&gt;Software as a Service&lt;/strong&gt;. Software wird auf einer Web-Plattform zur Verfügung gestellt. Kostenlos oder im Mietmodell über monatliche Abrechnung. Im einfachsten Fall ist das eine Web-Applikation. Beispiele sind Google Apps, SalesForec Sales Cloud oder Microsoft Office Web Apps bzw. CRM Online, also Applikationen, mit denen Dokumente erstellt oder Daten erfaßt und bearbeitet werden können. Die Ablage der Dokumente oder Daten liegt oftmals ebenfalls in der Cloud. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Als &lt;strong&gt;Infrastructure as a Service&lt;/strong&gt; (IaaS) bezeichnet man die Möglichkeit, eigene Virtuelle Maschinen in einem zentralen Rechenzentrum zu hosten. Man nimmt i.d.R. eine vorgefertigte VM mit dem Betriebssystem seiner Wahl (der Dienstleister unterstützt normalerweise nur bestimmt Versionen), installiert seine Services oder Anwendungen und betreibt das Ganze in einem zentralen Rechenzentrum. Für Updates der Virtuellen Maschinen ist der Betreiber (also Sie) zuständig. Das Paradebeispiel hierfür ist Amazon mit EC2 (Elastic Compute Cloud ). &lt;br&gt;Der Unterschied zum klassischen Hoster ist die Verfügbarkeit von globalen Services, wie Storage, Message Queues, relationales Datenbankservices und ähnlichem sowie Mechanismen zum automatischen Skalieren (bei Bedarf werden neue Instanzen meiner VM automatisch hochgefahren [Elastic BeansTalk bei Amazon]).&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Zu Guter Letzt PaaS – &lt;strong&gt;Platform as a Service&lt;/strong&gt;. Hier ist der Abstraktionsgrad höher als bei IaaS, weil es eine Art Betriebssystem über den vielen einzelnen PCs/Blades gibt und die einzelnen virtualisierten Betriebssysteminstanzen verwaltet. Der Entwickler schreibt seine Software also gegen ein Cloud-Betriebssystem und kümmert sich dort eigentlich nur um die Rollen, in die seine Services/Anwendungen fallen (Web, Worker). Das Cloud-Betriebssystem kümmert sich um die Ausführung der Anwendung nach den vorgegebenen Eckdaten oder Regeln. Load Balancing, OS-Servicing (Patches, Updates), Desaster Recovery, Fail Over, etc. wird durch die Cloud Platform durchgeführt. Desweiteren stehen Komponenten wie Storage (no-SQL like, wie Tables, Blobs und Queues) zur Verfügung. Manche Anbieter, wie Microsoft, bietet ebenfalls eine relationale Datenbank in der Cloud. PaaS hat immer auch Komponenten von IaaS enthalten, allerdings gekapselt und meist nicht direkt erreich- oder konfigurierbar.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://www.davidchappell.com/"&gt;David Chappell&lt;/a&gt; hat dazu einmal eine sehr aussagekräftige Matrix gezeigt, welcher Anbieter mit welchen Services in welcher Rubrik zuhause ist:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/8357.image_5F00_9.png"&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="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/1411.image_5F00_thumb_5F00_3.png" width="526" height="250"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Ein typischer Vertreter für PaaS ist Microsoft &lt;strong&gt;&lt;a href="http://www.microsoft.com/windowsazure/"&gt;Windows Azure&lt;/a&gt;&lt;/strong&gt;. Es werden von Windows Azure auch weitere Komponenten für den Entwickler von Software geboten, die die Kommunikation zwischen dem eigenen Rechenzentrum und den Cloud Services regelt (Azure Connect, Service Bus) oder für Sicherheit und Zugriffsrechte (Access Control Service) bzw. Caching (Caching Services) zuständig sind. Nicht zu vergessen, die Tools für den Software LifeCycle: mit Visual Studio und .NET sind Sie dabei. Aber auch PHP, Ruby, Java, Eclipse, C++ u.a. werden unterstützt.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Je weiter man also die Abstraktion voran treibt, um so mehr fallen die Betriebskosten.&lt;/font&gt;&lt;/p&gt; &lt;p&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="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/8400.image_5F00_10.png" width="436" height="202"&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Einen guten allgemeinen Überblick über Windows Azure bieten folgende gut 7 Minuten Video:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/de-de/ff728566?sf1564767=1"&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="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/3652.image_5F00_3.png" width="394" height="254"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Welche Szenarien sind für Windows Azure prädestiniert? Das sind &lt;font size="2" face="Tahoma"&gt;Anwendungen, die&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;massive skalieren sollen &lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;hochverfügbar sind&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;eine variable Last aufweisen&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;eine kurze oder unvorhersehbare Lebenszeit haben&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Daten parallel verarbeiten&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;die Realisierung der Ideen von StartUps (fail fast/scale fast) darstellen&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;schnell verteilt bzw. zur Verfügung stehen müssen&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Das sind einige, sicher aber nicht alle Szenarien für eine Cloud Plattform. &lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10171580" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Windows 8 Sneak Peek</title><link>http://blogs.msdn.com/b/jensha/archive/2011/06/02/windows-8-sneak-peek.aspx</link><pubDate>Thu, 02 Jun 2011 20:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10170834</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10170834</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/06/02/windows-8-sneak-peek.aspx#comments</comments><description>&lt;p&gt;Jetzt war es endlich soweit: Auf der&lt;em&gt; &lt;a href="http://allthingsd.com/20110601/microsofts-windows-8-demo-from-d9-video/?refcat=d9"&gt;D9 - All Things Digital-Konferenz&lt;/a&gt;&lt;/em&gt; wurde zum ersten Mal enth&amp;uuml;llt, was uns alle mit Windows 8 erwartet.&lt;/p&gt;
&lt;p&gt;Hier einige Schlagzeilen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;komplett neue, dynamische Shell (Explorer) im Metro-Design (Windows Phone 7 sehr &amp;auml;hnlich, und das mit Absicht)&lt;/li&gt;
&lt;li&gt;schnelle und super fl&amp;uuml;ssige Touch-Bedienung (aber auch &amp;ndash; ohne Kompromisse - mit Maus und Tastatur bedienbar)&lt;/li&gt;
&lt;li&gt;nat&amp;uuml;rliches Umschalten zwischen laufenden Anwendungen per Wischbewegung&lt;/li&gt;
&lt;li&gt;volle Kompatibilit&amp;auml;t mit&amp;nbsp;bisherigen Windows-Anwendungen, die im Windows 7-Stil gezeigt werden&lt;/li&gt;
&lt;li&gt;der Internet Explorer 10 nutzt wirklich jedes Pixel an vorhandenem Platz&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Man muss es selbst sehen, um einen Eindruck davon zu bekommen. Das offizielle Microsoft &lt;a href="http://www.youtube.com/watch?v=p92QfWOw88I&amp;amp;feature=player_detailpage"&gt;Video zum Windows 8 Sneak Peek ist hier&lt;/a&gt; zu finden.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Home Screen mit interaktiven Kacheln (Tiles), die wichtige Informationen aus den dahinter stehenden Applikationen zeigen:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/7674.image_5F00_2.png"&gt;&lt;img style="background-image: none; margin: 5px 5px 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/1667.image_5F00_thumb.png" width="594" height="327" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Internet Explorer 10, hier im Eingabemodus:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/3324.image_5F00_4.png"&gt;&lt;img style="background-image: none; margin: 5px 5px 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/6472.image_5F00_thumb_5F00_1.png" width="593" height="330" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip; und im Full Screen Mode (Standard):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/5822.image_5F00_12.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/8475.image_5F00_thumb_5F00_5.png" width="594" height="334" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Eingabe per Touch-Keyboard:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/0045.image_5F00_6.png"&gt;&lt;img style="background-image: none; margin: 5px 5px 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/5344.image_5F00_thumb_5F00_2.png" width="595" height="335" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;umschaltbar auf ein Slate-Keyboard f&amp;uuml;r die Bedienung mit zwei Daumen:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/7026.image_5F00_14.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/5488.image_5F00_thumb_5F00_6.png" width="596" height="332" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Side by side: Windows 8-optimierte Apps und herk&amp;ouml;mmliche Anwendungen, wie Excel&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/1588.image_5F00_8.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/1104.image_5F00_thumb_5F00_3.png" width="593" height="333" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;touch-optimierter FileBrowser:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/3583.image_5F00_10.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/6758.image_5F00_thumb_5F00_4.png" width="593" height="328" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fazit:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Windows 8&lt;/em&gt;&lt;/strong&gt; wird f&amp;uuml;r Touch-Bedienung optimiert sein, l&amp;auml;&amp;szlig;t sich aber auch ganz &amp;ldquo;normal&amp;rdquo; bedienen. Per HMTL 5 k&amp;ouml;nnen Web Apps direkt mit den Live Tiles des&amp;nbsp;Startbildschirms kommunizieren, ohne dass diese im Vordergrund sein muss.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In diesem sehr ausf&amp;uuml;hrlichen und interessanten Video zeigt Microsoft VP Mike Angiulo auf der Computex 2011 &lt;a href="http://www.youtube.com/v/7MnEndww2YQ?version=3"&gt;die ersten Highlights von Windows 8&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Die &lt;a href="http://www.microsoft.com/presspass/features/2011/jun11/06-01corporatenews.aspx"&gt;offizielle Pressemitteilung findet sich hier&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;But that&amp;rsquo;s not all we have to say &amp;hellip;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Den n&amp;auml;chsten Termin unbedingt vormerken: &lt;strong&gt;13.- 16. September 2011&lt;/strong&gt;, die &lt;strong&gt;Konferenz f&amp;uuml;r Windows 8 [// Build Windows] &lt;/strong&gt;von Microsoft in Anaheim, Ca. Die &lt;a href="http://www.buildwindows.com/"&gt;Registrierung&lt;/a&gt; ist offen!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://www.buildwindows.com/"&gt;&lt;img style="background-image: none; margin: 5px 5px 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; border-width: 0px;" border="0" src="http://build.blob.core.windows.net/media/Default/home/sq_large.png" width="109" height="106" /&gt;&lt;/a&gt;&lt;a href="http://www.buildwindows.com/"&gt;&lt;img style="background-image: none; margin: 5px 5px 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; border-width: 0px;" border="0" alt="BUILD" src="http://www.buildwindows.com/themes/buildtheme/content/build_logo.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10170834" width="1" height="1"&gt;</description></item><item><title>Open XML ist schnell ! - Immer?</title><link>http://blogs.msdn.com/b/jensha/archive/2011/05/26/open-xml-ist-schnell-immer.aspx</link><pubDate>Thu, 26 May 2011 14:03:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10168662</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10168662</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/05/26/open-xml-ist-schnell-immer.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Ich habe in der Vergangenheit einige Artikel, Samples und WebCasts zum Thema Open XML bereitgestellt. Jetzt tauchte die Frage – oder vielmehr die Beobachtung – auf, dass das Einfügen von 50.000 Datensätzen á 10 Werten einige Stunden benötige. Dabei soll doch Open XML so schnell sein. Wie paßt das zusammen? &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Es kommt natürlich auf den Source Code an &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-10-metablogapi/7651.wlEmoticon_2D00_winkingsmile_5F00_2.png"&gt;. Wie immer. Der in den Beispielen gezeigte Code war gedacht zum Einfügen einzelner Zellen in bestehende Tabellen. Dabei wurde Rücksicht auf viele Fälle genommen:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;1. Die Zeile/Zelle existiert schon oder auch nicht&lt;br&gt;&lt;/font&gt;&lt;font size="2" face="Tahoma"&gt;2. Es gibt vor der Zeile/Zelle oder danach weitere Zeilen/Zellen&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Demensprechend verändert sich die Art und Weise Wie und vor allem Wo die Zelle bzw. Zeile eingefügt werden muss. Ich habe den Fall nachgestellt und mit dem gezeigten Beispiel 50.000 Datensätzen geschrieben. Das dauerte &lt;strong&gt;knapp 27 Minuten&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Danach habe ich den Code umgeschrieben. Wenn so viele Datensätzen nacheinander geschrieben werden, dann kann man davon ausgehen (oder zumindest sollte man diese Voraussetzung schaffen), dass diese Schreibvorgänge in einen leeren Bereich fallen, also erstens in der zu schreibenden Zeile noch nichts steht und es zweitens keine Zeilen nach diesem Bereich gibt, die Daten enthalten. Ein entsprechendes Template vorausgesetzt, kann jetzt ohne jegliche Prüfungen geschrieben werden. Und das spart richtig Zeit. Mit diesem Code:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;SheetData sd = &lt;b&gt;new&lt;/b&gt; SheetData();&lt;br&gt;ws.AppendChild(sd);&lt;br&gt;&lt;b&gt;char&lt;/b&gt; c;&lt;br&gt;Row r = &lt;b&gt;new&lt;/b&gt; Row();&lt;br&gt;&lt;b&gt;for&lt;/b&gt; (&lt;b&gt;uint&lt;/b&gt; i = 1; i &amp;lt; 50000; i++ )&lt;br&gt;{&lt;br&gt;&amp;nbsp; r.RowIndex = i;&lt;br&gt;&lt;b&gt;&amp;nbsp; for&lt;/b&gt; (&lt;b&gt;int&lt;/b&gt; si = 65; si &amp;lt; 75; si++)&lt;br&gt;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c = Convert.ToChar(si);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string cellRef = c.ToString() + i.ToString();&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; r.AppendChild(CreateCellWithInlineString(cellRef, "Microsoft DPE Test"));&lt;br&gt;&amp;nbsp; }&lt;br&gt;&amp;nbsp; sd.AppendChild(r);&lt;br&gt;&amp;nbsp; r = &lt;b&gt;new&lt;/b&gt; Row();&lt;br&gt;}&lt;br&gt;ws.Save(partWS);&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;habe ich die Zeit auf &lt;strong&gt;knapp 15 Sekunden&lt;/strong&gt; gedrückt. Das sind gerade mal 0,9% der vorher benötigten Zeit.&lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Es kommt also immer darauf an, welchen Zweck der eingesetzte Code erfüllen soll und es lohnt sich, für verschiedene Einsatzgebiete angepaßte Voraussetzungen zu schaffen.&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10168662" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/-NET+Dev+mit+Office/">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Open+XML/">Open XML</category></item><item><title>Using WPF and Silverlight to fight Cancer :: eBay Auction</title><link>http://blogs.msdn.com/b/jensha/archive/2011/03/18/using-wpf-and-silverlight-to-fight-cancer-ebay-auction.aspx</link><pubDate>Fri, 18 Mar 2011 09:31:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10142967</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10142967</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/03/18/using-wpf-and-silverlight-to-fight-cancer-ebay-auction.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Gregor Biswanger (MVP für Client App Dev, Solution Architect &amp;amp; Silverlight Experte) hat seit gestern Nachmittag eine Aktion auf seinem Blog unter dem Titel „WPF 4 und Silverlight 4 gegen Krebs!“ gestartet. Bei seinem letzten Besuch in Redmond hatte er seine DVD von den WPF-, Silverlight- und Expression Blend-Produktteams signieren lassen. Diese signierte DVD wird auf eBay versteigert und der Erlös geht direkt an die Deutsche Krebshilfe e.V.. Weitere Informationen auf seinem Blog unter: &lt;/font&gt;&lt;a href="http://www.dotnet-blog.net/post/2011/03/15/WPF-4-und-Silverlight-4-gegen-Krebs!.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;http://www.dotnet-blog.net/post/2011/03/15/WPF-4-und-Silverlight-4-gegen-Krebs!.aspx&lt;/font&gt;&lt;/a&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;strong&gt;Also dann, wer helfen kann und will, bitte mitbieten.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10142967" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Off_2D00_Topic+Gedanken/">Off-Topic Gedanken</category></item><item><title>Visual Studio LightSwitch und Team Foundation Server erleben</title><link>http://blogs.msdn.com/b/jensha/archive/2011/03/16/visual-studio-lightswitch-und-team-foundation-server-erleben.aspx</link><pubDate>Wed, 16 Mar 2011 15:04:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10142072</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10142072</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/03/16/visual-studio-lightswitch-und-team-foundation-server-erleben.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Ab 21. März, jeweils ab 15 Uhr, begrüßt Sie Uwe Baumann auf der &lt;/font&gt; &lt;blockquote&gt; &lt;p&gt;&lt;b&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://www.microsoft.com/germany/visualstudio/events/rad-roadshow.aspx"&gt;RAPID APPLICATION DEVELOPMENT ROADSHOW 2011&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Hier können Sie &lt;a href="http://www.microsoft.com/germany/visualstudio/products/lightswitch/default.aspx"&gt;Visual Studio LightSwitch&lt;/a&gt; 2011 (Beta), Team Foundation Server 2010 und Windows Azure live erleben. Sprecher sind u.a. &lt;a href="http://blogs.msdn.com/b/cbinder/"&gt;Christian Binder&lt;/a&gt; und &lt;a href="http://blogs.technet.com/b/bernhard_frank/"&gt;Bernhard Frank&lt;/a&gt;.&lt;/font&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/germany/visualstudio/events/rad-roadshow.aspx"&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="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/8078.image_5F00_3.png" width="736" height="257" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10142072" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Events/">Events</category></item><item><title>Microsoft TechSummit Cloud – die Roadshow für Developer &amp; IT Professionals</title><link>http://blogs.msdn.com/b/jensha/archive/2011/03/16/microsoft-techsummit-cloud-die-roadshow-f-252-r-developer-amp-it-professionals.aspx</link><pubDate>Wed, 16 Mar 2011 08:27:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10141894</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10141894</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/03/16/microsoft-techsummit-cloud-die-roadshow-f-252-r-developer-amp-it-professionals.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;“CLOUD Computing” ist wohl das Buzzword des Jahres. Aber was steckt wirklich dahinter? Macht das Sinn für mich? Welche Dienste gibt es? Was ist der Unterschied zwischen SaaS, PaaS, IaaS und was hat es mit Public und Private Cloud auf sich? Ist das Ganze eigentlich sicher? Muss ich als Entwickler oder Administrator alles neu lernen? Und was hat Microsoft eigentlich mit Cloud zu tun? &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Antworten hierzu gibt es auf unserer Roadshow &lt;/font&gt;&lt;a href="http://www.techday.ms/techsummitcloud/default.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;Microsoft TechSummit Cloud&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Tahoma"&gt;.&lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Vom 28. März bis zum 8. April 2011 touren Experten von Microsoft TechNet und MSDN durch sechs deutsche Metropolen um &lt;/font&gt;&lt;a href="http://www.techday.ms/techsummitcloud/agenda.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;Best Practices und technische Hintergründe&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Tahoma"&gt; zu den neuesten Microsoft Cloud-Technologien zu vermitteln und Anwenderfragen zu beantworten. &lt;br /&gt;Wir geben einen Überblick über die Microsoft Cloud, stellen für Administratoren, Entwickler und IT-Manager die neuesten Produkte und Technologien vor und zeigen Ihnen, wie Sie Cloud Services in Ihre bestehende Infrastruktur integrieren und Ihre Software an die Cloud anpassen bzw. in der Cloud bereitstellen können.&lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Für IT-Professionals und Administratoren dürften besonders die Vorträge "Windows InTune" (&lt;/font&gt;&lt;a href="http://blogs.technet.com/b/ralfschnell/"&gt;&lt;font size="2" face="Tahoma"&gt;Ralf Schnell&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Tahoma"&gt;), "Office 365 für Administratoren" (&lt;/font&gt;&lt;a href="http://blogs.technet.com/b/steffenk/"&gt;&lt;font size="2" face="Tahoma"&gt;Steffen Krause&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Tahoma"&gt;, &lt;/font&gt;&lt;a href="http://blogs.technet.com/b/dmelanchthon/"&gt;&lt;font size="2" face="Tahoma"&gt;Daniel Melanchthon&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Tahoma"&gt;) oder "Private Cloud selber aufbauen" (&lt;/font&gt;&lt;a href="http://blogs.technet.com/b/frankoch/"&gt;&lt;font size="2" face="Tahoma"&gt;Frank Koch&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Tahoma"&gt;) interessant sein. &lt;br /&gt;Relevant für Entwickler sind u.a. Vorträge zur "Migration von Anwendungen in die Cloud" (&lt;/font&gt;&lt;a href="http://blogs.msdn.com/b/dparys/"&gt;&lt;font size="2" face="Tahoma"&gt;Dariusz Parys&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Tahoma"&gt;), zur "Entwicklung von SaaS Lösungen auf Basis der Windows Azure Platform" (&lt;/font&gt;&lt;a href="http://blogs.msdn.com/b/patricb/"&gt;&lt;font size="2" face="Tahoma"&gt;Patric Boscolo&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Tahoma"&gt;) und zu dem "Betrieb und Entwicklung mit der Microsoft Cloud" (&lt;a href="http://blogs.msdn.com/b/hsirtl/"&gt;Holger Sirtl&lt;/a&gt;&lt;/font&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&lt;font size="2" face="Tahoma"&gt;).&lt;/font&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10141894" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/ISV+News+/">ISV News </category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Events/">Events</category></item><item><title>Neue WebCasts zum Open XML SDK 2.0</title><link>http://blogs.msdn.com/b/jensha/archive/2011/03/14/neue-webcasts-zum-open-xml-sdk-2-0.aspx</link><pubDate>Mon, 14 Mar 2011 13:30:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10140699</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10140699</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/03/14/neue-webcasts-zum-open-xml-sdk-2-0.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Calibri"&gt;Im Februar habe ich mir mal die Zeit genommen, ein paar der Beispiele und Ideen aus meinem Blog in Video-Tutorial umzusetzen. Herausgekommen sind diese 4 WebCasts:&lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Calibri"&gt;Dateimanipulation mit den Open XML SDK 2.0-Excel-Dateien (Teil 1 von 4) - &lt;/font&gt;&lt;a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032480090"&gt;&lt;font size="2" face="Calibri"&gt;Benannte Bereiche in Excel: Anlegen und Auslesen von Named Ranges&lt;/font&gt;&lt;/a&gt; &lt;p&gt;&lt;font size="2" face="Calibri"&gt;Dateimanipulation mit den Open XML SDK 2.0-Excel-Dateien (Teil 2 von 4) - &lt;/font&gt;&lt;a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032480091"&gt;&lt;font size="2" face="Calibri"&gt;Excel-Dateien erzeugen, Zellen und Zeilen in Excel-Tabellen anlegen und einfügen&lt;/font&gt;&lt;/a&gt; &lt;p&gt;&lt;font size="2" face="Calibri"&gt;Dateimanipulation mit den Open XML SDK 2.0-Excel-Dateien (Teil 3 von 4) - &lt;/font&gt;&lt;a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032480482"&gt;&lt;font size="2" face="Calibri"&gt;Die Handhabung von Shared Strings&lt;/font&gt;&lt;/a&gt; &lt;p&gt;&lt;font size="2" face="Calibri"&gt;Dateimanipulation mit den Open XML SDK 2.0-Excel-Dateien (Teil 4 von 4) - &lt;/font&gt;&lt;a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032480483"&gt;&lt;font size="2" face="Calibri"&gt;Formatvorlagen für Excel: Der Umgang mit StyleSheets&lt;/font&gt;&lt;/a&gt; &lt;p&gt;&lt;font size="2" face="Calibri"&gt;&lt;/font&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10140699" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/-NET+Dev+mit+Office/">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/OpenXML/">OpenXML</category></item><item><title>Beherrsche Deine Maschine und fliege nach Las Vegas…</title><link>http://blogs.msdn.com/b/jensha/archive/2011/02/08/beherrsche-deine-maschine-und-fliege-nach-las-vegas.aspx</link><pubDate>Tue, 08 Feb 2011 09:00:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10126085</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10126085</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/02/08/beherrsche-deine-maschine-und-fliege-nach-las-vegas.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;em&gt;&lt;strong&gt;An alle Windows 7 Maschinisten und solche die es werden wollen. &lt;/strong&gt;&lt;/em&gt;&lt;/font&gt; &lt;p&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;a href="http://www.windows7.de/maschine"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="right" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/6175.image_5F00_3.png" width="354" height="267" /&gt;&lt;/a&gt;Der Auftrag&lt;/strong&gt; &lt;/font&gt;&lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Du bist der Maschinist und nur du kennst die Maschine wirklich. Welche Funktion suchst du in deinem System vergeblich? Die Mäusejagd, das Schneetreiben oder etwas ganz Anderes? Stell dich der Herausforderung und baue deine eigene verrückte Wunsch-Anwendung. Dabei sollte mindestens eine der vielen neuen Windows 7 Funktionen verwendet werden. Lade dir dein Werkzeug kostenlos herunter und zeig wie kreativ du bist. Wie dein Windows 7 aussehen soll – das kannst du jetzt selbst bestimmen. &lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;strong&gt;Die Anforderungen:&lt;/strong&gt; &lt;br /&gt;&lt;/font&gt; &lt;ul&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Programmiert für Windows 7 &lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Verwendung einer Version von Visual Studio 2010 &lt;/font&gt; &lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;.NET Framework oder Visual C++ basierend &lt;/font&gt; &lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Verwendung von Windows 7 Funktionen &lt;/font&gt; &lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Möglichst wenig Zeilen (gibt Pluspunkte) &lt;/font&gt; &lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Sämtliche Bestandteile (Bibliotheken, Bilder, etc.) müssen mit eingereicht werden &lt;/font&gt; &lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Der Teilnehmer muss die Software selber erstellt haben und sämtliche Rechte an allen eingebundenen Bestandteilen besitzen.&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://www.windows7.de/maschine"&gt;Weitere Informationen und Teilnahmebedingungen&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Der Hauptgewinn (3x) : &lt;/font&gt;&lt;font size="2" face="Tahoma"&gt;Großer Las Vegas Gambling-Trip mit Besuch der MIX und Helikopterflug. &lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Dieser Trip besteht aus: &lt;/font&gt; &lt;ul&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Flug nach Las Vegas inkl. Flughafentransfer per Limousine&lt;/font&gt; &lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Besuch der MIX 2011, der Microsoft-Konferenz für Web-Entwickler &lt;/font&gt; &lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;6 Übernachtungen im Mandalay Bay Hotel&lt;/font&gt; &lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;300 US$ in Gambling Chips zum Verzocken&lt;/font&gt; &lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Helikopterflug zum Grand Canyon inkl. Transfer&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Also dann, ran an die Tastatur….&lt;/font&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10126085" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Contest/">Contest</category></item><item><title>Testing Leadership Award 2011</title><link>http://blogs.msdn.com/b/jensha/archive/2011/02/04/testing-leadership-award-2011.aspx</link><pubDate>Fri, 04 Feb 2011 16:08:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10124900</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10124900</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/02/04/testing-leadership-award-2011.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;&lt;font size="2" face="Tahoma"&gt;Softwaretester und -entwickler: Machen Sie mit beim Testing Leadership Award 2011&lt;/font&gt;&lt;/b&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;img style="margin: 0px 20px 20px 0px; display: inline; float: left" alt="quality deserves recognition" align="left" src="http://www.bqi-research.com/includes/user/images/layout/banner-slogan.gif" width="258" height="123" /&gt;Unbestritten, IT-Systeme werden immer komplexer und sind damit anfälliger für Softwarefehler. Die Folgen sind Schäden in wirtschaftlicher Hinsicht, aber auch unzufriedene Kunden. &lt;/font&gt;&lt;a href="http://www.bqi-research.com/de-user-AwardRegistration-index-Testing+Leadership+Award.html?param1=Testing+Leadership+Award"&gt;&lt;font size="2" face="Tahoma"&gt;Der Testing Leadership Award&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Tahoma"&gt; zeigt Ihren Kunden, dass die von Ihnen getestete Software den höchsten Ansprüchen an Bedienungskomfort, Qualität und Zuverlässigkeit entspricht.&lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die BQI Leadership Awards sind Teil eines internationalen Award-Programms, das den Erfolg von Unternehmen bei Innovationen, Produkten oder Dienstleistungen würdigt und auszeichnet. Das BQI zeichnet Unternehmen aus, die in anerkannter Weise besondere Leistungen in den Bereichen Produktentwicklung, Innovation, Geschäftsprozesse oder Management erbracht haben.&lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Mit der Auszeichnung Leadership Award gewinnen Sie ein wertvolles Marketinginstrument, um Ihre Produkte und Dienstleistungen noch erfolgreicher am Markt zu positionieren.&lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Melden Sie sich jetzt zum Testing Leadership Award 2011 an. &lt;b&gt;Meldeschluss ist 31.März 2011&lt;/b&gt;. Direkt zur Anmeldung: &lt;/font&gt;&lt;a href="http://www.bqi-research.com/de-user-AwardRegistration-index-Testing+Leadership+Award.html?param1=Testing+Leadership+Award"&gt;&lt;font size="2" face="Tahoma"&gt;http://www.bqi-research.com/de-user-AwardRegistration-index-Testing+Leadership+Award.html?param1=Testing+Leadership+Award&lt;/font&gt;&lt;/a&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/7608.clip_5F00_image003_5F00_2.jpg"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/5633.clip_5F00_image003_5F00_2.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="clip_image003" border="0" alt="clip_image003" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/0486.clip_5F00_image003_5F00_thumb.jpg" width="462" height="60" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/a&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10124900" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/ISV+News+/">ISV News </category></item><item><title>Wer braucht keine Code Samples?</title><link>http://blogs.msdn.com/b/jensha/archive/2011/01/10/wer-braucht-keine-code-samples.aspx</link><pubDate>Mon, 10 Jan 2011 14:40:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10113698</guid><dc:creator>jensha</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10113698</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/01/10/wer-braucht-keine-code-samples.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Code-Beispiele sind für mich meist mehr wert als eine ausführliche Dokumentation. Nichts gegen Dokumentationen. Im Gegenteil. Wenn diese gut und aussagekräftig sind und natürlich Code Samples enthalten. Leider sind die kleinen Snippets oftmals viel zu kurz und aus dem Zusammenhang gerissen. Dem kann man jetzt etwas entgegen stellen. Für alle, die es noch nicht gesehen haben, Microsoft hat einen &lt;a href="http://1code.codeplex.com/wikipage?title=All-In-One%20Code%20Framework%20Sample%20Catalog"&gt;All-In-One Code Framework Sample Catalog&lt;/a&gt; veröffentlicht mit folgenden Inhalten:&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=ASP.NET"&gt;&lt;font size="2" face="Tahoma"&gt;ASP.NET Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=Silverlight"&gt;&lt;font size="2" face="Tahoma"&gt;Silverlight Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=Azure"&gt;&lt;font size="2" face="Tahoma"&gt;Windows Azure Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=WPF"&gt;&lt;font size="2" face="Tahoma"&gt;WPF Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=WinForms"&gt;&lt;font size="2" face="Tahoma"&gt;Windows Forms Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=Win7"&gt;&lt;font size="2" face="Tahoma"&gt;Windows 7 Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=Data"&gt;&lt;font size="2" face="Tahoma"&gt;Data Platform Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=Office"&gt;&lt;font size="2" face="Tahoma"&gt;Office Development Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=WF"&gt;&lt;font size="2" face="Tahoma"&gt;Windows Workflow Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=Library"&gt;&lt;font size="2" face="Tahoma"&gt;Interop and Fusion Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=Winbase"&gt;&lt;font size="2" face="Tahoma"&gt;Windows Base and .NET General Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=WindowsUI"&gt;&lt;font size="2" face="Tahoma"&gt;Windows UI Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=Security"&gt;&lt;font size="2" face="Tahoma"&gt;Security Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=WinShell"&gt;&lt;font size="2" face="Tahoma"&gt;Windows Shell Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=XML"&gt;&lt;font size="2" face="Tahoma"&gt;XML Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=COM"&gt;&lt;font size="2" face="Tahoma"&gt;COM Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=IRPC"&gt;&lt;font size="2" face="Tahoma"&gt;IPC and RPC Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=Diagnostics"&gt;&lt;font size="2" face="Tahoma"&gt;Diagnostics Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=VSX"&gt;&lt;font size="2" face="Tahoma"&gt;Visual Studio Extensibility Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=FileSys"&gt;&lt;font size="2" face="Tahoma"&gt;File System Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=IIS"&gt;&lt;font size="2" face="Tahoma"&gt;IIS Code Samples&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://1code.codeplex.com/wikipage?title=WinService"&gt;&lt;font size="2" face="Tahoma"&gt;Windows Service Code Samples&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10113698" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Real+Code/">Real Code</category></item><item><title>MSDN Bus mit Vorträgen on Tour</title><link>http://blogs.msdn.com/b/jensha/archive/2011/01/10/msdn-bus-mit-vortr-228-gen-on-tour.aspx</link><pubDate>Mon, 10 Jan 2011 12:15:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10113656</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10113656</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/01/10/msdn-bus-mit-vortr-228-gen-on-tour.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Der &lt;a href="http://www.msdn-on-tour.de/ablauf.aspx"&gt;MSDN on Tour-Bus&lt;/a&gt;&lt;/font&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&lt;font size="2" face="Tahoma"&gt; ist vom 26.01. bis zum 05.03.2011 quer durch Deutschland unterwegs. Der Tour-Bus ist ein rollendes Präsentationsstudio, in dem &lt;/font&gt;&lt;font size="2" face="Tahoma"&gt;ein breitgefächertes Vortragsangebot zu aktuellen Entwicklerthemen (zwei parallele oder ein gemeinsamer Vortrag) bereit steht. Der Eintritt ist frei.&lt;br /&gt;&lt;/font&gt; &lt;ul&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Man kann den Tour-Bus auch &lt;a href="http://www.msdn-on-tour.de/anmeldung_gruppe.aspx"&gt;in seine Stadt oder zu seiner Firma holen&lt;/a&gt;&lt;/font&gt;&lt;font size="2" face="Tahoma"&gt;! (&lt;/font&gt;&lt;font size="2" face="Tahoma"&gt;Themenwünsche werden nach Möglichkeit ebenfalls berücksichtigt)&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Lassen Sie sich &lt;a href="http://www.msdn-on-tour.de/anmeldung_einzel.aspx"&gt;benachrichtigen&lt;/a&gt; über die aktuelle Stationen des Busses&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Nehmen Sie an unseren &lt;/font&gt;&lt;a href="http://www.msdn-on-tour.de/Gewinnspiel.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;MSDN on Tour-Gewinnspielen&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Tahoma"&gt; online und vor Ort teil.&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Unser &lt;/font&gt;&lt;a href="http://www.msdn-on-tour.de/Charity.aspx"&gt;&lt;font size="2" face="Tahoma"&gt;Charity-Bonbon: Busbesitzer für einen Tag werden!&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;b&gt;&lt;font size="2" face="Tahoma"&gt;Alle weiterführende Informationen: &lt;/font&gt;&lt;/b&gt;&lt;a href="http://www.msdn-on-tour.de"&gt;&lt;b&gt;&lt;font size="2" face="Tahoma"&gt;http://www.msdn-on-tour.de&lt;/font&gt;&lt;/b&gt;&lt;/a&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/1777.MSDN-Bus_5F00_2.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="MSDN Bus" border="0" alt="MSDN Bus" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/1680.MSDN-Bus_5F00_thumb.jpg" width="500" height="235" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10113656" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Events/">Events</category></item><item><title>Open XML Dateien aufbauen und verändern (Teil 6)</title><link>http://blogs.msdn.com/b/jensha/archive/2011/01/10/open-xml-dateien-aufbauen-und-ver-228-ndern-teil-6.aspx</link><pubDate>Mon, 10 Jan 2011 11:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10113645</guid><dc:creator>jensha</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10113645</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/01/10/open-xml-dateien-aufbauen-und-ver-228-ndern-teil-6.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-family: Tahoma; font-size: x-small;"&gt;&lt;strong&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Zeichenketten zu bestehenden Dateien hinzuf&amp;uuml;gen&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Bisher haben wir uns nur mit dem Neuerzeugen von Arbeitsmappen besch&amp;auml;ftigt. Deshalb jetzt noch ein Blick hinter die Kulissen f&amp;uuml;r den Fall, dass die Datei schon existiert. &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Tahoma; font-size: x-small;"&gt;&lt;/span&gt;&lt;/b&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Tahoma; font-size: x-small;"&gt;&lt;/span&gt;&lt;/b&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Tahoma; font-size: x-small;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:43584a1b-ada4-47b6-b35b-f3fd3fe05a22" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px"&gt;
&lt;pre style="background-color: white; width: 639px; height: 462px; overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; AddSharedStringsToExistingWorksheet(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; FName, 
                                                 &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; sheetName, 
                                                 &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; cellRef, 
                                                 &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; sharedString)
{
   &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; (SpreadsheetDocument xlDoc &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; SpreadsheetDocument.Open(FName, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;))
   {
      &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Gibt es einen SharedStringTablePart?
         &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Nein ==&amp;gt; erzeugen
 
      &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Gibt es das Worksheet?
         &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Nein ==&amp;gt; erzeugen
 
      &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Gibt es die gesuchte Zeile?
         &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Nein ==&amp;gt; erzeugen
        
      &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Gibt es die gesuchte Zelle in der Zeile?
         &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Nein ==&amp;gt; erzeugen

      &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; String einf&amp;uuml;gen
 
      &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Dokument speichern&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;   }
}

&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Gibt es einen SharedStringTablePart?&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Wir k&amp;ouml;nnten jetzt nat&amp;uuml;rlich wieder mit Inline Strings arbeiten (und es spricht eigentlich nichts dagegen), aber wir wollen streng &amp;ldquo;by the book&amp;rdquo; vorgehen die Zeichenketten in die Shared Strings-Tabelle eintragen. Dazu muss zuerst einmal geschaut werden, ob diese &amp;uuml;berhaupt vorhanden ist. Wenn nicht, muss sie erzeugt werden. GetPartsOfType() liefert eine Sammlung aller gefundenen Parts eines bestimmten Typs. Da es nur einen geben kann, k&amp;ouml;nnen wir mit der Extension Method FirstOrDefault() die gew&amp;uuml;nschte Referenz erhalten. First() kann hier nicht verwendet werden, da nur FirstOrDefault() bei leerer Liste null liefert. In dem Fall m&amp;uuml;ssen wir den Part selbst erzeugen. &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:cff027b1-c061-4824-9f24-464580fc7c61" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px"&gt;
&lt;pre style="background-color: white; width: 639px; height: 104px; overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;SharedStringTablePart sstPart &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
   xlDoc.WorkbookPart.GetPartsOfType&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;SharedStringTablePart&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;().FirstOrDefault();
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sstPart &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)   
   sstPart &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; xlDoc.WorkbookPart.AddNewPart&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;SharedStringTablePart&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Gibt es das Worksheet?&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Zuerst m&amp;uuml;ssen wir den WorkbookPart holen, da dort die Referenzen auf die Worksheets gehalten werden. Daraus l&amp;auml;&amp;szlig;t sich &amp;uuml;ber Lambda Functions das Worksheet mit den gesuchten Namen ermitteln oder erzeugen, falls noch nicht vorhanden. &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:dfae9e25-1e4d-42d5-bc4d-062dd27391fd" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px"&gt;
&lt;pre style="background-color: white; width: 639px; height: 231px; overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;WorkbookPart wbPart &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; xlDoc.WorkbookPart;
Workbook wb &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; wbPart.Workbook;
Sheet sheet &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; wb.GetFirstChild&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Sheets&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;().Elements&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Sheet&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;()
                .Where(s &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; s.Name &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; sheetName).FirstOrDefault();

WorksheetPart wsPart;
Worksheet ws &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sheet &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; nicht da ==&amp;gt; erzeugen&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;{
   wsPart &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; InsertWorksheetPart(wbPart, tbWorksheetName.Text);
   ws &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Worksheet(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; SheetData());  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; worksheet.xml erzeugen&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;}
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Wenn es schon existiert, k&amp;ouml;nnten wir uns eigentlich zur&amp;uuml;cklehnen, da wir weiter ober ja schon das Sheet mit den entsprechenden Namen gefunden hatten. Weit gefehlt. Oben wird eine Referenz auf ein Sheet zur&amp;uuml;ckgegeben, wir brauchen aber die Referenz auf das Worksheet. Das ist ein kleiner, aber feiner Unterschied. &amp;Uuml;ber die ID des Sheets k&amp;ouml;nnen wir den WorksheetPart extrahieren (GetPartById) und von dort kommen wir an das Worksheet. &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:29c6151f-7a78-4887-a26a-2b60b92f8dfc" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px"&gt;
&lt;pre style="background-color: white; width: 639px; height: 123px; overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; es existiert&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;{
   &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; rId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; sheet.Id.Value;
   wsPart &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (WorksheetPart)xlDoc.WorkbookPart.GetPartById(rId); 
   ws &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; wsPart.Worksheet;  
}
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Aus dem Worksheet muss nun noch das Root Element der Tabelle geholt werden - da wir ja vorher nicht wissen k&amp;ouml;nnen, ob das Worksheet existiert. &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #9b00d3;"&gt;SheetData&lt;/span&gt; sd = ws.GetFirstChild&amp;lt;&lt;span style="color: #9b00d3;"&gt;SheetData&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Tahoma; font-size: x-small;"&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;
&lt;p&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Gibt es die gesuchte Zeile?&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Eine Excel-Tabelle ist zeilenweise aufgebaut. Unterhalb des SheetData Elements befinden sich die Tabellen-Zeilen im Markup. Also m&amp;uuml;ssen wir die mit dem vorgegebenen Zeilenindex finden oder erzeugen. Die Hilfsfunktion RemoveAllButNumbers ist eine eigene Extension Method, die aus einer Zelladresse (AB123) nur die Zeilenreferenz (123) zur&amp;uuml;ck liefert. &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:2edf1765-3ce7-4e80-a9ec-af0b493b6126" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px"&gt;
&lt;pre style="background-color: white; width: 469px; height: 144px; overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;UInt32 rowIndex &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (UInt32)cellRef.RemoveAllButNumbers();
Row row &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; sd.Elements&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Row&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;()
            .Where(r &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; r.RowIndex.Value &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; rowIndex) 
            .FirstOrDefault();
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (row &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
   row &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CreateNewRow(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ref&lt;/span&gt;&lt;span style="color: #000000;"&gt; sd, rowIndex);  
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Gibt es die gesuchte Zelle?&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;In etwa das Gleiche machen wir mit der Zelle innerhalb der eben gefundenen Zeile. &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:5e308a17-4504-4b2e-a6e3-f5d2b8a1a3b5" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px"&gt;
&lt;pre style="background-color: white; width: 469px; height: 127px; overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;Cell cell &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; row.Elements&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Cell&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;()
               .Where(c &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; c.CellReference &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; cellRef)
               .FirstOrDefault();
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (cell &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
   cell &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CreateNewCell(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ref&lt;/span&gt;&lt;span style="color: #000000;"&gt; row, cellRef);
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Zellwerte schreiben und speichern&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Zum Abschlu&amp;szlig; wird die Zeichenkette in der Shared Strings-Tabelle gespeichert bzw. - falls dort schon vorhanden - deren Index ermittelt und dieser in die ermittelte oder erzeugte Zelle eingetragen. (Die Routine zum Eintragen des Shared Strings wurde schon in Teil 2 beschrieben.) &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:888c9fc0-e2f3-4d35-a54b-0df9fda85350" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px"&gt;
&lt;pre style="background-color: white; width: 550px; height: 143px; overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;cell.DataType &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellValues.SharedString;
cell.CellReference &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; cellRef;
cell.CellValue &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellValue(InsertSharedStringItem(sharedString, sstPart).ToString());

ws.Save(wsPart);
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;So, wie man sieht, kann man sich auf nichts verlassen ;-) und muss st&amp;auml;ndig pr&amp;uuml;fen, ob bestimmte Teile schon vorhanden sind. Es wird in der Praxis wohl weitaus h&amp;auml;ufiger vorkommen, schon existierende Dateien abfragen oder &amp;auml;ndern zu m&amp;uuml;ssen als neue zu erzeugen. Nichtsdestotrotz lohnt sich ein Blick auch hinter diese Kulissen, um die Zusammenh&amp;auml;nge zu verstehen. So ein Dateiformat ist verdammt komplex und man wird als Einzelner wohl nie alles verstehen k&amp;ouml;nnen, was in einer Excel- oder Word-Datei so alles vor sich geht. Das Gute an der Sache ist, das man nie alles braucht, sondern einzelne Teilbereiche relativ gut von anderen abgetrennt sind. So kommt man dann Schritt f&amp;uuml;r Schritt voran. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Das Beispielprojekt kann &amp;uuml;brigens &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://cid-73b6fdcae60daf98.office.live.com/self.aspx/Public/Sample%20Project.zip"&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;hier&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt; heruntergeladen werden. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: tahoma,arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;[Fortsetzung folgt]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10113645" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/-NET+Dev+mit+Office/">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/OpenXML/">OpenXML</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Real+Code/">Real Code</category></item><item><title>Open XML Dateien aufbauen und verändern (Teil 5)</title><link>http://blogs.msdn.com/b/jensha/archive/2011/01/04/open-xml-dateien-aufbauen-und-ver-228-ndern-teil-5.aspx</link><pubDate>Tue, 04 Jan 2011 14:03:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10111449</guid><dc:creator>jensha</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10111449</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2011/01/04/open-xml-dateien-aufbauen-und-ver-228-ndern-teil-5.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;strong&gt;Stylesheets erzeugen und verwenden&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;So, ich hoffe, alle hatten ein einigermaßen geruhsames Weihnachtsfest und die Nachwirkungen des Silvesterparty sind überwunden.&lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Im letzten Teil haben wir bereits die Zusammenhänge aufgezeigt. Jetzt geht es weiter mit der Implementierung der Routine zum Erzeugen des Stylesheets. Wie schon mehrfach erwähnt muss das nicht immer getan werden. Verwendet werden kann auch ein Stylesheet aus einer vorhandenen Excel-Arbeitsmappe, sofern alle gewünschten Formatvorlagen dort definiert wurden.&lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Grob betrachtet gliedert sich die Routine in 7 Teile:&lt;/font&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:9D7513F9-C04C-4721-824A-2B34F0212519:639a405b-2303-4c96-9ef2-38f7a3f17790" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 448px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; StylesClass
{
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;internal&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; Stylesheet GenerateStylesXml()
  {
    Stylesheet ssh &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Stylesheet();
    
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Number Formats +++&lt;/span&gt;&lt;span style="color: #000000;"&gt;
 
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Font Information +++   &lt;/span&gt;&lt;span style="color: #000000;"&gt;

    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Fill Styles +++&lt;/span&gt;&lt;span style="color: #000000;"&gt;

    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Border Styles +++&lt;/span&gt;&lt;span style="color: #000000;"&gt;

    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Cell Style Formats +++&lt;/span&gt;&lt;span style="color: #000000;"&gt;

    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Cell Formats &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Master Formatting Records +++&lt;/span&gt;&lt;span style="color: #000000;"&gt;

    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Cell Styles +++&lt;/span&gt;&lt;span style="color: #000000;"&gt;

    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; ssh;
  }
}
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Zuerst müssen die &lt;strong&gt;Zahlenformate&lt;/strong&gt; definiert werden, die dann in der Zellformatierung und in Formatvorlagen verwendet werden. Darin wird eine ID verwendet, die jedes einzelne Format eindeutig identifiziert. Da Excel schon eingebaute Formate besitzt, müssen wir hinter deren ID starten. Die Werte von 0 bis 164 sind m.W. für interne Formate reserviert. Neben der ID ist der Formatcode erforderlich, den wir aus Excel selbst kennen.&lt;/font&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Mit Hilfe der Object Initializer kann der Code verkürzt werden.&lt;/font&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:9D7513F9-C04C-4721-824A-2B34F0212519:0820ac2c-860f-4ffe-a204-44dd11039dad" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 530px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Number Formats +++&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;uint&lt;/span&gt;&lt;span style="color: #000000;"&gt; NumFmtId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;165&lt;/span&gt;&lt;span style="color: #000000;"&gt;;  
NumberingFormats nfs &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; NumberingFormats();
NumberingFormat nf1 &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; NumberingFormat() 
  { NumberFormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; NumFmtId&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
    FormatCode &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;0&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; };
nfs.Append(nf1);
NumberingFormat nf2 &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; NumberingFormat() 
  { NumberFormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; NumFmtId&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
    FormatCode &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;#.##0,00 €;[Red]-#.##0,00 €&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; };
nfs.Append(nf2);
NumberingFormat nf3 &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; NumberingFormat() 
  { NumberFormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; NumFmtId&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
    FormatCode &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;0 \&amp;quot;km/h\&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; };
nfs.Append(nf3);
NumberingFormat nf4 &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; NumberingFormat() 
  { NumberFormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; NumFmtId&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
    FormatCode &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;dd.mm.yyyy&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; };
nfs.Append(nf4);
NumberingFormat nf5 &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; NumberingFormat() 
  { NumberFormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; NumFmtId, 
    FormatCode &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;dddd, dd. mmmm yyyy&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; };
nfs.Append(nf5);
nfs.Count &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;uint&lt;/span&gt;&lt;span style="color: #000000;"&gt;)nfs.ChildElements.Count;

ssh.Append(nfs);

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Nun folgen die &lt;strong&gt;Font-Informationen&lt;/strong&gt;. Da Fonts per Index referenziert werden, ist keine ID nötig. Wenn allerdings derselbe Font zusätzlich jeweils mit dem Schnitt kursiv bzw. fett benötigt wird, so sind 3 verschiedene Font-Einträge erforderlich.&lt;/font&gt;&lt;/p&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:9D7513F9-C04C-4721-824A-2B34F0212519:7055bf14-081c-406e-a053-b6a8ed0d4af4" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 458px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Font Information +++&lt;/span&gt;&lt;span style="color: #000000;"&gt;

Fonts fts &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Fonts();
Font ft &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Font() 
  { FontName &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; FontName() { Val &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Calibri&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; }, 
    FontSize &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; FontSize() { Val &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; 11D } };
fts.Append(ft);
ft &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Font() 
  { FontName &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; FontName() { Val &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Aharoni&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; }, 
    FontSize &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; FontSize() { Val &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; 18D } };
fts.Append(ft);
ft &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Font() 
  { FontName &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; FontName() { Val &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Bradley Hand ITC&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; }, 
    FontSize &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; FontSize() { Val &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; 20D }, 
    Bold &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Bold() };
fts.Append(ft);
ft &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Font() 
  { FontName &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; FontName() { Val &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Bernard MT Condensed&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; }, 
    FontSize &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; FontSize() { Val &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; 16D } };
fts.Append(ft);
fts.Count &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;uint&lt;/span&gt;&lt;span style="color: #000000;"&gt;)fts.ChildElements.Count;

ssh.Append(fts);

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die &lt;strong&gt;Füllmuster&lt;/strong&gt; der Zelle werden hier definiert und ebenfalls über den Index referenziert:&lt;/font&gt;&lt;/p&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:9D7513F9-C04C-4721-824A-2B34F0212519:e155fd2b-5eb5-4c66-a3f9-96cf8fbf23d0" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 351px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Fill Styles +++&lt;/span&gt;&lt;span style="color: #000000;"&gt;

Fills fis &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Fills();
Fill fi &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Fill() 
  { PatternFill &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; PatternFill() 
    { PatternType &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; PatternValues.None } 
  };
fis.Append(fi);
fi &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Fill() 
  { PatternFill &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; PatternFill() 
    { PatternType &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; PatternValues.LightGray } 
  };
fis.Append(fi);
fis.Count &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;uint&lt;/span&gt;&lt;span style="color: #000000;"&gt;)fis.ChildElements.Count;

ssh.Append(fis);

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000;"&gt;
 
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die &lt;strong&gt;Randeinstellungen&lt;/strong&gt; der Zelle sind hier nur gekürzt dargestellt:&lt;/font&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:9D7513F9-C04C-4721-824A-2B34F0212519:94e14143-ee71-4e11-b34e-d4df0c15df6e" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 411px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Border Styles +++&lt;/span&gt;&lt;span style="color: #000000;"&gt;

Borders bos &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Borders();
Border bo &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Border()
{
  …
};
bos.Append(bo);
bo &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Border()
{
  LeftBorder &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; LeftBorder() { Style &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; BorderStyleValues.Thin },
  RightBorder &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; RightBorder() { Style &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; BorderStyleValues.Thin },
  TopBorder &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; TopBorder() { Style &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; BorderStyleValues.Thin },
  BottomBorder &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; BottomBorder() { Style &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; BorderStyleValues.Thin }
};
bos.Append(bo);
bos.Count &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;uint&lt;/span&gt;&lt;span style="color: #000000;"&gt;)bos.ChildElements.Count;

ssh.Append(bos);

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Für die weiter unten mit Namen definierten eingebauten Formatvorlagen werden hier Standardeinstellungen definiert. Diese können jederzeit durch direkte Formatierung (Master Cell Records) überschrieben werden.&lt;/font&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:9D7513F9-C04C-4721-824A-2B34F0212519:9b1b462e-1a9e-4747-ab96-147343bb2e48" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 290px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Cell Style Formats +++&lt;/span&gt;&lt;span style="color: #000000;"&gt;

CellStyleFormats cstfs &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellStyleFormats();

CellFormat cfmt &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellFormat() 
  { NumberFormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
    FontId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
    FillId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
    BorderId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; };
cstfs.Append(cfmt);
cstfs.Count &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;uint&lt;/span&gt;&lt;span style="color: #000000;"&gt;)cstfs.ChildElements.Count;

ssh.Append(cstfs);

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;&lt;pre&gt;&lt;font size="2" face="Tahoma"&gt;Ein Beispiel aus einer Arbeitsmappe zeigt mögliche Definitionen:&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/6138.cellStyleXfs_5F00_2.png"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/5040.cellStyleXfs_5F00_2.png"&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="cellStyleXfs" border="0" alt="cellStyleXfs" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/5432.cellStyleXfs_5F00_thumb.png" width="642" height="216" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/a&gt;&lt;/pre&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: "&gt;&lt;font face="Tahoma"&gt;&lt;font style="font-size: 10pt"&gt;Bei den &lt;strong&gt;Master Cell Records&lt;/strong&gt; laufen alle Fäden zusammen. Jeder Zelle bezieht sich auf einen Index in dieser Tabelle. Hier werden die Abweichungen vom Standardformat „Normal“ definiert. Alles, was nicht definiert wurde, wird von „Normal“ übernommen. Über die FormatId wird auf die benannten Formatvorlagen verwiesen.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; mso-no-proof: yes"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="line-height: 12pt; font-family: ; mso-no-proof: yes; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: en-us; mso-ansi-language: en-us; mso-bidi-language: ar-sa" lang="EN-US"&gt;&lt;/span&gt;&lt;pre&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:439bf848-f7b7-4fb1-95ac-cc18e5646fb9" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 1049px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Cell Formats &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Master Formatting Records +++&lt;/span&gt;&lt;span style="color: #000000;"&gt;

CellFormats cfx &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellFormats();
CellFormat cf;
cf &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellFormat() 
  { NumberFormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; nf1.NumberFormatId, 
    FontId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; , 
    FormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; }; 
cfx.Append(cf);
cf &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellFormat() 
  { NumberFormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; nf1.NumberFormatId, 
    FontId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; , 
    FormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; }; 
cfx.Append(cf);
cf &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellFormat() 
  { NumberFormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; nf3.NumberFormatId, 
    FontId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt; , 
    FormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; }; 
cfx.Append(cf);
cf &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellFormat() 
  { NumberFormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; nf5.NumberFormatId, 
    FontId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
    BorderId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
    FillId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt; , 
    FormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; }; 
Alignment al &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Alignment() 
  { Horizontal &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; HorizontalAlignmentValues.Center };
cf.Append(al);
cfx.Append(cf);
cf &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellFormat() 
  { NumberFormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; nf1.NumberFormatId, 
    FontId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt; , 
    FormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; }; 
al &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Alignment() 
  { Horizontal &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; HorizontalAlignmentValues.Right };
cf.Append(al);
cfx.Append(cf);
cf &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellFormat() 
  { NumberFormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; nf1.NumberFormatId, 
    FontId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt; , 
    FormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; }; 
cfx.Append(cf);
cf &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellFormat() 
  { NumberFormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;12&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
    FontId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt; , 
    FormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; }; 
al &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Alignment() 
  { Horizontal &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; HorizontalAlignmentValues.Center };
cf.Append(al);

cfx.Append(cf);
cfx.Count &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;uint&lt;/span&gt;&lt;span style="color: #000000;"&gt;)cfx.ChildElements.Count;

ssh.Append(cfx);

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die &lt;strong&gt;Definition der Namen benannter Formatvorlagen&lt;/strong&gt; erfolgt hier. Im Anhang H der ISO/IEC 29500 Formatbeschreibung findet man eine Auflistung der vordefinierten Formate. Die BuildInID verweist darauf. Es muss zumindest die Vorlage „Normal“ definiert werden, da alle Zellen erst mal diese Formatvorlage erhalten.&lt;/font&gt;&lt;/p&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:9D7513F9-C04C-4721-824A-2B34F0212519:9c2b846f-bca0-46d4-a97b-1cb70dc40c8a" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 572px; height: 230px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&lt;span style="color: #000000;"&gt; +++ Add Cell Styles +++&lt;/span&gt;&lt;span style="color: #000000;"&gt;

CellStyles csts &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellStyles();
CellStyle cst &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellStyle() 
  { Name &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Normal&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, FormatId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, BuiltinId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; };
csts.Append(cst);
csts.Count &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;uint&lt;/span&gt;&lt;span style="color: #000000;"&gt;)csts.ChildElements.Count;

ssh.Append(csts);

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Ein Beispiel aus einer Arbeitsmappe zeigt mögliche verwendete Formatvorlagen:&lt;/font&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/2235.BuiltInStyles_5F00_2.png"&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="BuiltInStyles" border="0" alt="BuiltInStyles" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/0184.BuiltInStyles_5F00_thumb.png" width="559" height="228" /&gt;&lt;/a&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Der in Teil 1 schon einmal rudimentär aufgezeigte Code zum Erstellen der Zellinhalte sieht ausformuliert so aus:&lt;/font&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:626677fc-8d5a-47d9-982a-b5b48f9faac6" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 699px; height: 725px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; worksheet.xml erzeugen:&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;Worksheet ws &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Worksheet();
SheetData sd &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; SheetData();
ws.AppendChild(sd);

Row r1 &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Row();
r1.RowIndex &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;;

&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Create InlineString:&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;r1.AppendChild(CreateCellWithInlineString(&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;A1&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Der Zellwert als String&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;));

&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Create Number Entry:&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;r1.AppendChild(CreateCellWithNumber(&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;B1&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;42&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;));

&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Create Formula:&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;r1.AppendChild(CreateCellWithFormula(&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;C1&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;B1*5&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;));

&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Create SharedString:&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;r1.AppendChild(CreateCellWithSharedString(&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;D1&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Microsoft&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, partSharedStrings, &lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;));

Row r3 &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Row();
r3.RowIndex &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
r3.AppendChild(CreateCellWithSharedString(&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;A3&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Jens H&amp;#228;upel&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, partSharedStrings, &lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;));
r3.AppendChild(CreateCellWithSharedString(&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;B3&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Microsoft&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, partSharedStrings, &lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;));

Row r5 &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Row();
r5.RowIndex &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;;

&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Create Date Entry:&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;r5.AppendChild(CreateCellWithNumber(&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;A5&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;40536&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;));

&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Create Fraction:&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;r5.AppendChild(CreateCellWithNumber(&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;B5&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;2.75&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800080;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;));

sd.AppendChild(r1);
sd.AppendChild(r3);
sd.AppendChild(r5);
ws.Save(partWS);
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Daraus ergibt sich diese Tabelle in Excel. Man sieht die verschiedenen Formatierungenin Bezug auf Zeichensatz, Schriftschnitt und –größe sowie Ausrichtung.&lt;/font&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/1667.Result-Scaled_5F00_2.png"&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="Result Scaled" border="0" alt="Result Scaled" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/4478.Result-Scaled_5F00_thumb.png" width="752" height="320" /&gt;&lt;/a&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Aber halt, das ist eigentlich nicht das korrekte Ergebnis. Das sieht nämlich so aus:&lt;/font&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/4807.Result_5F00_2.png"&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="Result" border="0" alt="Result" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/2335.Result_5F00_thumb.png" width="456" height="278" /&gt;&lt;/a&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Hier wird eine Limitierung deutlich: Open XML ist zwar sehr gut geeignet, Daten aus Dateien zu extrahieren oder auch Inhalte zu verändern oder erzeugen, auf eine Sache hat Open XML aber keinen Einfluss: das Rendering. Dafür werden Informationen über Drucker- und Grafikengine benötigt. Letztendlich ist es möglich, z.B. die optimale Breite einer Zelle, ausgehend von einer gegebenen Schrift (incl. Größe, Schnitt und Skalierung) zu berechnen und auch per Open XML einzustellen. &lt;/font&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die exakte Definition, wie die Berechnung zu erfolgen hat, findet sich in Abschnitt 18.3.1.13 der Open XML Dokumentation.&lt;/font&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/2538.Column-width_5F00_2.png"&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="Column width" border="0" alt="Column width" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/1057.Column-width_5F00_thumb.png" width="640" height="378" /&gt;&lt;/a&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die Spaltenbreite kann man wiederum setzen, indem einzelne Spalten definiert und der Columns Collection hinzugefügt werden:&lt;/font&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:9D7513F9-C04C-4721-824A-2B34F0212519:eb4413fe-a2a0-4a63-8087-50d5db32e715" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 699px; height: 120px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;Columns cols &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Columns(
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Column() { Min &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, Max &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, Width &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;12&lt;/span&gt;&lt;span style="color: #000000;"&gt;, CustomWidth &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt; },
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Column() { Min &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, Max &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, Width &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;12&lt;/span&gt;&lt;span style="color: #000000;"&gt;, CustomWidth &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt; }
  );
ws.Append(cols);
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Ganz am Ende noch ein Blick in die Shared String Tabelle. Obwohl der Begriff „Microsoft“ zweimal verwendet wurde, erscheint er richtigerweise nur einmal als Shared String:&lt;/font&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/2742.SharedStrings_5F00_2.png"&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="SharedStrings" border="0" alt="SharedStrings" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/8508.SharedStrings_5F00_thumb.png" width="700" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;[Fortsetzung folgt]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10111449" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/-NET+Dev+mit+Office/">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/OpenXML/">OpenXML</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Real+Code/">Real Code</category></item><item><title>Open XML Dateien aufbauen und verändern (Teil 4)</title><link>http://blogs.msdn.com/b/jensha/archive/2010/12/22/open-xml-dateien-aufbauen-und-ver-228-ndern-teil-4.aspx</link><pubDate>Wed, 22 Dec 2010 15:51:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108176</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10108176</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2010/12/22/open-xml-dateien-aufbauen-und-ver-228-ndern-teil-4.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;strong&gt;Formatierte Zellen in Excel:&lt;/strong&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Um Zellen in Excel formatieren zu können, muss auf ein Stylesheet zurückgegriffen werden. Im Zellenmarkup wird lediglich ein Verweis auf den (Style-) Index des sog. Master Cell Style Records gesetzt, einer Stelle im Stylesheet, an der alle Fäden zusammen laufen und das Format der Zelle definiert wird.&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;font face="Consolas"&gt;&lt;b&gt;private&lt;/b&gt; Cell CreateCellWithNumber(&lt;b&gt;string&lt;/b&gt; cellRef, &lt;b&gt;string&lt;/b&gt; cellValue, &lt;b&gt;uint&lt;/b&gt; styleIndex)&lt;br /&gt;{&lt;br /&gt;Cell c = &lt;b&gt;new&lt;/b&gt; Cell();&lt;br /&gt;&amp;nbsp; c.DataType = CellValues.Number;&lt;br /&gt;&amp;nbsp; c.CellReference = cellRef;&lt;br /&gt;&amp;nbsp; &lt;strong&gt;&lt;font color="#0000ff"&gt;c.StyleIndex = styleIndex;&lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp; c.CellValue = &lt;b&gt;new&lt;/b&gt; CellValue(cellValue);&lt;br /&gt;&lt;b&gt;return&lt;/b&gt; c;&lt;br /&gt;}&lt;/font&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Das XML Markup der Zelle könnte danach so aussehen:&lt;/font&gt;&lt;pre&gt;&lt;font size="2" face="Consolas"&gt;&amp;lt;x:c r="B1" s="2" t="n"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;x:v&amp;gt;42&amp;lt;/x:v&amp;gt;&lt;br /&gt;&amp;lt;/x:c&amp;gt;&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Dieser Master Cell Style Record holt seine Daten aus anderen Bestandteilen des Stylesheets, wie den Abschnitten für Zahlenformate, Rahmen, Zellfüllmuster, Zeichensätze und Formatvorlagen. Die Formatvorlagen verweisen wiederum auf einen Definitionsabschnitt und enthalten Informationen über (in Excel) eingebaute Formate, die nicht explizit definiert werden müssen.&lt;/font&gt; 
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die Zusammenhänge sind im folgenden Diagramm zu erkennen:&lt;/font&gt; 
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/6406.Styles-Dependencies-full_5F00_2.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="Styles Dependencies full" border="0" alt="Styles Dependencies full" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/7651.Styles-Dependencies-full_5F00_thumb.png" width="657" height="378" /&gt;&lt;/a&gt; 
&lt;p&gt;&lt;b&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&lt;/b&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Wichtig ist, dass einige Beziehungen durch den Index des entsprechenden Eintrags und andere durch dessen ID referenziert werden. Zahlenformate (ebeneso wie Formatvorlagen) sind schon vordefiniert und im Anhang H der &lt;a href="http://www.ecma-international.org/publications/standards/Ecma-376.htm"&gt;Open XML Markup Definition&lt;/a&gt; erklärt. Ein Ausschnitt ist hier zu sehen:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="45"&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;40&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;#,##0.00;[Red](#,##0.00)&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="45"&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;45&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;mm:ss&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="45"&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;46&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;[h]:mm:ss&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="45"&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;47&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;mmss.0&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="45"&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;48&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;##0.0E+&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="45"&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;49&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;@&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Wenn man man eine befüllte Excel-Datei mit den Package Explorer (Open XML SDK 2.0 Productivity Tool), oder auch in Visual Studio öffnet, so sieht man diese Zusammenhänge:&lt;/font&gt; 
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/8228.Styles-und-Formats_5F00_4.png"&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="Styles und Formats" border="0" alt="Styles und Formats" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/8637.Styles-und-Formats_5F00_thumb_5F00_1.png" width="661" height="404" /&gt;&lt;/a&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Das ist nur rein Ausschnitt aus dem gesamten Bild. Mindestens müssen folgende Bestandteile implementiert werden:&lt;br /&gt;&lt;/font&gt;
&lt;ul&gt;
&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Zahlenformatedefinitionen (&amp;lt;numFmts …&amp;gt;)&lt;/font&gt; 
&lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Zeichensatzdeinitionen (&amp;lt;fonts …&amp;gt;)&lt;/font&gt; 
&lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Definition der Zellfüllungen (&amp;lt;fills …&amp;gt;)&lt;/font&gt; 
&lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Definition der Umrandungen (yborders …&amp;gt;)&lt;/font&gt; 
&lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Die Zellenformate (&amp;lt;cellXfs…&amp;gt;)&lt;/font&gt; 
&lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Die Formatvorlagen (cellStyles …&amp;gt;) … mind. „Normal“&lt;/font&gt; 
&lt;/li&gt;&lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Die Definition der Formatvorlagen (&amp;lt;cellStyleXfs…&amp;gt;)&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Wie das dann implementiert wird, erfahren Sie im nächsten Teil.&lt;/font&gt; 
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;[Fortsetzung folgt]&lt;/font&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108176" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/-NET+Dev+mit+Office/">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/OpenXML/">OpenXML</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Real+Code/">Real Code</category></item><item><title>Open XML Dateien aufbauen und verändern (Teil 3)</title><link>http://blogs.msdn.com/b/jensha/archive/2010/12/17/open-xml-dateien-aufbauen-und-ver-228-ndern-teil-3.aspx</link><pubDate>Fri, 17 Dec 2010 12:50:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10106445</guid><dc:creator>jensha</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10106445</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2010/12/17/open-xml-dateien-aufbauen-und-ver-228-ndern-teil-3.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;strong&gt;Zeichenketten in existierende Excel-Dateien eintragen&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;In den ersten beiden Teilen haben wir das jeweilige Open XML Dokument neu erzeugt. Während man sich dabei darauf verlassen kann, dass die zu erzeugenden Teile noch nicht vorhanden sind, hat man es beim Einfügen in bestehende Dokumente schwerer. Es muss jedes Mal überprüft werden, ob eine Komponente nicht evtl. doch schon vorhanden ist, da jeder Bezeichner bzw. jede ID nur genau einmal vorkommen darf.&lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Es soll ein String in eine Zelle eingetragen werden. Der String wird als Shared String eingebettet. Als Übergabeparameter benötigen wir:&lt;br /&gt;&lt;/font&gt; &lt;ul&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Name der Arbeitsmappen mit Pfadangabe&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Name der Tabelle&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Adresse der Zelle, z.B. “A1”&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font size="2" face="Tahoma"&gt;Die einzufügende Zeichenkette&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Ausgehend von diesen Parametern könnten Tabelle, Zeile bzw. Zelle noch nicht vorhanden sein. Um das Erzeugen werden wir uns hier kümmern. Die Grundaufgabe ist allerdings das Einfügen der Zeichenkette in die Zelle.&lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Der Rumpf der Prozedur wäre erst mal folgender. Wir gehen nun Schritt für Schritt durch die Entscheidungen.&lt;/font&gt; &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&amp;nbsp;&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:9D7513F9-C04C-4721-824A-2B34F0212519:7ae19649-f1da-4bac-bbee-8b057a1c8850" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 145px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; AddSharedStringsToExistingWorksheet(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; FName, 
   &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; sheetName, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; cellRef, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; sharedString)
{
   &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; (SpreadsheetDocument xlDoc &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; SpreadsheetDocument.Open(FName, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;))
   {
     …
   }
}
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Das Erste, was beim Einfügen eines Shared Strings gemacht werden muss ist die Prüfung, ob die Shared Strings-Tabelle existiert, also ob ein SharedStringTablePart vorhanden ist. Wenn nicht, wird sie erzeugt.&lt;/font&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&amp;nbsp;&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:9D7513F9-C04C-4721-824A-2B34F0212519:35365e47-f862-476b-a64a-b01ee1917902" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 86px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;SharedStringTablePart sstPart &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
   xlDoc.WorkbookPart.GetPartsOfType&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;SharedStringTablePart&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;().FirstOrDefault();
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sstPart &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)   
   sstPart &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; xlDoc.WorkbookPart.AddNewPart&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;SharedStringTablePart&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Dann schauen wir, ob ein Worksheet mit dem vorgegebenen Namen zu finden ist. Dazu müssen wir im Workbook.xml nachschauen, da dort alle enthaltenen Worksheets gelistet sind. Das Markup der workbook.xml kann man einer vorher erstellten Excel-Datei entnehmen:&lt;/font&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:9D7513F9-C04C-4721-824A-2B34F0212519:5af8a593-c1fc-4151-953c-1cf1a78422b1" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 86px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;sheets&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;sheet &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;Bilanzen 1998&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; sheetId&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; r:id&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;rId1&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;sheet &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;Zusammenfassung&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; sheetId&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; r:id&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;rId2&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;sheet &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;Externe Ressourcen&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; sheetId&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; r:id&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;rId3&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;sheets&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;(Die angegebene Relationship ID (rIdx) kann jeder eindeutige String sein, z.B. auch eine GUID. Excel selbst vergibt durchnummerierte IDs, die sehr einfach zu lesen aber für uns schwierig zu verwalten sind. Das Open XML SDK verwendet deshalb auch GUID-Strukturen.)&lt;/font&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Aus diesem Sheet-Element wird über die ID der dazugehörige WorkbookPart ermittelt (GetPartById). Dieser Part beherbergt dann auch das entsprechende Worksheet.&lt;br /&gt;Wenn kein Sheet-Element in der Workbook.xml gefunden wurde, wird ein WorksheetPart eingefügt, das XML Document mit dem Root-Element Worksheet erzeugt und das SheetData-Element angehängt. &lt;/font&gt;&lt;/p&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:9D7513F9-C04C-4721-824A-2B34F0212519:56596e9c-84f7-4772-9cc5-ca8a98abe97b" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 389px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;WorkbookPart wbPart &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; xlDoc.WorkbookPart;
Workbook wb &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; wbPart.Workbook;
Sheet sheet &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (Sheet)wb.GetFirstChild&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Sheets&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;().Elements&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Sheet&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;()
   .Where(s &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; s.Name &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; sheetName).FirstOrDefault();
 
WorksheetPart wsPart;
Worksheet ws &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sheet &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)  
{
  wsPart &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; InsertWorksheetPart(wbPart, tbWorksheetName.Text);
  ws &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Worksheet(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; SheetData());  
}
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;  
{
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; rId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; sheet.Id.Value;
  wsPart &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (WorksheetPart)xlDoc.WorkbookPart.GetPartById(rId); 
  ws &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; wsPart.Worksheet;  
}

SheetData sd &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; ws.GetFirstChild&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;SheetData&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Wichtig ist es zu wissen, dass das o.g. Sheet Element nichts mit dem worksheet Element zu tun hat. Ersteres bezieht sich auf die Auflistung der in der Arbeitsmappe enthaltenen Tabellen (also in der workbook.xml) und letzteres ist die Definition des Inhalts dieser Tabellen (worksheet.xml).&lt;/font&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Jetzt haben wir das SheetData-Element, also die Stelle, an der die Tabellenzeilen aufgelistet sind. Die Zelladresse wird hier im Format „A1“ übergeben. Um an die Zeilennummer zu kommen, habe ich eine kleine Extensions Class geschrieben, die die Methode RemoveAllButNumbers für den Typ String bereit stellt.&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Consolas"&gt;UInt32Value rowIndex = (UInt32Value)cellRef.RemoveAllButNumbers();&lt;/font&gt;&lt;/p&gt;&lt;font size="2" face="Tahoma"&gt;
&lt;p&gt;&lt;br /&gt;Mit dem so gewonnenen RowIndex wird die Referenz auf die Zeile geholt. Sollte die nicht existieren, erzeugen wir eine neue Zeile. Dabei ist unbedingt zu beachten, dass die Reihenfolge stimmt (aufsteigend). Die Funktion CreateRow weiter unten erledigt das. &lt;/p&gt;&lt;/font&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:9D7513F9-C04C-4721-824A-2B34F0212519:54a8035b-2a43-408b-aa98-f4bca9fdc94a" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 103px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;IEnumerable&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Row&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; rows &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; sd.Elements&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Row&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;()
   .Where(r &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; r.RowIndex.Value &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; rowIndex);
Row row &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; rows.FirstOrDefault();
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (row &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
  row &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CreateNewRow(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ref&lt;/span&gt;&lt;span style="color: #000000;"&gt; sd, rowIndex);  
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Dasselbe gilt für die Zelle.&lt;/font&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:9D7513F9-C04C-4721-824A-2B34F0212519:d01b9130-5f3d-427b-8970-f58997f23e26" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 91px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;Cell cell &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; row.Elements&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Cell&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;()
   .Where(c &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; c.CellReference &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; cellRef).FirstOrDefault();
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (cell &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
  cell &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CreateNewCell(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ref&lt;/span&gt;&lt;span style="color: #000000;"&gt; row, cellRef);
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Am Ende wird nur noch der Shared String mit der Zelle verlinkt und das Worksheet gespeichert. Die Funktion dafür wurde schon in Teil 2 beschrieben.&lt;/font&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:9D7513F9-C04C-4721-824A-2B34F0212519:c7ffdee8-1c1f-4809-a217-cb7e3748e492" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 141px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;cell.DataType &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellValues.SharedString;
cell.CellReference &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; cellRef;
cell.CellValue &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellValue(
   InsertSharedStringItem(sharedString, sstPart).ToString());
 
ws.Save(wsPart);
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Hilfsfunktionen zum Erzeugen einer neuen Zeile bzw. Zelle. Beide müssen in aufsteigender Reihenfolge im Markup erscheinen.&lt;/font&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:9D7513F9-C04C-4721-824A-2B34F0212519:7c340ffc-66b0-4596-9cee-46d985d0ff3b" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 527px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; Row CreateNewRow(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ref&lt;/span&gt;&lt;span style="color: #000000;"&gt; SheetData sd, UInt32Value rowIndex)
{
  Row newRow &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Row();
  newRow.RowIndex &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; rowIndex;
  Row lastRow &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (Row)sd.Elements&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Row&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;()
    .Where(r &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; r.RowIndex &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; rowIndex).LastOrDefault();
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (lastRow &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)  
    sd.InsertAfter(newRow, lastRow);
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    sd.InsertAt(newRow, &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; newRow;
}

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; Cell CreateNewCell(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ref&lt;/span&gt;&lt;span style="color: #000000;"&gt; Row row, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; cellRef)
{
  Cell lastCell &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; row.Elements&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Cell&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;().Where
     (c &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Compare(c.CellReference.Value, cellRef, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
        .LastOrDefault();

  Cell newCell &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Cell();
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (lastCell &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
    row.InsertAfter(newCell, lastCell);
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    row.InsertAt(newCell, &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;);

  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; newCell;
}
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die Extensions Class, welche die Funktion RemoveAllButNumbers für Strings zur Verfügung stellt. Damit werden aus der Zelladresse alle Zeichen herausgenommen, die keine Ziffern darstellen. Das Ergebnis entspricht der Zeilennummer.&lt;/font&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:9D7513F9-C04C-4721-824A-2B34F0212519:1022863e-787b-40f5-96d1-9d4ce2ccac3b" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 691px; height: 347px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;internal&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyExtensions
{

  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;internal&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; UInt32 RemoveAllButNumbers(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; s)
  {
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; res &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Empty;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt;[] numbers &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; { &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;0&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;1&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;2&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;3&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;4&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;5&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;6&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;7&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;8&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;9&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; };
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; c &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; s)
    {
      &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (numbers.Contains(c))
      {
        res &lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt; c;
      }
    }
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; UInt32.Parse(res);
  }

}
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;










&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;[ Fortsetzung folgt ]&lt;/font&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10106445" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/-NET+Dev+mit+Office/">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/OpenXML/">OpenXML</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Real+Code/">Real Code</category></item><item><title>Open XML Dateien aufbauen und verändern (Teil 2)</title><link>http://blogs.msdn.com/b/jensha/archive/2010/12/15/open-xml-dateien-aufbauen-und-ver-228-ndern-teil-2.aspx</link><pubDate>Wed, 15 Dec 2010 11:26:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10105248</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10105248</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2010/12/15/open-xml-dateien-aufbauen-und-ver-228-ndern-teil-2.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;Der Umgang mit Inline und Shared Strings in Excel &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Beim Quellcode aus Teil 1 muss noch einiges erklärt werden. Das Erste wäre das Einfügen des Worksheet Parts und das Anlegen einer Tabelle in demselben. Ich habe dort die Funktion InsertWorksheetPart aufgerufen, die jetzt noch implementiert werden muss. Der komplizierteste Teil dabei ist das Ermitteln der neuen ID für die einzufügende Tabelle. Wichtig ist, dass die neue ID nicht schon vorkommt. Dabei hilft ein wenig LINQ. Mit Hilfe einer Lambda Function kann man schnell die höchste Sheet ID herausfinden. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&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:9D7513F9-C04C-4721-824A-2B34F0212519:dd604e48-c02e-4f41-80ad-7e0f4d8f9b55" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 592px; height: 349px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; WorksheetPart InsertWorksheetPart(WorkbookPart wbPart, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; sheetName)
{
  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Hinzuf&amp;#252;gen eines Worksheet Parts zum Workbook.&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;  WorksheetPart wsPart &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; wbPart.AddNewPart&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;WorksheetPart&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; rId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; wbPart.GetIdOfPart(wsPart);

  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; eindeutige ID ermitteln = h&amp;#246;chste sheetID + 1:&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;uint&lt;/span&gt;&lt;span style="color: #000000;"&gt; sheetId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
  Sheets sheets &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; wbPart.Workbook.GetFirstChild&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Sheets&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sheets.Elements&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Sheet&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;().Count() &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
    sheetId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; sheets.Elements&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Sheet&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;().Select(s &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; s.SheetId.Value).Max() &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;;

  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Das Worksheet mit dem Workbook verbinden:&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;  Sheet sheet &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Sheet() { Id &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; rId, SheetId &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; sheetId, Name &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; sheetName };
  sheets.Append(sheet);
  wbPart.Workbook.Save();

  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; wsPart;
}
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die Funktion ist relative praktisch, da es unerheblich ist, ob man eine neue Datei anlegt oder einfach eine neue Tabelle in eine bestehende Arbeitsmappe hängt.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Nun zum Hinzufügen von Zellen mit Strings. In Teil 1 wurde schon angedeutet, dass Tabellen zeilenweise aufgebaut sind. Wir hatten auch festgehalten, dass es Inline Strings und Shared Strings gibt. &lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&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:9D7513F9-C04C-4721-824A-2B34F0212519:4f001d31-e95d-461d-bbfa-5e4cf575ca7e" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 519px; height: 207px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; Cell CreateCellWithInlineString(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; cellRef, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; cellValue)
{
  Cell c &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Cell();
  c.DataType &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellValues.InlineString;
  c.CellReference &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; cellRef;
  InlineString istr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; InlineString(
                        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Text(cellValue));
  c.AppendChild(istr);
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; c;
}
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;



&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die Markup-Repräsentation eines Inline Strings würde folgendermaßen aussehen:&lt;/font&gt;&lt;/p&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:9D7513F9-C04C-4721-824A-2B34F0212519:25eb331d-37ee-407f-a5c9-0debf4c02fd8" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 467px; height: 131px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;x:c &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;r&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;A1&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; t&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;inlineStr&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
   &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;x:is&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
      &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;x:t&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Der Zellwert als String&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;x:t&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;x:is&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;x:c&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Shared Strings sind etwas aufwändiger zu handhaben, da immer zuerst geschaut werden muss, ob der String als solcher schon in der Shared Strings Tabelle vorhanden ist bzw. diese überhaupt da ist. Das Grundgerüst für die Zelle sieht so aus:&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&gt;&lt;/p&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:9D7513F9-C04C-4721-824A-2B34F0212519:dac2c5a2-ed90-4c82-94fd-1049a879b4bd" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 566px; height: 207px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; Cell CreateCellWithSharedString(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; cellRef, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; sharedString, 
                                        SharedStringTablePart sstPart)
{
  Cell c &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Cell();
  c.CellReference &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; cellRef;
  c.DataType &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellValues.SharedString;
  c.CellValue &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CellValue(InsertSharedStringItem(sharedString, sstPart).ToString());
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; c;
}
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Einen String in die Shared Strings Tabelle eintragen:&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;&lt;/font&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:9D7513F9-C04C-4721-824A-2B34F0212519:49a9150c-24e6-43d9-ad2c-d6be2be8d352" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 646px; height: 429px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; InsertSharedStringItem(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; newString, 
                                          SharedStringTablePart sstPart)
{
  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; SharedStringTable erzeugen, falls nicht vorhanden&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sstPart.SharedStringTable &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
    sstPart.SharedStringTable &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; SharedStringTable();

  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; SharedStringTable durchsuchen. Wenn String vorhanden, Index zur&amp;#252;ck geben&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (SharedStringItem ssi &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; sstPart.SharedStringTable.Elements&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;SharedStringItem&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;())
  {
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (ssi.InnerText &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; newString)
      &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; i;
    i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
  }

  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; String ist nicht da ==&amp;gt; SharedStringItem erzeugen&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;  sstPart.SharedStringTable.AppendChild 
  (&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; SharedStringItem(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Text(newString)));
  sstPart.SharedStringTable.Save();

  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; i;
}
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die Markup-Repräsentation eines Shared Strings würde folgendermaßen aussehen:&lt;/font&gt;&lt;/p&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:9D7513F9-C04C-4721-824A-2B34F0212519:9fe66fb4-79f6-4956-b298-fcff5ec90df0" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 511px; height: 73px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;c &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;r&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;D1&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; t&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;s&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;v&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;0&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;v&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;c&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Der Verweis zeigt auf den String an der Position 0 in der Shared Strings Tabelle, die im Markup so aussehen könnte:&lt;/font&gt;&lt;/p&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:9D7513F9-C04C-4721-824A-2B34F0212519:d6f7544b-b60d-4562-af50-8aa0b9edbfb4" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 677px; height: 214px;background-color:White;overflow: visible;"&gt;&lt;div&gt;&lt;!--

code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;sst &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;http://schemas...spreadsheetml/2006/main&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; count&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;5&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; uniqueCount&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;si&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;t&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Microsoft&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;t&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;si&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;si&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;t&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Jens H&amp;#228;upel&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;t&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;si&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;si&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;t&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Der Zellwert als String&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;t&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;si&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;sst&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;/!--

code&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/!--&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;[ Fortsetzung folgt ]&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10105248" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/-NET+Dev+mit+Office/">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/OpenXML/">OpenXML</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Real+Code/">Real Code</category></item><item><title>Open XML Dateien aufbauen und verändern (Teil 1)</title><link>http://blogs.msdn.com/b/jensha/archive/2010/12/14/open-xml-dateien-aufbauen-und-ver-228-ndern-teil-1.aspx</link><pubDate>Tue, 14 Dec 2010 15:28:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10104729</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10104729</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2010/12/14/open-xml-dateien-aufbauen-und-ver-228-ndern-teil-1.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;&lt;font size="2" face="Tahoma"&gt;Der Umgang mit Strings in Excel &lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Nach längerer Zeit der Funkstille, begründet durch emsiges Herumreisen, gemeinsames Herumsitzen in eingeschneiten Fliegern auf dem Rollfeld sowie sonstiger allgemeiner vorweihnachtliche Hatz, will ich mir wieder etwas Zeit für die Technologie nehmen. Gerade in letzter Zeit wurde an einigen Stellen – wohl im Zuge der Erneuerung – die Frage in Richtung Open XML gelenkt. Oftmals sollten Dateien (Reports) aufgebaut oder ergänzt werden. Diesem Thema will ich mich in den nächsten Wochen widmen.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Da Excel-Dateien eine Art dreidimensionaler Struktur aufweisen – Zeilen, Spalten und Tabellen), verkompliziert sich deren Aufbau im Vergleich zu Word etwas. Um Speicherplatz zu sparen, wird eine Shared Strings-Tabelle verwendet, die für alle in einer Arbeitsmappe enthaltenen Tabellen zuständig ist. Der gesamte Inhalt einer Zelle innerhalb einer Tabelle entspricht einem Shared String, sofern er nicht eine Formel oder Zahl darstellt. In der Reihenfolge des Anlegens werden die Strings in der Shared Strings-Tabelle indiziert und über den Indexwert in der Zelle verlinkt.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Daneben gibt es noch Inline Strings, also Zeichenketten, die direkt innerhalb der Zelle in deren Markup gespeichert werden. Inline Strings werden von Excel allerdings automatisch in Einträge in der Shared Strings-Tabelle umgewandelt. Welchen Sinn haben sie dann? Nun, sie stellen einen einfachen Weg dar, Tabellen aufzubauen, ohne sich um die Komplexität der (externen) Shared Strings-Tabelle kümmern zu müssen.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Neben der WindowsBase Assembly wird die Bibliothek für das Open XML SDK 2.0 benötigt. Diese liefert zum einen eine höhere Abstraktion als die Methoden von System.IO.Packaging und zum anderen werden die Elemente des Markups (WordML, SpreadsheetML, etc.) als Objekte zur Verfügung gestellt. Damit werden viele Fehler (sofern es denn Leute gibt, die welche machen…) in die Compiletime verlagert (statt sie zur Laufzeit zu bekommen).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/5086.clip_5F00_image002_5F00_2.png"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/2768.clip_5F00_image002_5F00_2.png"&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="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/2768.clip_5F00_image002_5F00_thumb.png" width="605" height="397" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Wir unterscheiden zwischen den Parts, die eine logische Einheit innerhalb eines Open XML Files darstellen (Workbook, Worksheet) und dem XML, das die Repräsentation des eigentlichen Inhalts der Tabellen ist. Beides muss angelegt werden. Das grobe Gerüst ist hier zu sehen:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;strong&gt;private void CreateExcelFile(string FName)         &lt;br /&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&amp;#160; using (SpreadsheetDocument sDoc =&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;SpreadsheetDocument.Create(FName, SpreadsheetDocumentType.Workbook))&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&lt;strong&gt;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WorkbookPart partWB = sDoc.AddWorkbookPart();&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&lt;strong&gt;&amp;#160;&amp;#160; // Formatvorlagen hinzufügen:       &lt;br /&gt;&amp;#160;&amp;#160; WorkbookStylesPart partStyles = …        &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;     &lt;br /&gt;&lt;strong&gt;&amp;#160;&amp;#160; // Basisdokument Workbook.xml anlegen:       &lt;br /&gt;&amp;#160;&amp;#160; Workbook wb = new Workbook(new Sheets());        &lt;br /&gt;&amp;#160;&amp;#160; wb.Save(partWB);        &lt;br /&gt;        &lt;br /&gt;&amp;#160;&amp;#160; // Basis-WorksheetPart hinzufügen:        &lt;br /&gt;&amp;#160;&amp;#160; WorksheetPart partWS =&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;strong&gt;InsertWorksheetPart(partWB, &amp;quot;Open XML SDK Samples&amp;quot;);       &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;     &lt;br /&gt;&lt;strong&gt;&amp;#160;&amp;#160; // SharedStringTable hinzufügen:       &lt;br /&gt;&amp;#160;&amp;#160; SharedStringTablePart partSharedStrings =&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;strong&gt;partWB.AddNewPart&amp;lt;SharedStringTablePart&amp;gt;();       &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;     &lt;br /&gt;&lt;strong&gt;&amp;#160;&amp;#160; // worksheet.xml erzeugen:       &lt;br /&gt;&amp;#160;&amp;#160; Worksheet ws = new Worksheet();        &lt;br /&gt;&amp;#160;&amp;#160; SheetData sd = new SheetData();        &lt;br /&gt;&amp;#160;&amp;#160; ws.AppendChild(sd);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&lt;strong&gt;&amp;#160;&amp;#160; // Zeilenweise Zellen hinzufügen:       &lt;br /&gt;&amp;#160;&amp;#160; Row r1 = new Row();        &lt;br /&gt;&amp;#160;&amp;#160; r1.RowIndex = 1;        &lt;br /&gt;&amp;#160;&amp;#160; r1.AppendChild( +++ );&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&lt;strong&gt;&amp;#160;&amp;#160; Row r3 = new Row();       &lt;br /&gt;&amp;#160;&amp;#160; r3.RowIndex = 3;        &lt;br /&gt;&amp;#160;&amp;#160; r3.AppendChild( +++ );        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;strong&gt;sd.AppendChild(r1);       &lt;br /&gt;&amp;#160;&amp;#160; sd.AppendChild(r3);        &lt;br /&gt;&amp;#160;&amp;#160; ws.Save(partWS);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="2" face="Consolas"&gt; }       &lt;br /&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;}&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Excel verlangt nach einer Datei, in der die Formatvorlagen definiert sind, dem WorkbookStylesPart. Ich gehe davon, dass keiner diesen Part von Anfang an erzeugt, sondern Excel als Templating Tool verwendet. Man nehme einfach eine Excel-Arbeitsmappe, die die gewünschte Formatierung enthält (bzw. formatiert Teile der Tabelle wie gewünscht). Das kann auf zwei Arten in unser Programm integriert werden:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="2" face="Tahoma"&gt;Möglichkeit 1:&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Man öffnet diese Excel-Datei mit dem Open XML SDK 2.0 Productivity Tool und lässt vom Reflector den Code erzeugen.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/4747.clip_5F00_image004_5F00_2.png"&gt;&lt;font size="2" face="Tahoma"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/8463.clip_5F00_image004_5F00_2.png"&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="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/5751.clip_5F00_image004_5F00_thumb.png" width="605" height="489" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Der Aufruf sieht dann folgendermaßen aus:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&lt;strong&gt;WorkbookStylesPart partStyles = partWB.AddNewPart&amp;lt;WorkbookStylesPart&amp;gt;();       &lt;br /&gt;partStyles.Stylesheet = GenerateStylesSheet();        &lt;br /&gt;partStyles.Stylesheet.Save(partStyles);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;Möglichkeit 2:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Man gibt der Excel-Datei den Suffix .zip und öffnet den Container. Im Ordner \xl befindet sich die Datei styles.xml. Diese wird in die Ressourcen des eigenen Programms aufgenommen.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/3683.image_5F00_2.png"&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="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-45-10-metablogapi/7802.image_5F00_thumb.png" width="384" height="213" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Der Aufruf sieht dann folgendermaßen aus:&lt;/font&gt;&lt;/p&gt;  &lt;pre&gt;&lt;font size="2" face="Consolas"&gt;&lt;strong&gt;WorkbookStylesPart partStyles = partWB.AddNewPart&amp;lt;WorkbookStylesPart&amp;gt;();
XmlDocument stylesXML = new XmlDocument();
stylesXML.LoadXml(Properties.Resources.styles);&lt;/strong&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;font size="2" face="Consolas"&gt;&lt;strong&gt;using (StreamWriter streamStylesXML = &lt;br /&gt;   &lt;/strong&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;strong&gt;new StreamWriter(partStyles.GetStream(FileMode.Create, FileAccess.Write)))&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160; stylesXML.Save(streamStylesXML);&lt;br /&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die weitere Vorgehensweise ist schnell erklärt: Das Workbook.xml enthält Informationen über in der Arbeitsmappe enthaltene Tabellen (Worksheets). Gespeichert wird sie im Workbook Part. Danach muss mindestens eine Tabelle (Worksheet.xml) angelegt und im Worksheet Part gespeichert werden.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Wichtig in der worksheet.xml ist das sheetdata Element. An dieses werden die Zeilen angehängt, die wiederum die Zellen enthalten.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;Die Shared Strings-Tabelle wird ebenfalls schon hier angelegt, wir benötigen sie erst später.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;[ Fortsetzung folgt ]&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10104729" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/-NET+Dev+mit+Office/">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/OpenXML/">OpenXML</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Real+Code/">Real Code</category></item><item><title>VSTO Deployments for ALLUSERS</title><link>http://blogs.msdn.com/b/jensha/archive/2010/09/10/vsto-deployments-for-allusers.aspx</link><pubDate>Fri, 10 Sep 2010 12:25:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10060258</guid><dc:creator>jensha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jensha/rsscomments.aspx?WeblogPostID=10060258</wfw:commentRss><comments>http://blogs.msdn.com/b/jensha/archive/2010/09/10/vsto-deployments-for-allusers.aspx#comments</comments><description>&lt;p&gt;In dem &lt;a href="http://blogs.msdn.com/b/jensha/archive/2010/03/15/office-2007-vsto-addins-f-r-allusers.aspx"&gt;Blogeintrag vom 15. März&lt;/a&gt; hatte ich schon darüber geschrieben, dass man nun mit Hilfe eines &lt;a href="http://support.microsoft.com/kb/976811/en-us"&gt;Patches für Office 2007&lt;/a&gt; VSTO-Erweiterungen für alle angemeldeten Benutzer unter HKLM installieren kann. Der Hotfix mußte allerdings manuell installiert werden.&lt;/p&gt;  &lt;p&gt;Nun versicherte mir der verantworliche Program Manager, dass der Hotfix in ein &lt;a href="http://support.microsoft.com/kb/976477/en-us"&gt;Package&lt;/a&gt; eingeflossen ist, welches wiederum über die automatischen Office Updates mit verteilt wurde. Wenn also die aktuellen Updates für Office 2007 installiert worden sind, sollte man davon ausgehen können, dass man auch ohne das manuelle Installieren des o.g. Hotfixes VSTO-Erweitereungen für alle Benutzer installieren kann.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10060258" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jensha/archive/tags/-NET+Dev+mit+Office/">.NET Dev mit Office</category><category domain="http://blogs.msdn.com/b/jensha/archive/tags/Setup+_2600_+Deployment/">Setup &amp; Deployment</category></item></channel></rss>
