{"id":809,"date":"2011-12-01T04:14:49","date_gmt":"2011-12-01T04:14:49","guid":{"rendered":"http:\/\/www.ericwhite.com\/home2\/bm8qcmjy\/public_html\/blog\/?page_id=809"},"modified":"2014-03-04T05:59:52","modified_gmt":"2014-03-04T05:59:52","slug":"spreadsheetml-expanded","status":"publish","type":"page","link":"https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded\/","title":{"rendered":"SpreadsheetML"},"content":{"rendered":"<h2 style='font-size: small;'><a href='https:\/\/www.ericwhite.com\/blog\/toc-expanded'>Back to TOC<\/a><a style='position: relative; left: 1em;' href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-video-expanded'>Just Videos<\/a><span style='position: relative; left: 2em;'><a href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-condensed'>Condensed TOC<\/a><\/span><\/h2>\n<p>The markup language within Open XML for spreadsheets.<\/p>\n<ul>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/01\/17\/how-to-extract-comments-from-open-xml-documents.aspx\" target=\"_blank\">How to Extract Comments from Open XML Documents<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>How to Extract Comments from Open XML Documents<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded'>Open XML SDK<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded'>WordprocessingML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/presentationml-expanded'>PresentationML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded'>SpreadsheetML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/06\/11\/processing-open-xml-documents-server-side-using-powershell.aspx\" target=\"_blank\">Automated Processing of Open XML Documents using PowerShell<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Processing Open XML documents using PowerShell is a powerful approach for creating, modifying, and transforming Open XML documents.  The PowerTools for Open XML are examples and guidance that show how to do this.  They consist of PowerShell cmdlets, and a number of example scripts that demonstrate the use of the cmdlets.  Examples include automated word processing document and spreadsheet generation, and preparing documents for distribution external to a company, including removing comments, accepting revisions, applying a uniform theme to them, and applying a watermark to them.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded'>PowerTools for Open XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/docx-generation-expanded'>DOCX Generation<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xlsx-generation-expanded'>XLSX Generation<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded'>WordprocessingML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded'>SpreadsheetML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/11\/14\/using-linq-to-query-excel-tables.aspx\" target=\"_blank\">Using LINQ to Query Excel Tables<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Excel has a very cool feature where you can declare that a range of cells is a table.  It is a feature that allows you to use Excel very much like a database.  Because these tables are stored in Open XML documents, we can implement some simple extension methods and some classes so that we can query these tables using LINQ in a manner that is similar to querying a SQL database.  This post presents a bit of code to do this.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded'>Open XML SDK<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded'>SpreadsheetML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class='ericListItem' href='http:\/\/blogs.msdn.com\/ericwhite\/archive\/2008\/11\/20\/inner-join-of-two-excel-tables.aspx' target='_blank'>Inner Join of Two Excel Tables<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>I recently posted some code that allows you to use LINQ to query Excel tables.  The source for these queries is the Open XML document &#8211; you don&#8217;t need to involve the Excel application to query the data in these tables.  In that post, I presented a few examples of queries of various types.  This post shows a join of two tables using the extension methods and classes presented in that post.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded'>Open XML SDK<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded'>SpreadsheetML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class='ericListItem' href='http:\/\/blogs.msdn.com\/ericwhite\/archive\/2008\/12\/03\/joining-linq-to-sql-and-linq-to-excel.aspx' target='_blank'>Joining LINQ to SQL and LINQ to Excel<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>This post explains how to open the Excel spreadsheet, query a database using LINQ to SQL, and project a collection of an anonymous type that contains data from both data sources<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded'>Open XML SDK<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded'>SpreadsheetML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class='ericListItem' href='http:\/\/blogs.msdn.com\/ericwhite\/archive\/2010\/03\/04\/validate-open-xml-documents-using-the-open-xml-sdk-2-0.aspx' target='_blank'>Validate Open XML Documents using the Open XML SDK 2.0<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Validate Open XML Documents using the Open XML SDK 2.0<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded'>Open XML SDK<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded'>WordprocessingML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded'>SpreadsheetML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/presentationml-expanded'>PresentationML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/07\/21\/table-markup-in-open-xml-spreadsheetml.aspx\" target=\"_blank\">Table Markup in Open XML SpreadsheetML<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>This post presents a summary of the Open XML SpreadsheetML markup that you use to define or query a table.  <span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded'>Open XML SDK<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded'>SpreadsheetML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class='ericListItem' href='http:\/\/openxmldeveloper.org\/home2\/bm8qcmjy\/public_html\/blog\/b\/openxmldeveloper\/archive\/2011\/03\/28\/132189.aspx' target='_blank'>Updating Data for an Embedded Chart in an Open XML WordprocessingML Document<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Embedding charts in a word-processing document is a good way to put together documents that display graphical data. When you embed a chart in a document, an Open XML SpreadsheetML workbook is stored as an embedded part in the WordprocessingML document. The spreadsheet contains the data behind the chart. When you maintain that data, Word starts Excel, opening that embedded spreadsheet.<span style='color:#2b91af;'>  (Video)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded'>WordprocessingML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded'>SpreadsheetML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class='ericListItem' href='http:\/\/openxmldeveloper.org\/archive\/2011\/04\/15\/139098.aspx' target='_blank'>How to Create Protected Spreadsheets with Locked and Unlocked Cells<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>7-minute video that shows markup related to protected sheets with locked and unlocked cells.<span style='color:#2b91af;'>  (Article,Video)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded'>Open XML SDK<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded'>SpreadsheetML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class='ericListItem' href='http:\/\/openxmldeveloper.org\/home2\/bm8qcmjy\/public_html\/blog\/b\/openxmldeveloper\/archive\/2011\/05\/31\/155543.aspx' target='_blank'>Exploring Table Markup in Open XML SpreadsheetML<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Tables are a convenient and useful feature of Open XML SpreadsheetML. This post explores table markup, and links to a screen-cast that shows how to create a table programmatically<br \/>\n<span style='color:#2b91af;'>  (Video)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded'>SpreadsheetML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class='ericListItem' href='http:\/\/openxmldeveloper.org\/home2\/bm8qcmjy\/public_html\/blog\/b\/openxmldeveloper\/archive\/2011\/07\/18\/query-open-xml-spreadsheets-in-vb-net-using-linq.aspx' target='_blank'>Query Open XML Spreadsheets in VB.NET using LINQ<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>When working with SpreadsheetML, one of the most common needs is to retrieve the data from a worksheet or a table in as easy a fashion as possible.  There has been a fair amount written for C# developers to do this, but not nearly as much for VB.NET.<span style='color:#2b91af;'>  (Video)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded'>SpreadsheetML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class='ericListItem' href='http:\/\/openxmldeveloper.org\/home2\/bm8qcmjy\/public_html\/blog\/b\/openxmldeveloper\/archive\/2011\/11\/22\/screen-cast-write-simpler-spreadsheetml-when-generating-spreadsheets.aspx' target='_blank'>Screen-Cast: Write Simpler SpreadsheetML when Generating Spreadsheets<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>This screen-cast presents a small tip that can make it easier to write code to generate SpreadsheetML.  You can avoid the complications of updating the shared string table by using the idea in this tip.<span style='color:#2b91af;'>  (Video)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded'>SpreadsheetML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Back to TOCJust VideosCondensed TOC The markup language within Open XML for spreadsheets. How to Extract Comments from Open XML Documents How to Extract Comments from Open XML Documents (Article) Keywords:&nbsp;&nbsp;OpenXML&nbsp;&nbsp;Open XML SDK&nbsp;&nbsp;WordprocessingML&nbsp;&nbsp;PresentationML&nbsp;&nbsp;SpreadsheetML&nbsp;&nbsp; Automated Processing of Open XML Documents using PowerShell Processing Open XML documents using PowerShell is a powerful approach for creating, modifying, and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_s2mail":"","footnotes":""},"class_list":["post-809","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/809","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/comments?post=809"}],"version-history":[{"count":6,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/809\/revisions"}],"predecessor-version":[{"id":1725,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/809\/revisions\/1725"}],"wp:attachment":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/media?parent=809"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}