From 4286792300975b9e74d6d531bb2f6c1f08a0bd24 Mon Sep 17 00:00:00 2001
From: SheetJS <dev@sheetjs.com>
Date: Thu, 20 Apr 2023 20:53:38 -0400
Subject: [PATCH] excelapi

---
 .../03-demos/10-extensions/03-excelapi.md     | 236 ++++++++----------
 docz/package.json                             |   2 +-
 docz/static/files/xlcfextern1.png             | Bin 11668 -> 0 bytes
 docz/static/files/xlcfversion.png             | Bin 3104 -> 0 bytes
 docz/static/xlapi/xlfetch.png                 | Bin 0 -> 14740 bytes
 docz/static/xlapi/xlvers.png                  | Bin 0 -> 3666 bytes
 docz/version.js                               |   5 +-
 7 files changed, 105 insertions(+), 138 deletions(-)
 delete mode 100644 docz/static/files/xlcfextern1.png
 delete mode 100644 docz/static/files/xlcfversion.png
 create mode 100644 docz/static/xlapi/xlfetch.png
 create mode 100644 docz/static/xlapi/xlvers.png

diff --git a/docz/docs/03-demos/10-extensions/03-excelapi.md b/docz/docs/03-demos/10-extensions/03-excelapi.md
index 60194da..35f3fdf 100644
--- a/docz/docs/03-demos/10-extensions/03-excelapi.md
+++ b/docz/docs/03-demos/10-extensions/03-excelapi.md
@@ -17,40 +17,94 @@ It offers solutions for custom functions as well as task panes.
 Excel currently does not provide support for working with Apple Numbers files
 and some legacy file formats.  SheetJS fills the gap.
 
-This demo creates a new custom function to add much-needed functionality:
+This demo creates a new custom function `SHEETJS.EXTERN()` which tries to fetch
+an external spreadsheet and insert the data into the worksheet.
 
-- `SHEETJS.EXTERN()` tries to fetch an external spreadsheet and insert the data
-into the worksheet.
+![`SHEETJS.EXTERN` output](pathname:///xlapi/xlfetch.png)
 
 This demo focuses on the basic mechanics.  Advanced topics like Excel Custom
 Function parameters are covered in the official Office JavaScript API docs.
-SheetJS worksheet metadata and other properties are covered in this doc site.
 
-## Creating a new Add-in
+:::note
 
-<details><summary><b>Initial Platform Setup</b> (click to show)</summary>
+This demo was last tested on 2023 April 20 against Excel 365 (version 2303)
 
-The tool for generating Office Add-ins uses NodeJS and various libraries.
-Install [NodeJS LTS](https://nodejs.org/en/download/).  After installing NodeJS,
-install dependencies in a new PowerShell window:
+:::
+
+:::caution Excel Bugs
+
+There was a binary data bug affecting `fetch` and Excel.  It was resolved in
+version 2303. It is strongly encouraged to upgrade to the latest version of
+Excel 365 before running the demo.
+
+:::
+
+## Integration Details
+
+The [NodeJS module](/docs/getting-started/installation/nodejs) can be imported
+in an Excel Custom Functions project.
+
+The [`sheet_to_json`](/docs/api/utilities#json) helper function can generate
+arrays of arrays of values based on the worksheet data.  Excel custom functions
+transparently treat these as Dynamic Arrays.
+
+This example fetches a file, parses the data, and extracts the first worksheet:
+
+```js title="src\functions\functions.js"
+var XLSX = require("xlsx");
+
+/**
+ * Download file and write data
+ * @customfunction
+ * @param {string} url URL to fetch and parse
+ * @returns {any[][]} Worksheet data
+ */
+async function extern(url) {
+  try {
+    /* Fetch Data */
+    const res = await fetch(url);
+
+    /* Get Data */
+    const ab = await res.arrayBuffer();
+
+    /* Parse Data */
+    var wb = XLSX.read(ab);
+
+    /* get and return data */
+    var ws = wb.Sheets[wb.SheetNames[0]]; // get first worksheet
+    var aoa = XLSX.utils.sheet_to_json(ws, { header: 1 }); // array of arrays
+    return aoa;
+  } catch(e) { return [[e.message || e]]; } // pass error back to Excel
+}
+```
+
+## Complete Demo
+
+0) Clear the functions cache.  For the tested version of Excel:
+
+- Open File Explorer
+- Select the address bar and enter `%LOCALAPPDATA%\Microsoft\Office\16.0\Wef`
+- Delete `CustomFunctions` and empty Recycle Bin.
+
+1) Install [NodeJS LTS](https://nodejs.org/en/download/).
+
+2) Install dependencies in a new PowerShell window:
 
 ```powershell
 npm install -g yo bower generator-office
 ```
 
-</details>
+### Creating a new Add-in
 
-<details><summary><b>Creating a new Project</b> (click to show)</summary>
+3) Run `yo office` from the command line.  It will ask a few questions:
 
-Run `yo office` from the command line.  It will ask a few questions.
-
-- "Choose a project type": "Excel Custom Functions Add-in project"
+- "Choose a project type": "Excel Custom Functions using a Shared Runtime"
 
 - "Choose a script type": "JavaScript",
 
 - "What do you want to name your add-in?": "SheetJSImport"
 
-The script will create a new project and helpfully print the next steps:
+4) Start the dev process:
 
 ```powershell
 cd SheetJSImport
@@ -58,25 +112,33 @@ npm run build
 npm start
 ```
 
-</details>
-
 Running `npm start` will open up a terminal window and a new Excel window with
-the loaded add-in.  Keep the terminal window open (it can be minimized).  When
-you make a change, close both the Excel window and the terminal window before
-running `npm start` again.
+the loaded add-in.  Keep the terminal window open.
 
-## Integrating the SheetJS Library
+5) In `manifest.xml` , search for `Functions.NameSpace` . There will be an XML
+element with name `bt:String`. Change the `DefaultValue` attribute to `SHEETJS`:
 
-The library can be installed like any other NodeJS module:
+```xml title="manifest.xml"
+      <bt:ShortStrings>
+// highlight-next-line
+        <bt:String id="Functions.Namespace" DefaultValue="SHEETJS"/>
+        <bt:String id="GetStarted.Title" DefaultValue="Get started with your sample add-in!" />
+```
+
+
+6) Close the Excel window and the terminal window, then run `npm start` again.
+
+### Integrating the SheetJS Library
+
+7) Install the SheetJS library in the project
 
 ```bash
 npm i --save https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz
 ```
 
-To be sure the library is loaded, remove all of the existing functions from
-`src\functions\functions.js`.  The new contents should be
+8) Replace `src\functions\functions.js` with the following:
 
-```js src\functions\functions.js
+```js title="src\functions\functions.js"
 var XLSX = require("xlsx");
 
 /**
@@ -89,132 +151,37 @@ function version() {
 }
 ```
 
-The `manifest.xml` should also be updated to reflect the function namespace.
-Search for `Functions.NameSpace` in the file and replace the line with:
-
-```xml
-        <bt:String id="Functions.Namespace" DefaultValue="SHEETJS"/>
-```
-
-After making the change, save the files.  Close the terminal window and the
+9) After making the change, save the files. Close the terminal window and the
 Excel window (do not save the Excel file).  Re-run `npm start`.
 
-In the new Excel window, enter the formula `=SHEETJS.VERSION()` in cell `E1`.
-You should see something similar to the following screenshot:
+10) In the new Excel window, enter the formula `=SHEETJS.VERSION()` in cell
+`E1`. You should see something similar to the following screenshot:
 
-![`SHEETJS.VERSION` output](pathname:///files/xlcfversion.png)
+![`SHEETJS.VERSION` output](pathname:///xlapi/xlvers.png)
 
 This indicates that the SheetJS library has been loaded.
 
-## Dynamic Arrays and SheetJS Array of Arrays
+### Fetching Files from the Internet
 
-The [`sheet_to_json`](/docs/api/utilities#json) helper function can generate
-arrays of arrays of values based on the worksheet data.  Excel custom functions
-transparently treat these as Dynamic Arrays.
-
-## Fetching Files from the Internet
-
-For the next step, we will try to fetch data from an external resource.
-<https://sheetjs.com/pres.numbers> is an Apple Numbers file.  Excel does not
-understand Numbers files and it will not open them.
-
-<details><summary><b>Excel bug related to `fetch`</b> (click to show)</summary>
-
-`fetch` is available to custom functions:
-
-```js
-async function extern() {
-  try {
-    const url = "https://sheetjs.com/pres.numbers"; // URL to download
-    const res = await fetch(url); // fetch data
-    const ab = await res.arrayBuffer(); // get data as an array buffer
-
-    // DO SOMETHING WITH THE DATA HERE
-
-  } catch(e) { return e; } // pass error back to Excel
-}
-```
-
-When fetching data, functions typically receive an `ArrayBuffer` which stores
-the file data.  This is readily parsed with `read`:
-
-```js
-var wb = XLSX.read(ab); // parse workbook
-```
-
-**This is how it should work**.
-
-At the time of writing, there are outstanding bugs in Excel with raw data.
-
-For the purposes of this demo, a Base64-encoded file will be used.  The
-workaround involves fetching that Base64 file, getting the text, and parsing
-with the [`base64` type:](/docs/api/parse-options#input-type)
-
-```js
-async function extern() {
-  try {
-    const url = "https://sheetjs.com/pres.numbers.b64"; // URL to download
-    const res = await fetch(url); // fetch data
-    const text = await res.text(); // get data as an array buffer
-
-    var wb = XLSX.read(text, { type: "base64" });
-    // DO SOMETHING WITH THE DATA HERE
-
-  } catch(e) { return e; } // pass error back to Excel
-}
-```
-
-Base64-encoded files can be generated with PowerShell:
-
-```powershell
-[convert]::ToBase64String([System.IO.File]::ReadAllBytes((Resolve-Path "path\to\file"))) > file.b64
-```
-
-</details>
-
-
-The `.Sheets` property of the workbook object holds all of the worksheets and
-the `.SheetNames` property is an array of worksheet names.  Picking the first
-worksheet is fairly straightforward:
-
-```js
-var ws = wb.Sheets[wb.SheetNames[0]]; // get first worksheet
-```
-
-This data can be converted to an Array of Arrays in one line:
-
-```js
-var aoa = XLSX.utils.sheet_to_json(ws, {header: 1}); // get data as array of arrays
-```
-
-To demonstrate the parsing ability, a Base64-encoded version of the file will
-be used.  This file contains no binary characters and should "just work".  Once
-the aforementioned Excel bug is fixed, the raw binary files can be used.
-
-This new function should be added to `src\functions\functions.js`:
+11) Add the following code snippet to `src\functions\functions.js`:
 
 ```js src\functions\functions.js
 /**
  * Download file and write data
  * @customfunction
+ * @param {string} url URL to fetch and parse
  * @returns {any[][]} Worksheet data
  */
-async function extern() {
+async function extern(url) {
   try {
-    /* URL */
-    // const url = "https://sheetjs.com/pres.numbers"; // Once Excel bug is fixed
-    const url = "https://sheetjs.com/pres.numbers.b64"; // workaround
-
     /* Fetch Data */
     const res = await fetch(url);
 
     /* Get Data */
-    // const ab = await res.arrayBuffer(); // Once Excel bug is fixed
-    const b64 = await res.text(); // workaround
+    const ab = await res.arrayBuffer();
 
     /* Parse Data */
-    // var wb = XLSX.read(ab); // Once Excel bug is fixed
-    var wb = XLSX.read(b64, { type: "base64" }); // workaround
+    var wb = XLSX.read(ab);
 
     /* get and return data */
     var ws = wb.Sheets[wb.SheetNames[0]]; // get first worksheet
@@ -224,13 +191,12 @@ async function extern() {
 }
 ```
 
-After making the change, save the files.  Close the terminal window and the
+12) After making the change, save the files.  Close the terminal window and the
 Excel window (do not save the Excel file).  Re-run `npm start`.
 
-Enter the formula `=SHEETJS.EXTERN()` in cell `D1` and press Enter.  Excel
-should pull in the data and generate a dynamic array:
-
-![`SHEETJS.VERSION` output](pathname:///files/xlcfextern1.png)
+13) Enter the text `https://sheetjs.com/pres.numbers` in cell `D1`.  Enter the
+formula `=SHEETJS.EXTERN(D1)` in cell `D2` and press Enter.  Excel should pull
+in the data and generate a dynamic array.
 
 :::note
 
diff --git a/docz/package.json b/docz/package.json
index 2dd048f..36f4148 100644
--- a/docz/package.json
+++ b/docz/package.json
@@ -26,7 +26,7 @@
     "prism-react-renderer": "1.3.5",
     "react": "17.0.2",
     "react-dom": "17.0.2",
-    "xlsx": "https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz"
+    "xlsx": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz"
   },
   "devDependencies": {
     "@docusaurus/module-type-aliases": "2.3.1"
diff --git a/docz/static/files/xlcfextern1.png b/docz/static/files/xlcfextern1.png
deleted file mode 100644
index 15de71e266313b2a26c3d5940de4d1bc60d2df36..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 11668
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

diff --git a/docz/static/files/xlcfversion.png b/docz/static/files/xlcfversion.png
deleted file mode 100644
index dc648740d01beaeb422d94048b1d039f5a3e2cba..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3104
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
BD@6bR

diff --git a/docz/static/xlapi/xlfetch.png b/docz/static/xlapi/xlfetch.png
new file mode 100644
index 0000000000000000000000000000000000000000..01dbd5b4593575f6fc4a1f64319cd2af792bc82b
GIT binary patch
literal 14740
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

literal 0
HcmV?d00001

diff --git a/docz/static/xlapi/xlvers.png b/docz/static/xlapi/xlvers.png
new file mode 100644
index 0000000000000000000000000000000000000000..4bb185e47891caaab647a3d55d9c27658515f5ee
GIT binary patch
literal 3666
zcmb_fc{E%5_CFM*rE*<kS{0?Hnp&w2rl?SAYSEgdrbq{~P(y_FB8VDNdZ}`SD^Fcg
zH5D~f-Q*UbX-pNGlGYGY(NObC@9pom-unI4TkrjG|2XID&pvzav-fAO{oU)NUbed^
zb^v?;001#7OSl67@PT=9ov;w^ZvB>>#e49DJ6yZ~RQDa3<pF^JQ(IF2sL4FI?JdZ|
zA|aNp;Q%0?^6lcw{Iu-Pi!^NoH+8z>wNTi8pV=*M!97~Ba_HtWTd<OSNu9%CW&5YO
z2~N!OT>hK$u?x4{^&Q9_LWvVWCr&RC283Q^!^155wvm=J&48{|KGIY8a{ml_;&M*Z
za{Jyc2>@^+M81R>&9<E_gdhO30f_<dfMqr{lOKSn;Di9;Jrn>r|91+tUpKjx%OXiJ
zhky@mg~W}GRaKzlDg+GR4t>kyzY`LgLdT>YIg`_z$ql~~W|wKzXE~Ys0Xoo&X9qc6
zDwphDt5_YY83}xl;3dUW-C3S{?F^-od>Y3+dOfb}#<rY@w5Psb;eI$DI4&Bwm!USi
zS~u7b5Kwz->D8NIqd;1Jy6k;g^w>Ts9p0L;f^I2|&ex{hDyZbl)Km@oU$0efXdz9`
zjFNGfn9;y=+a?8CjLzKq+mC(6z=W`kA<;6bV@<2(EgAEA{HN9@4KjDG5lE=+mna#c
zH5Qa2X(pNBbTh+L^&TZX4cT=TTtS-LVe9)IWk2_IKR}IKG3PL@h?F;K@4E!a3tg0d
zR6-CtN(@cwQY2>ksTCk~V}su;hjH(S(9aGtkn?kHDAl^9fuXkXP&UfquwF5{GPAUG
z_p@)TAx*e|Fb-A1F-V&mJu$I*GWCmLLRWQs#~S-$>@1g3t)a9nWlzwP^g@>TtIT;g
zL-fUxRS4xOJ~<kPoIg7%`^<RSIO!;pqv7RKEG9TlXfPU7oON+)v~XYzXcan6Y15th
zd#LBvFj;@NK&MV5i0!?6^az!lQ7W~>RNcCI`u&K$>Mx$qlFc$MHT*FxFbn~3Bb{VU
ztG_;0V~A*fUxUb#n?9{uI{Olj)Z~gN$(LT9yyH8kQ~<-QNLMF+E{HK8X*VmYq*JhQ
z@}1z9enh!7Z<78$MjwS~P~QYw6y7rwr{m=>W^bn5FuCz-C{DlOtqmli*pTvzeYj7Q
zfpah^#v?07Q@Ck3u)x37e->gwe=u+l5xNPoKMLBD=!Zi$!=;Y0)qIQ3eKk~wzg;OF
z-p{OieBGDwvVn&5T<Gf_F$fs73tx<AoKOWTL=P}SF1^m24|=RI%2M&r#WW+dSXu<}
z9F#y8!Lq|Op@VqN$Ry;5C$7={ekEq0MvG<5Sa!xQI-=+!LnM>x{!TafT)2|a@WnWV
zi&<5uzKHfVLtl+td%4(N7&Ks;O1IJ?>>4*$=hRRlYgbz}GG`nEJQixjQWJ@Eg<vc9
ztk)fjBMk<5z2=ONxKSx4hvpE`J#P}S+Jrte0ls*~_8pUqMqGJyKX5Bb!!9*SmPy)N
z#x>dn)P+_Tn?ZGcT1!TkPw(zK6HG6x$t)G;>T?NIMYALJ9kRa6`JT^gSq3STc}svU
zMLet0`c8>BOSd_RkqtpVwHe>pe~4ZP3Q8=LU1Ok`WjMWt(OkqxLv9J??fvms>ErnN
zxZ7^d_WcKmKlmXhk;bK|I$$I;jh<A4FI5;n`M@qA*~Qo0#AGINs`G>K4WHHXhcH6}
zER*S<>y)KTp}rq)f1m_Cj!3L$LH8t-z)68eFcq23t!>6~AJOKAnI~)U2YojOj<m$a
zR{LWpWzm_B_Au|4QpV==Y0u24Jr+pfIrpYb@>W&i(za^-BCzqoJ0MItV|0C`+Z}Vf
zQj2Arx6F1iA;sS!8of7THTZjaPG(fC6*c6g4yp#ma_W;=pN{BY^N4Pg$d%ZPRPWzx
zcRshzSn8FA`l*94Fx!8Sm0HMLof;C#Bf`sI4XyP8&TwU=E-v(sgboZZHUG+4Oy828
z=hWoBXAWsuaPRaQ=Tgb(aM-3?;&4rF1hsEOyg%Qcp|>78WgXvW$GP-N{KAb*vkRYc
zU$3RxvCj0WgR7n%8z*>woO3&C?)bLJp@>|b_sIfZx{kLfQK$_cBg?vz*Bc(B&0;df
zNH?dR&3Xad3me;})mK{UMLJ0)$9I`url*Wc`GCV2_%i0mrnGhQjF<rLY!qI<{cH1M
z(I{pa3<}hCD&}z3PJaj_@bg}YZdF|gzjYjwtS1EDr+bDYo@Agf<D9v_h^F>!CG4jI
zu!#RJ6cYJ>=Xpt1x&WYP3I#y&@O=RN?-dAgh_*QOHq4gLbvXCcz@rLNXnrCJ#!rWV
zjIq17HDwbn{2w()%n||??u>6gBP|Lm+4Sbn1|S8z(SjtRAi_8yWssP_1cPKxxyz^K
zWMb2r4~7%uzN>kA?|;<=%JA^#2<i0SJG;Z0G_O@|O)iJ%w#D1^dO?Ht9JUwxu^}r|
z>^5V2^YDJU@N+oBr%7W`e2Ux42fv3>24%ps3I<CjHq1iL8cMHMHsJHtR}07EzJ7k`
z^7P&1)G0Dn$M{iE@wq1o<?n55g@|;uq*}LY&s_V$koQoa3<2T~pQUN34*CyWX+F`2
zBlw;%ZJZFDS6QMrQ9as&7I|%z8Qd;+Q2#I}1IJ0JIOE7$Fm<l9G2=>8D9(bPE-WfT
z%bW~FOVhH3$M~06JUVXcL%=@_iaQ3E3(@_Ah)p;PABw~UC_j#(@K??Nad~>YC5m#F
zCKU7-{wF&HHs;}Ki#qM3d}hka?-@)GZ?vJ^j0%d{Jwal`Y#5Z^%-m6@-9;)hc{(^B
zf!!J8)tG?#9$=ftqfXw#cfCjU+J7XPLM3n(9nR1c>QybdJ?3vremVp!0#|~hO@*il
zhLd*!x^v`q6-a4__>JHHHB23x?dSR%a&uZy14J{2Y9lp{@x0QJu9|}iEisw_`pLt6
z8I8d#@V`>>6RM;5UAhpQ*K<C4f&eiQ@*;Yb;-U*A{Ylw9)Tw=csUhGj7&JtxeUDiT
z2zhhpPLKi{T`3V*=Rj$N%ZvD(=7cXN{|8Dcr_Tr;>&kPAy^A_!^+fR4jpKtwJo}uR
ziI#3w^{O}(LYW&R=bFQU2=TRYg*2`#_wO+kRe!U(TjIhRuisr;86R)HGh%|sd#>HT
zg$|8!U5dd*U+xXB!Kxv`hv)6<?T6<b(1n9-h3b2ri%vf)(R9pWR&sdL)71#uLc8l4
z4S6ATr=t-?BMaPf&g<K6q!T5~ZplX#J$t+AVHmMiYOh|?^ENy!*xu_rucEJ#GaDt@
zz2o=duj&Ly79=blO-3vg58^+r#5}IQqyNz7NnUI0Os`jj>zLH5NUJJmn#aI-u1rJb
zszwD8TwG-H1Ds$rCV12CX07FyA7e)b+m1g)tLp~lIqWhDrqKG?&)1@DC<@bBUE_os
zJYG{PVKghPLXR!3f4;Y#aQ))yd`WzVHFS&n=_eWKClA#F3|~62CC3&hgM^B|?Bi8$
z|04I(LsVUU5=PO)^pFi6Jtg66Uw(ksg|NhJJC3BeUSyuXeK<bOf?x--Rmnd1@dOB=
zc<$7fA@$CM!jt`5u2|#JW9xp+ylx(oQM08(CC&wt8w0AyJt^r^U*6GY=T>rV8XT|c
zCm^MpR2hPFKZzz-YFfF?dX!PF>=$aEsEn<iFGp`!Vd1q=zBZ4yKLjs1Lp90~8kGu*
zRfEBp?&-d{1EF&fyYjYrEfcRkIDO0A1A<6|_WZu5JEF&3xC&E`2zoaq`8~dKVsd<I
zYunWJLA8RIcCzP{69sqn?Ha45JdZhbl~+Wl)E{$=N+oR*A}R&2$vHv#$alT8rNIWR
z(VWk|4MMz9OcEF^4yxN>52<JHiksBVQppLUJR53f1@5$UX{Ky46}hCt+L^BG6JRcv
zYqoA;oF^U|UlqtCG3IS|-W}w6hfUYhQhHXJgHJCO+5E`s=JtWI;tphCtvus(1@^hd
z+w2Fc=p5nst${I>OA&qsgs<F>pLi3NicPe^`f>U;l=N>{u%moVG?Py+SgW^iDi?Yj
z8gR9mr>))Bhdr@@#wOIlNfzOu*nc-Q7vgx-i4YabXIgc$FY%bLsxkE2{0~5y)sEGH
zU~G=xjV|?x@t_X;s(#&qVD$~N8R>sEqXMoQ92fH~BJv93@`Wcqe<TvV0aGaa(vuw+
zG+&SoQpY6=@ILJT5)+Yto0UPp63Vz_OH-(_B}gp$F3K_s0zM{4&w}uL4iFVh@1k&$
laI?Dt|IX2>R>6E38)U58wa-JSnfD(ESee_wt1n!?`%lZJ&Yl1O

literal 0
HcmV?d00001

diff --git a/docz/version.js b/docz/version.js
index 64be04b..c5b13f7 100644
--- a/docz/version.js
+++ b/docz/version.js
@@ -1,2 +1,3 @@
-const current = "0.19.3";
-export default current;
+//const version = "0.19.3";
+import { version } from "xlsx";
+export default version;