<?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>Cum Grano Salis : Excel</title><link>http://blogs.msdn.com/cumgranosalis/archive/tags/Excel/default.aspx</link><description>Tags: Excel</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>So what does REST on Excel Services look like???</title><link>http://blogs.msdn.com/cumgranosalis/archive/2009/10/28/so-what-does-rest-on-excel-services-look-like.aspx</link><pubDate>Wed, 28 Oct 2009 16:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9913954</guid><dc:creator>Shahar</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/cumgranosalis/comments/9913954.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cumgranosalis/commentrss.aspx?PostID=9913954</wfw:commentRss><description>&lt;P&gt;In &lt;A href="http://blogs.msdn.com/cumgranosalis/archive/2009/10/27/welcome-to-the-new-excel-services.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/2009/10/27/welcome-to-the-new-excel-services.aspx"&gt;my first post about Excel Services and REST&lt;/A&gt;, I showed how to construct a simple REST URL pointing directly to a PNG in a workbook. This post was supposed to be about the discovery built into the Excel Services REST API. However, I got a couple of questions about what my previous post actually looks like visually when used inside SharePoint 2010 and so I decided to post about that today instead. People like shiny screenshots.. :)&lt;/P&gt;
&lt;P&gt;In the previous post, I gave the following example of a REST URL:&lt;/P&gt;
&lt;P&gt;http://server/_vti_bin/ExcelRest.aspx/Shared Documents/Bugs.xlsx/Model/Charts(‘PersonalBugChart’) 
&lt;P&gt;In this post, I will show how a similar URL is used to post a chart about my alleged bug status into a SharePoint blog and have the chart be tied directly to the Excel file in which it resides. 
&lt;P&gt;First off – here’s what the chart looks like in Excel: 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_thumb_1.png" width=427 height=249 mce_src="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_thumb_1.png"&gt;&lt;/A&gt; 
&lt;P&gt;If you click the image you will see that the chart is called “PersonalBugs”. The actual location of the file is at “http://tssrva/sites/sp2009/shared documents/bugs.xlsx”. That means that the link to the chart inside Excel would be: 
&lt;P&gt;http://tssrva/_vti_bin/ExcelRest.aspx/sites/sp2009/shared documents/Bugs.xlsx/Model/Charts(‘PersonalBugs’) 
&lt;P&gt;The next step would be to create a blog post in SharePoint – when creating the blog entry, you can choose the “Insert” tab from the ribbon and then choose “From Address”: 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_6.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_thumb_2.png" width=396 height=334 mce_src="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_thumb_2.png"&gt;&lt;/A&gt; 
&lt;P&gt;Once you click address, all you need to do is put in the URL to the chart: 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_8.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_thumb_3.png" width=244 height=127 mce_src="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_thumb_3.png"&gt;&lt;/A&gt; 
&lt;P&gt;Once you hit OK, you will immediately see the chart appear within the blog post editor: 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_10.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_thumb_4.png" width=388 height=284 mce_src="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_thumb_4.png"&gt;&lt;/A&gt; 
&lt;P&gt;Hitting the Submit button will post the blog entry: 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_12.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_thumb_5.png" width=379 height=299 mce_src="http://blogs.msdn.com/blogfiles/cumgranosalis/WindowsLiveWriter/SowhatdoesRESTonExcelServiceslooklike_DF5/image_thumb_5.png"&gt;&lt;/A&gt; 
&lt;P&gt;The real neat part then becomes that as the workbook changes (due to external data being refreshed, the spreadsheet itself being modified and saved etc), everybody will see the changes directly on the blog the next time they come in! 
&lt;P&gt;I hope the shiny screenshots made everything clearer. 
&lt;P&gt;Next up: &lt;A href="http://blogs.msdn.com/cumgranosalis/archive/2009/10/29/discovery-via-the-excel-services-rest-apis.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/2009/10/29/discovery-via-the-excel-services-rest-apis.aspx"&gt;Discovery&lt;/A&gt;!! &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9913954" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cumgranosalis/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/cumgranosalis/archive/tags/Excel+Services/default.aspx">Excel Services</category><category domain="http://blogs.msdn.com/cumgranosalis/archive/tags/Excel/default.aspx">Excel</category><category domain="http://blogs.msdn.com/cumgranosalis/archive/tags/REST/default.aspx">REST</category></item><item><title>Using C# 3.0 Extension Methods to make life easier when using optional parameters in Office PIAs</title><link>http://blogs.msdn.com/cumgranosalis/archive/2008/02/29/using-c-3-0-extension-methods-to-make-life-easier-when-using-optional-parameters-in-office-pias.aspx</link><pubDate>Fri, 29 Feb 2008 20:00:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7945910</guid><dc:creator>Shahar</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/cumgranosalis/comments/7945910.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cumgranosalis/commentrss.aspx?PostID=7945910</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/gabhan_berry/archive/2008/02/06/excel-s-optional-parameters-and-missing-value-a-c-workaround.aspx"&gt;Gabhan Berry&lt;/a&gt; (read his blog - he has lots of Excel programmability related information in there!) wrote a piece about how to make using optional parameters a little less painful when using C# to program against the Excel (and any other) COM PIA object model.&lt;/p&gt; &lt;p&gt;While his solution makes life &lt;strong&gt;much easier&lt;/strong&gt; in some scenarios, after reading the post, there were a few things that bothered me from a fragility of code point of view about his solution - specifically, the various issues with type safety (parameters and method names). While the mechanism he presents will work properly, I was thinking if I could come up with something that will not have those issues. I think I was able to come up with something, but it has it's own set of issues. The biggest one is the fact that it only works with C# 3.0 - not with 2.0. That said, here's the solution:&lt;/p&gt; &lt;p&gt;OverGen is a tool I wrote that will take an assembly and find all methods in it that are optional and then generate overloads for all those methods that will allow the user to pass in a smaller amount of parameters. For each optional parameter a method has, an extension method will be generated.&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb383977.aspx"&gt;Extension Methods&lt;/a&gt; are basically a very simple compiler construct that allows a class to extend another class by way of adding methods to it - the extension is very superficial - no methods are actually added to the class but rather, the compiler knows that when such a method is called on class, it will try and find it in supporting classes. &lt;/p&gt; &lt;p&gt;Here's an example of one of the methods generated by the tool:&lt;/p&gt; &lt;div style="border-right: windowtext 1pt solid; padding-right: 4pt; border-top: windowtext 1pt solid; padding-left: 4pt; background: #d9d9d9; padding-bottom: 1pt; border-left: windowtext 1pt solid; padding-top: 1pt; border-bottom: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217"&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; Microsoft.Office.Interop.Excel.Workbook Open(&lt;span style="color: blue"&gt;this&lt;/span&gt; Microsoft.Office.Interop.Excel.Workbooks @__thisParam, &lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt; Filename) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;return&lt;/span&gt; @__thisParam.Open(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Filename, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; padding-bottom: 0in; border-left: medium none; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Notice the "this" keyword on the first parameter? That's what makes this method an extension method. If you did not have this guy, this is what ANY call to .Open would have to look like, even if you only use the first parameter:&lt;/p&gt; &lt;div style="border-right: windowtext 1pt solid; padding-right: 4pt; border-top: windowtext 1pt solid; padding-left: 4pt; background: #d9d9d9; padding-bottom: 1pt; border-left: windowtext 1pt solid; padding-top: 1pt; border-bottom: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217"&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;app.Workbooks.Open(&lt;span style="color: #a31515"&gt;"c:\\temp\\file.xlsx"&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; margin-bottom: 0pt; padding-bottom: 0in; border-left: medium none; line-height: normal; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing, &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;.Missing);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt;And here's what the code looks like if you are using the extension method shown above:&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="border-right: windowtext 1pt solid; padding-right: 4pt; border-top: windowtext 1pt solid; padding-left: 4pt; background: #d9d9d9; padding-bottom: 1pt; border-left: windowtext 1pt solid; padding-top: 1pt; border-bottom: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217"&gt; &lt;p class="MsoNormal" style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 0in; background: #d9d9d9; padding-bottom: 0in; border-left: medium none; padding-top: 0in; border-bottom: medium none; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; mso-bidi-language: he; mso-no-proof: yes"&gt;app.Workbooks.Open(&lt;span style="color: #a31515"&gt;"c:\\temp\\file.xlsx"&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;That's about it - you should be able to do this for every method that takes optional parameters.&lt;/p&gt; &lt;p&gt;You can download the &lt;a href="http://code.msdn.microsoft.com/PiaOverGen"&gt;OverGen&lt;/a&gt; tool to enable you to create such extension method for every PIA you use.&lt;/p&gt; &lt;p&gt;You can also download &lt;a href="http://code.msdn.microsoft.com/PiaExtensionMethods"&gt;ready-made extension methods for Excel and Word&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7945910" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cumgranosalis/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/cumgranosalis/archive/tags/Excel/default.aspx">Excel</category></item></channel></rss>