{"id":2054,"date":"2016-02-04T02:28:49","date_gmt":"2016-02-04T02:28:49","guid":{"rendered":"http:\/\/www.ericwhite.com\/home2\/bm8qcmjy\/public_html\/blog\/?page_id=2054"},"modified":"2016-02-04T02:28:49","modified_gmt":"2016-02-04T02:28:49","slug":"accessing-spreadsheets-using-the-open-xml-sdk-for-javascript","status":"publish","type":"page","link":"https:\/\/www.ericwhite.com\/blog\/accessing-spreadsheets-using-the-open-xml-sdk-for-javascript\/","title":{"rendered":"Accessing Spreadsheets using the Open XML SDK for JavaScript"},"content":{"rendered":"<p><span class=\"Back\"><a class=\"Back\" href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-for-javascript\/\">Return to the<br \/>Open XML SDK for JavaScript<br \/>Developer Center<\/a><\/span>Shows how to navigate to the workbook part, and then navigate to the appropriate worksheet part using the Open XML SDK for JavaScript.<\/p>\n<p><iframe loading=\"lazy\" title=\"Accessing Xlsx OpenXmlSdkJs\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/SdggqnL_gxw?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p>Once you have an open workbook, first you need to get the workbook part:<\/p>\n<pre class=\"prettyprint\">var workbookPart = openedSpreadsheet.workbookPart();\r\nvar wbXDoc = workbookPart.getXDocument();<\/pre>\n<p>You can then find the relevant sheet element based on the name:<\/p>\n<pre class=\"prettyprint\">var sheetElement = wbXDoc.root\r\n    .element(S.sheets)\r\n    .elements(S.sheet)\r\n    .firstOrDefault(function (sh) {\r\n        return sh.attribute(&quot;name&quot;).value === &#39;Sheet1&#39;;\r\n});<\/pre>\n<p>Once you have the sheet element, you can get the relationship id of the sheet:<\/p>\n<pre class=\"prettyprint\">var id = sheetElement.attribute(R.id).value;\r\nvar worksheetPart = workbookPart.getPartById(id);<\/pre>\n<p>You can then get the XDocument for the worksheet, and then query it or make modifications to it:<\/p>\n<pre class=\"prettyprint\">var wsXDoc = worksheetPart.getXDocument();\r\nvar firstCell = wsXDoc.descendants(S.c).firstOrDefault();\r\nif (firstCell) {\r\n    var newFirstCell = new XElement(S.c,\r\n        firstCell.attribute(&quot;r&quot;),\r\n        new XElement(S.v, &quot;1000&quot;));\r\n    firstCell.replaceWith(newFirstCell);\r\n}<\/pre>\n<p>\nHere is the entire example:<\/p>\n<pre class=\"prettyprint\">&lt;!DOCTYPE html&gt;\r\n&lt;html xmlns=&quot;http:\/\/www.w3.org\/1999\/xhtml&quot;&gt;\r\n&lt;head&gt;\r\n    &lt;title&gt;Shows opening a workbook \/ worksheet and making a mod to the upper left cell.&lt;\/title&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&lt;form&gt;\r\n    &lt;div style=&quot;margin-top: 1em; margin-bottom: 1em;&quot;&gt;\r\n        &lt;input id=&quot;btnSave&quot; type=&quot;button&quot; onclick=&quot;saveDocument()&quot; value=&quot;Save&quot; style=&quot;height: 30px; width: 100px; background-color: rgb(212,208,200); border: thin solid black;&quot;  \/&gt;\r\n    &lt;\/div&gt;\r\n    &lt;p&gt;If you are targeting down-level browsers that do not support HTML5, see &lt;b&gt;examp01-load-save-via-flash.html&lt;\/b&gt;.&lt;\/p&gt;\r\n&lt;\/form&gt;\r\n&lt;pre&gt;\r\n&lt;script type=&quot;text\/javascript&quot; src=&quot;linq.js&quot;&gt;&lt;\/script&gt;\r\n&lt;script type=&quot;text\/javascript&quot; src=&quot;ltxml.js&quot;&gt;&lt;\/script&gt;\r\n&lt;script type=&quot;text\/javascript&quot; src=&quot;ltxml-extensions.js&quot;&gt;&lt;\/script&gt;\r\n&lt;script type=&quot;text\/javascript&quot; src=&quot;jszip.js&quot;&gt;&lt;\/script&gt;\r\n&lt;script type=&quot;text\/javascript&quot; src=&quot;jszip-load.js&quot;&gt;&lt;\/script&gt;\r\n&lt;script type=&quot;text\/javascript&quot; src=&quot;jszip-inflate.js&quot;&gt;&lt;\/script&gt;\r\n&lt;script type=&quot;text\/javascript&quot; src=&quot;jszip-deflate.js&quot;&gt;&lt;\/script&gt;\r\n&lt;script type=&quot;text\/javascript&quot; src=&quot;FileSaver.js&quot;&gt;&lt;\/script&gt;\r\n&lt;script type=&quot;text\/javascript&quot; src=&quot;openxml.js&quot;&gt;&lt;\/script&gt;\r\n&lt;script type=&quot;text\/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;\/script&gt;\r\n&lt;script type=&quot;text\/javascript&quot;&gt;\r\n    \/***************************************************************************\r\n    \r\n    Copyright (c) Microsoft Corporation 2013.\r\n    \r\n    This code is licensed using the Microsoft Public License (Ms-PL).  You can find the text of the license here:\r\n    \r\n    http:\/\/www.microsoft.com\/resources\/sharedsource\/licensingbasics\/publiclicense.mspx\r\n    \r\n    Published at http:\/\/OpenXmlDeveloper.org\r\n    Resource Center and Documentation: http:\/\/openxmldeveloper.org\/wiki\/w\/wiki\/open-xml-sdk-for-javascript.aspx\r\n    \r\n    Developer: Eric White\r\n    Blog: http:\/\/www.ericwhite.com\r\n    Twitter: @EricWhiteDev\r\n\tEmail: eric@ericwhite.com\r\n    \r\n    ***************************************************************************\/\r\n\r\n    var saveSpreadsheet;\r\n    var spreadsheetToSave;\r\n\r\n    (function (root) {  \/\/ root = global\r\n        &quot;use strict&quot;;\r\n\r\n        var XAttribute = Ltxml.XAttribute;\r\n        var XCData = Ltxml.XCData;\r\n        var XComment = Ltxml.XComment;\r\n        var XContainer = Ltxml.XContainer;\r\n        var XDeclaration = Ltxml.XDeclaration;\r\n        var XDocument = Ltxml.XDocument;\r\n        var XElement = Ltxml.XElement;\r\n        var XName = Ltxml.XName;\r\n        var XNamespace = Ltxml.XNamespace;\r\n        var XNode = Ltxml.XNode;\r\n        var XObject = Ltxml.XObject;\r\n        var XProcessingInstruction = Ltxml.XProcessingInstruction;\r\n        var XText = Ltxml.XText;\r\n        var XEntity = Ltxml.XEntity;\r\n        var cast = Ltxml.cast;\r\n        var castInt = Ltxml.castInt;\r\n\r\n        var S = openXml.S;\r\n        var R = openXml.R;\r\n\r\n        var templateSpreadsheet = &quot;UEsDBBQABgAIAAAAIQD21qXvWgEAABgFAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADM&quot; +\r\n&quot;lMtuwyAQRfeV+g+IbWWTpFJVVXGy6GPZZpF+ADVjGwUDYkia\/H3H5LGo3FRRIrUbI8PMPRcYZjxd&quot; +\r\n&quot;t4atIKB2tuDDfMAZ2NIpbeuCv89fsnvOMEqrpHEWCr4B5NPJ9dV4vvGAjLItFryJ0T8IgWUDrcTc&quot; +\r\n&quot;ebC0UrnQyki\/oRZelgtZgxgNBneidDaCjVnsNPhk\/ASVXJrIntc0vXUSwCBnj9vAjlVw6b3RpYzk&quot; +\r\n&quot;VKys+kbJdoScMlMMNtrjDdngopfQrfwM2OW90dEErYDNZIivsiUbYm3EpwuLD+cW+XGRHpeuqnQJ&quot; +\r\n&quot;ypXLlk4gRx9AKmwAYmvyNOat1Hbv+wg\/BaNIw\/DCRrr9JeETfYz+iY\/bP\/IRqf5BpO\/5V5JkfrkA&quot; +\r\n&quot;jBsDeOkyTKLHyFS\/s+A80ksOcDp9\/1S77MyTEISo4fBY+4r+QKQucPZ2oeszClQPW6S+NvkCAAD\/&quot; +\r\n&quot;\/wMAUEsDBBQABgAIAAAAIQC1VTAj9AAAAEwCAAALAAgCX3JlbHMvLnJlbHMgogQCKKAAAgAAAAAA&quot; +\r\n&quoquot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArJJNT8Mw&quot; +\r\n&quot;DIbvSPyHyPfV3ZAQQkt3QUi7IVR+gEncD7WNoyQb3b8nHBBUGoMDR3+9fvzK2908jerIIfbiNKyL&quot; +\r\n&quot;EhQ7I7Z3rYaX+nF1ByomcpZGcazhxBF21fXV9plHSnkodr2PKqu4qKFLyd8jRtPxRLEQzy5XGgkT&quot; +\r\n&quot;pRyGFj2ZgVrGTVneYviuAdVCU+2thrC3N6Dqk8+bf9eWpukNP4g5TOzSmRXIc2Jn2a58yGwh9fka&quot; +\r\n&quot;VVNoOWmwYp5yOiJ5X2RswPNEm78T\/XwtTpzIUiI0Evgyz0fHJaD1f1q0NPHLnXnENwnDq8jwyYKL&quot; +\r\n&quot;H6jeAQAA\/\/8DAFBLAwQUAAYACAAAACEAu4FE2vAAAABHAwAAGgAIAXhsL19yZWxzL3dvcmtib29r&quot; +\r\n&quot;LnhtbC5yZWxzIKIEASigAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvJLNasMwEITvhbyD&quot; +\r\n&quot;2Hu8ttOWEiLnUgq5lvQBhL3+IbYktNsfv32FC24Dwb2EXASjRTMfq9ntv4ZefVDgzlkNWZKCIlu6&quot; +\r\n&quot;qrONhrfjy\/oJFIuxlemdJQ0jMeyL1d3ulXoj8RG3nWcVXSxraEX8FpHLlgbDifNk46R2YTASZWjQ&quot; +\r\n&quot;m\/JkGsI8TR8x\/PWA4sxTHSoN4VBtQB1HH5P\/93Z13ZX07Mr3gaxciMBPF07cEkk0NaEh0TBfMU6T&quot; +\r\n&quot;TRKJAS\/D5DeGyZdgshvDZEswD9eEYRn72LP5j370Uvz9NeMltpd+0yeJ0zmvAM\/qX3wDAAD\/\/wMA&quot; +\r\n&quot;UEsDBBQABgAIAAAAIQARQzLzpwEAACkDAAAPAAAAeGwvd29ya2Jvb2sueG1sjJJNb9swDIbvA\/Yf&quot; +\r\n&quot;BN0bWaoXBEGcAsM2LJehwLr2rMh0LEQfhiTXyb8fZcNJgPTQk0nq9cOXojZPJ2vIO4SovasoXxSU&quot; +\r\n&quot;gFO+1u5Q0X8vvx5WlMQkXS2Nd1DRM0T6tP36ZTP4cNx7fyQIcLGibUrdmrGoWrAyLnwHDk8aH6xM&quot; +\r\n&quot;mIYDi10AWccWIFnDRFEsmZXa0YmwDp9h+KbRCn541VtwaYIEMDKh\/djqLs40qz6DszIc++5Bedsh&quot; +\r\n&quot;Yq+NTucRSolV693B+SD3Bsc+8W8zGcM7tNUq+OibtEAUm0zezcsLxvk08nbTaAOv07UT2XV\/pM1d&quot; +\r\n&quot;DCVGxvSz1gnqii4x9QNcCyUloe++99rgKS9LUVC2vaziORDEJgjPQb9LdUYJJTU0sjfpBdcyN8S6&quot; +\r\n&quot;KIVY5n\/zCl81DPGKySk5vWlX+6GiosQncZ4zXuA9DOPRm65Tm12srrXfoA9tquiq4KMzdoMfF49t&quot; +\r\n&quot;xi9x48B\/82NAk2Ntl2fCAdcag7CrefZ3pxY3aowvavGh+vFGjfFF\/ZjVbLakpFF4efkzmhBC8LE7&quot; +\r\n&quot;m1\/59j8AAAD\/\/wMAUEsDBBQABgAIAAAAIQCDr+rjjQYAAOMbAAATAAAAeGwvdGhlbWUvdGhlbWUx&quot; +\r\n&quot;LnhtbOxZzW4bNxC+F+g7EHtPLNmSYxmRA0uW4jZxYthKihypFbXLmLtckJQd3YrkWKBA0bTopUBv&quot; +\r\n&quot;PRRtAyRAL+nTuE3RpkBeoUNyJZEWFduJgf7FBmyJ+3E4nJ+PM9yr1x5kDB0SISnPm1H1ciVCJI\/5&quot; +\r\n&quot;gOZJM7rT615ai5BUOB9gxnPSjMZERtc23n\/vKl5XKckIgvm5XMfNKFWqWF9akjEMY3mZFySHZ0Mu&quot; +\r\n&quot;Mqzgq0iWBgIfgdyMLS1XKqtLGaZ5hHKcgdjbwyGNCeppkdHGRHiHwddcST0QM7GvRRNvhsEODqoa&quot; +\r\n&quot;IceyzQQ6xKwZwToDftQjD1SEGJYKHjSjivmJljauLuH1chJTC+Y687rmp5xXThgcLJs1RdKfLlrt&quot; +\r\n&quot;1hpXtqbyDYCpeVyn02l3qlN5BoDjGHZqdXFl1rpr1dZEpgOyH+dltyv1Ss3HO\/JX5nRutFqteqPU&quot; +\r\n&quot;xQo1IPuxNodfq6zWNpc9vAFZfH0OX2tttturHt6ALH51Dt+90lit+XgDShnND+bQ2qHdbil9Chly&quot; +\r\n&quot;th2ErwF8rVLCZyiIhml06SWGPFeLYi3D97noAkADGVY0R2pckCGOIYrbOOsLiiNU4JxLGKgsV7qV&quot; +\r\n&quot;Ffirf2vmU00vj9cJdubZoVjODWlNkIwFLVQz+hCkRg7k1fPvXz1\/il49f3L88Nnxw5+OHz06fvij&quot; +\r\n&quot;leVN3MZ54k58+e1nf379Mfrj6TcvH38RxksX\/+sPn\/zy8+dhIOTXbP8vvnzy27MnL7769PfvHgfg&quot; +\r\n&quot;mwL3XXiPZkSiW+QI7fEM9mYM42tO+uJ8M3oppt4MnILsgOiOSj3grTFmIVyL+Ma7K4BaQsDro\/ue&quot; +\r\n&quot;rvupGCkaWPlGmnnAHc5Zi4ugAW7otRwL90Z5El5cjFzcHsaHobXbOPdc2xkVwKkQsvO2b6fEU3OX&quot; +\r\n&quot;4VzhhOREIf2MHxASmHaPUs+uOzQWXPKhQvcoamEaNEmP9r1Amk3aphn4ZRxSEFzt2WbnLmpxFtr1&quot; +\r\n&quot;Fjn0kZAQmAWU7xHmmfE6HimchUT2cMZcg9\/EKg0puT8WsYvrSAWeTgjjqDMgUobm3BawX8fpNzCw&quot; +\r\n&quot;WdDtO2yc+Uih6EFI5k3MuYvc4gftFGdFUGeapy72A3kAIYrRLlch+A73M0R\/Bz\/gfKG771Liuft0&quot; +\r\n&quot;IrhDE0+lWYDoJyMR8OV1wv18HLMhJoZlgPA9Hs9o\/jpSZxRY\/QSp19+Ruj2VTpL6JhyAodTaPkHl&quot; +\r\n&quot;i3D\/QgLfwqN8l0DOzJPoO\/5+x9\/Rf56\/F+XyxbP2jKiBw2d1uqnas4VF+5Aytq\/GjNyUpm6XcDwN&quot; +\r\n&quot;ujBoGgrTVU6buCKFj2WL4OESgc0cJLj6iKp0P8UFlPhV04ImshSdSFRwCZW\/GTbNMDkh27S3FAp7&quot; +\r\n&quot;06nWdQ9jmUNitcMHdnjF7VWnYkznmph+eLLQihZw1sVWrrzdYlWr1UKz+VurGtUMKXpbm24ZfDi\/&quot; +\r\n&quot;NRicWhPqHgTVElh5Fa4MtO7QDWFGBtruto+fuEUvfaEukikekNJHet\/zPqoaJ01iZRJGAR\/pvvMU&quot; +\r\n&quot;HzmrNbTYt1jtLE5yl6stWG7ivbfx0qTZnnlJ5+2JdGS5m5wsR0fNqFFfrkcoxkUzGkKbDR+zArwu&quot; +\r\n&quot;damJWQJ3VbESNuxPTWYTrjNvNsJhWYWbE2v3uQ17PFAIqbawTG1omEdlCLDcXAoY\/ZfrYNaL2oCN&quot; +\r\n&quot;9DfQYmUNguFv0wLs6LuWDIckVq6znRFzK2IAJZXykSJiPx0coT4biT0M7tehCvsZUAn3IYYR9Be4&quot; +\r\n&quot;2tPWNo98ci6Tzr1QMzg7jlmR4pJudYpOMtnCTR5PdTDfrLZGPdhbUHezufNvxaT8BW3FDeP\/2Vb0&quot; +\r\n&quot;eQIXFCsD7YEYbpYFRjpfmxEXKuXAQkVK466AazXDHRAtcD0MjyGo4H7b\/BfkUP+3OWdlmLSGPlPt&quot; +\r\n&quot;0QQJCueRSgUhu0BLJvpOEVYtzy4rkpWCTEQ56srCqt0nh4T1NAeu6rM9QimEumGTkgYM7mT8+d\/L&quot; +\r\n&quot;DOonusj5p1Y+NpnPWx7o6sCWWHb+GWuRmkP6zlHQCJ59pqaa0sFrDvZzHrWWseZ2vFw\/81FbwDUT&quot; +\r\n&quot;3C4riImYipjZlyX6QO3xPeBWBO8+bHmFIKov2cIDaYK09NiHwskO2mDSomzBUla3F15GwQ15WelO&quot; +\r\n&quot;14UsfZNK95zGnhZn\/nJeLr6++jyfsUsLe7Z2K92AqSFpT6aoLo8mjYxxjHnL5r4I4\/374OgteOUw&quot; +\r\n&quot;YkralwkP4FIRugz70gKS3zrXTN34CwAA\/\/8DAFBLAwQUAAYACAAAACEAfsGK5WABAAB0AgAAGAAA&quot; +\r\n&quot;AHhsL3dvcmtzaGVldHMvc2hlZXQyLnhtbIySwWrDMAyG74O9g\/G9cdqt2xqSlEEp62Ewxra74yiJ&quot; +\r\n&quot;aWwF213bt5+SkDLopTcJSZ9\/\/XK6PpmW\/YLzGm3G51HMGViFpbZ1xr+\/trMXznyQtpQtWsj4GTxf&quot; +\r\n&quot;5\/d36RHd3jcAgRHB+ow3IXSJEF41YKSPsANLlQqdkYFSVwvfOZDlMGRasYjjJ2GktnwkJO4WBlaV&quot; +\r\n&quot;VrBBdTBgwwhx0MpA+n2jOz\/RjLoFZ6TbH7qZQtMRotCtDucByplRya626GTR0t6n+aNUE3tIrvBG&quot; +\r\n&quot;K4ceqxARToxCr3deiZUgUp6WmjbobWcOqoy\/zrnI08GcHw1H\/y9mvdcF4r4v7MqMx32ruOrdDl5\/&quot; +\r\n&quot;OFZCJQ9t+MTjG+i6CXTYJWnvV0jK8wa8Iu8IEy2Wl0c3MkiidrKGd+lqbT1roRq6njlzIyaOKA7Y&quot; +\r\n&quot;9bPPhCwwBDRT1tB1ga4YRw+cVYhhSnq1l\/+S\/wEAAP\/\/AwBQSwMEFAAGAAgAAAAhAH7BiuVgAQAA&quot; +\r\n&quot;dAIAABgAAAB4bC93b3Jrc2hlZXRzL3NoZWV0My54bWyMksFqwzAMhu+DvYPxvXHardsakpRBKeth&quot; +\r\n&quot;MMa2u+MoiWlsBdtd27efkpAy6KU3CUmff\/1yuj6Zlv2C8xptxudRzBlYhaW2dca\/v7azF858kLaU&quot; +\r\n&quot;LVrI+Bk8X+f3d+kR3d43AIERwfqMNyF0iRBeNWCkj7ADS5UKnZGBUlcL3zmQ5TBkWrGI4ydhpLZ8&quot; +\r\n&quot;JCTuFgZWlVawQXUwYMMIcdDKQPp9ozs\/0Yy6BWek2x+6mULTEaLQrQ7nAcqZUcmutuhk0dLep\/mj&quot; +\r\n&quot;VBN7SK7wRiuHHqsQEU6MQq93XomVIFKelpo26G1nDqqMv865yNPBnB8NR\/8vZr3XBeK+L+zKjMd9&quot; +\r\n&quot;q7jq3Q5efzhWQiUPbfjE4xvougl02CVp71dIyvMGvCLvCBMtlpdHNzJIonayhnfpam09a6Eaup45&quot; +\r\n&quot;cyMmjigO2PWzz4QsMAQ0U9bQdYGuGEcPnFWIYUp6tZf\/kv8BAAD\/\/wMAUEsDBBQABgAIAAAAIQDi&quot; +\r\n&quot;2BZGtwEAAH4DAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDEueG1slFPLbtswELwX6D8QvEeUlDhp&quot; +\r\n&quot;BElBGiNoDgWKvu4UtZIIi1yBpO3477sSa6O1USC9cYfcmZ1ZqXx4NSPbgfMabcWzJOUMrMJW277i&quot; +\r\n&quot;P74\/X33gzAdpWzmihYofwPOH+v27co9u4weAwIjB+ooPIUyFEF4NYKRPcAJLNx06IwOVrhd+ciDb&quot; +\r\n&quot;pcmMIk\/TW2GktjwyFO4tHNh1WsEa1daADZHEwSgDze8HPfkjm1FvoTPSbbbTlUIzEUWjRx0OCyln&quot; +\r\n&quot;RhUvvUUnm5F8v2Y3Uh25l+KC3mjl0GMXEqITcdBLz\/fiXhBTXbaaHMyxMwddxR+z4innoi6XfH5q&quot; +\r\n&quot;2Ps\/zizI5huMoAK0tCbO5vgbxM388IWgdG4VF73PS\/xfHGuhk9sxfMX9J9D9EIhkRXZmV0V7WINX&quot; +\r\n&quot;FCfRJPnqNMRaBlmXDveMVkOafpLzorPi+l+ddanmt48Z+dvVWSl2NJT6jX6MaP43+hTR6xMqSPCk&quot; +\r\n&quot;mv+Par6o3pypRnR1phrR2zPVGGD0PckePkvXa+vZCN0Szh1nLqaXJnQOOM2R3VGSDYaA5lgN9J0D&quot; +\r\n&quot;BZEmFFWHGI7FvKTTn1P\/AgAA\/\/8DAFBLAwQUAAYACAAAACEAi9BfMoYCAACxBQAADQAAAHhsL3N0&quot; +\r\n&quot;eWxlcy54bWykVG1vmzAQ\/j5p\/8Hyd2qgIQsRUC1NkSp106R20r46YBKrfkG26ZJN++89A0moOm3T&quot; +\r\n&quot;+gXfHefnnntzdrWXAj0xY7lWOY4uQoyYqnTN1TbHXx\/KYIGRdVTVVGjFcnxgFl8V799l1h0Eu98x&quot; +\r\n&quot;5hBAKJvjnXPtkhBb7Zik9kK3TMGfRhtJHahmS2xrGK2tvyQFicNwTiTlCg8IS1n9C4ik5rFrg0rL&quot; +\r\n&quot;ljq+4YK7Q4+FkayWt1ulDd0IoLqPZrQ6YvfKK3jJK6OtbtwFwBHdNLxir1mmJCWAVGSNVs6iSnfK&quot; +\r\n&quot;Qa0A2kdYPir9XZX+lzcOXkVmf6AnKsASYVJklRbaIAeVAWK9RVHJBo9rKvjGcO\/WUMnFYTDH3tAX&quot; +\r\n&quot;c\/STHFLzRuJ5jIeFS1yIE6vYEwBDkUF1HDOqBAWN8sOhhfAKGjnA9H5\/8d4aeojiZHKB9AGLbKNN&quot; +\r\n&quot;DYNzrsfRVGSCNQ6IGr7d+dPpFr4b7RxUuchqTrdaUeFTGUBOAqRTMSHu\/XB9a15g7xukOllKd1vn&quot; +\r\n&quot;GMbUF+EoQiKjOOANisefog3Yb4ZF++YlPiBOaL8gfQqPfL9z\/Nlvg4DJGSHQpuPCcfUbwoBZ788l&quot; +\r\n&quot;CH0HnJ\/svjinKFCJmjW0E+7h9DPHZ\/kTq3kn45PXF\/6kXQ+R47M8eKU+Btu7OwvjBSfqDM\/xz5vV&quot; +\r\n&quot;h3R9U8bBIlwtgtklS4I0Wa2DZHa9Wq\/LNIzD61+TRXvDmvXPQZHBYi2tgGU0Y7JjivdnW44nyp0f&quot; +\r\n&quot;tH6tCNCeck\/jefgxicKgvAyjYDani2Axv0yCMoni9Xy2uknKZMI9+T\/uUUiiaHjLPPlk6bhkgqtj&quot; +\r\n&quot;r44dmlqhSaD+IQmfSt8Jcn5ri2cAAAD\/\/wMAUEsDBBQABgAIAAAAIQAUBanLPQEAAFECAAARAAgB&quot; +\r\n&quot;ZG9jUHJvcHMvY29yZS54bWwgogQBKKAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8klFL&quot; +\r\n&quot;wzAUhd8F\/0PJe5vE4tDQdqCyJweCFcW3kNxtwSYNSbTbvzdtt9rBEPKSe8797sklxXKvm+QHnFet&quot; +\r\n&quot;KRHNCErAiFYqsy3RW71K71DiAzeSN62BEh3Ao2V1fVUIy0Tr4MW1FlxQ4JNIMp4JW6JdCJZh7MUO&quot; +\r\n&quot;NPdZdJgoblqneYhXt8WWiy++BXxDyAJrCFzywHEPTO1EREekFBPSfrtmAEiBoQENJnhMM4r\/vAGc&quot; +\r\n&quot;9hcbBmXm1CocbHzTMe6cLcUoTu69V5Ox67qsy4cYMT\/FH+vn1+GpqTL9rgSgqpCCCQc8tK4q8PwS&quot; +\r\n&quot;F9dwH9ZxxxsF8uEQ9Qs1KYa4IwRkEgOwMe5Jec8fn+oVqvodpuQ+pYuaEDacz37kWX8faCzo4+B\/&quot; +\r\n&quot;iTTviSSvyYLdUkbpjHgCjLnPP0H1CwAA\/\/8DAFBLAwQUAAYACAAAACEAaS\/Zj5QBAABHAwAAEAAI&quot; +\r\n&quot;AWRvY1Byb3BzL2FwcC54bWwgogQBKKAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACck0Fv&quot; +\r\n&quot;2zAMhe8D9h8M3Rs5yTYMgaxiSDf0sGEBkrZnTaZjobYkiKyR7NePtlHX6dbLbhTfw8MnUlLXp7bJ&quot; +\r\n&quot;Okjogi\/EcpGLDLwNpfPHQtwdvl19FhmS8aVpgodCnAHFtX7\/Tu1SiJDIAWYc4bEQNVHcSIm2htbg&quot; +\r\n&quot;gmXPShVSa4iP6ShDVTkLN8E+teBJrvL8k4QTgS+hvIpToBgTNx39b2gZbM+H94dzZGCtvsTYOGuI&quot; +\r\n&quot;b6l\/OJsChoqyrycLjZJzUTHdHuxTcnTWuZLzo9pb08CWg3VlGgQlXxrqFkw\/tJ1xCbXqaNOBpZAy&quot; +\r\n&quot;dL95bCuR\/TIIPU4hOpOc8cRYvW08DHUTkZJ+COkRawBCJdkwNody7p3X7oNeDwYuLo19wAjCwiXi&quot; +\r\n&quot;wVED+LPamUT\/IF7PiQeGkXfE2fd8yznfRDpIq7elkXR+q2FQzPeKaBvaaPyZhan67vwj3sVDuDEE&quot; +\r\n&quot;z0u4bKp9bRKUvLdpSVND3fL8U9OHbGvjj1A+e\/4W+idzP\/4Lvfy4yNc5v4ZZT8mXH6D\/AAAA\/\/8D&quot; +\r\n&quot;AFBLAQItABQABgAIAAAAIQD21qXvWgEAABgFAAATAAAAAAAAAAAAAAAAAAAAAABbQ29udGVudF9U&quot; +\r\n&quot;eXBlc10ueG1sUEsBAi0AFAAGAAgAAAAhALVVMCP0AAAATAIAAAsAAAAAAAAAAAAAAAAAkwMAAF9y&quot; +\r\n&quot;ZWxzLy5yZWxzUEsBAi0AFAAGAAgAAAAhALuBRNrwAAAARwMAABoAAAAAAAAAAAAAAAAAuAYAAHhs&quot; +\r\n&quot;L19yZWxzL3dvcmtib29rLnhtbC5yZWxzUEsBAi0AFAAGAAgAAAAhABFDMvOnAQAAKQMAAA8AAAAA&quot; +\r\n&quot;AAAAAAAAAAAA6AgAAHhsL3dvcmtib29rLnhtbFBLAQItABQABgAIAAAAIQCDr+rjjQYAAOMbAAAT&quot; +\r\n&quot;AAAAAAAAAAAAAAAAALwKAAB4bC90aGVtZS90aGVtZTEueG1sUEsBAi0AFAAGAAgAAAAhAH7BiuVg&quot; +\r\n&quot;AQAAdAIAABgAAAAAAAAAAAAAAAAAehEAAHhsL3dvcmtzaGVldHMvc2hlZXQyLnhtbFBLAQItABQA&quot; +\r\n&quot;BgAIAAAAIQB+wYrlYAEAAHQCAAAYAAAAAAAAAAAAAAAAABATAAB4bC93b3Jrc2hlZXRzL3NoZWV0&quot; +\r\n&quot;My54bWxQSwECLQAUAAYACAAAACEA4tgWRrcBAAB+AwAAGAAAAAAAAAAAAAAAAACmFAAAeGwvd29y&quot; +\r\n&quot;a3NoZWV0cy9zaGVldDEueG1sUEsBAi0AFAAGAAgAAAAhAIvQXzKGAgAAsQUAAA0AAAAAAAAAAAAA&quot; +\r\n&quot;AAAAkxYAAHhsL3N0eWxlcy54bWxQSwECLQAUAAYACAAAACEAFAWpyz0BAABRAgAAEQAAAAAAAAAA&quot; +\r\n&quot;AAAAAABEGQAAZG9jUHJvcHMvY29yZS54bWxQSwECLQAUAAYACAAAACEAaS\/Zj5QBAABHAwAAEAAA&quot; +\r\n&quot;AAAAAAAAAAAAAAC4GwAAZG9jUHJvcHMvYXBwLnhtbFBLBQYAAAAACwALAMoCAACCHgAAAAA=&quot;;\r\n\r\n        var xlsx = new openXml.OpenXmlPackage();\r\n        xlsx.openFromBase64Async(templateSpreadsheet, function (openedSpreadsheet) {\r\n\r\n            var workbookPart = openedSpreadsheet.workbookPart();\r\n            var wbXDoc = workbookPart.getXDocument();\r\n            var sheetElement = wbXDoc.root\r\n                .element(S.sheets)\r\n                .elements(S.sheet)\r\n                .firstOrDefault(function (sh) {\r\n                    return sh.attribute(&quot;name&quot;).value === &#39;Sheet1&#39;;\r\n                });\r\n            if (sheetElement) {\r\n                var id = sheetElement.attribute(R.id).value;\r\n                var worksheetPart = workbookPart.getPartById(id);\r\n                var wsXDoc = worksheetPart.getXDocument();\r\n                var firstCell = wsXDoc.descendants(S.c).firstOrDefault();\r\n                if (firstCell) {\r\n                    var newFirstCell = new XElement(S.c,\r\n                        firstCell.attribute(&quot;r&quot;),\r\n                        new XElement(S.v, &quot;1000&quot;));\r\n                    firstCell.replaceWith(newFirstCell);\r\n                }\r\n            }\r\n\r\n            openedSpreadsheet.saveToBlobAsync(function (blob) {\r\n                spreadsheetToSave = blob;\r\n            });\r\n        });\r\n\r\n        root.saveDocument = function () {\r\n            if (spreadsheetToSave === null) {\r\n                alert(&quot;Spreadsheet is not open&quot;);\r\n            }\r\n            else {\r\n                saveAs(spreadsheetToSave, &quot;SavedSpreadsheet.xlsx&quot;);\r\n            }\r\n        }\r\n\r\n    }(this));\r\n\r\n&lt;\/script&gt;\r\n&lt;\/pre&gt;\r\n    &lt;div id=&quot;testContent&quot;&gt;&lt;\/div&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p>Cheers, Eric<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Return to theOpen XML SDK for JavaScriptDeveloper CenterShows how to navigate to the workbook part, and then navigate to the appropriate worksheet part using the Open XML SDK for JavaScript. Once you have an open workbook, first you need to get the workbook part: var workbookPart = openedSpreadsheet.workbookPart(); var wbXDoc = workbookPart.getXDocument(); You can then [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","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-2054","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/2054","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=2054"}],"version-history":[{"count":1,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/2054\/revisions"}],"predecessor-version":[{"id":2055,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/2054\/revisions\/2055"}],"wp:attachment":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/media?parent=2054"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}