From afcd7f8d7ec40d5652d769cf722a4ebe7a155fec Mon Sep 17 00:00:00 2001 From: Gabriele Cannata Date: Mon, 24 Jul 2023 21:36:59 +0200 Subject: [PATCH] lading and saving from vault --- Book1.xlsx | Bin 0 -> 9250 bytes SampleData.xlsx | Bin 9390 -> 16536 bytes src/Views/SheetView.tsx | 52 ++++++++++++++++++++++++++++++++-------- 3 files changed, 42 insertions(+), 10 deletions(-) create mode 100644 Book1.xlsx diff --git a/Book1.xlsx b/Book1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f58e20df535545b2cce3d54f8c060a6629ba16db GIT binary patch literal 9250 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 Nt>D#PhU~|`{{adX`o#bM literal 0 HcmV?d00001 diff --git a/SampleData.xlsx b/SampleData.xlsx index ebc3879f34d2c83973ea64dea36d0d428d727a23..63e0f683cc48c7898d517db7d366992dabc7805b 100644 GIT binary patch literal 16536 zcmeHO+lwSu8J}pp5D76vK?I>_P&8qtrl)&mXU6FcGu<=UWOp{>PG?ObqNl4)ch^qc ztg7yrP84zxSxgkvDEc7yAVd%~5XB(z!N0&a^~sl9M5E*-FM^1_@0_}w>gt}$4vLyt zdaLT3?{>cPec$=cZST@MZ~eer^7q4AzWmZJ-Z3{vzYnAE$ksm>a68lwz2Knhc?Sze zj=ex78~5T(8}T5tJhxG)E-Y3w?i!wHx&21vq0Y|yYDEhp=9eG6!$xHgMgF?3hsJ?xLpW1rCew8T56Z83(M-^`*td6&(^} zG%8Jnrgp#Cs08<$)r!^```~;$ZLim}4BqyPp~Ky%goS8-IN&@2Q5N)h)Toe3L{X@V zN0oF_(aVKdI!|FDD2Zo+h)-SoKU0Rh3TGGDP*-5O>4A>#O$FZdWI?Qq_ zn#&xR@PooYwT|fc=0;3>+lC#uQAh=b9qg0ya0LUd!Pd=#Dm}t+*s=p{#BA8E<(l4M zhabV7Z5BqTXjB%(A6c-TBH7Ut+#KGH_>1vk1oL1?@C^FhlxcORzILIV(iZ@BGzqu8 zz1`Zbrt|~=GYqs;%95v9-&w70B{XwD@^zASYjJt8uEOW&*Cu3M+uGV%UW;XsLECpW$`08Q|o2#{j5t3?RHJ!Zg)Tg>SO79$31 zowHnxEHc80BI2cmMqv4fxDWUY9+A;|^W~qs`SOd}n=ilc%2Pjo<*8r3^7PZMJoPh4 zOF_KI+ybI>-S7*%rK4NiyA88A!1U<1%DA-x?96u>KE zW|zTjaaDQO0tAmT!25>R68-1f9>lZRm$&VvEko1=Y+Azqbs`>s89 zRLCH*4$5d=W}cUaYYADo&;wDH$PEU(9I}Ml~XE zQf9RaF;TSbEX=AT)QP!Og=iuuD%{d0lZwT>94b$nhQd^v$ZRy^L(uXHmbQpBk}+m; zEMg^d;G|nftI7L0cTwDG*^mJL1y={C~8E3wAy2R zQ8;PV;<3}gX5m2gp{Rohu>T$)ONMDns`}r_>(P3b9}z9GX6`x<=X- zRcdUFBTaryOTfu;X8QvcM@w3rNjy%13sX&H5MMd*(6&<9MdME26!Q4uOAS11Nov;j9r%R79aIHF1&n0zDZc z^9`YjEK8~7Gd|XVH2M$YpA{H3 z7iLTYYR9{Z*s5XsLF!L~RnJpYg9TB5ly6<+J+e?56OodtjgwQ-S~6Ila~72HEhw8L zJ4t_^QrT$|rLt3e@jR6sYgo~>ESsuo^lZ^ZQPfN3A);f%Mpu3>%IjW7N4K%+KeXlU zROsVN_<_F{2HSwIsS8Cr^1 zE1NW^h%r2&%F!}KUOFB*#SokkvQuQSpjJiz`(tt7rl}p^WssGvCg(~tWxF?{vJ(hj zuCmgZ&q-A#CyFyW>I^E2j%KSY))bUCX?WP-3>ccsJp@9w8Z)df%9yK8cfgF3p_u( z*1@J+2>W!0&W;m>n&AyyP^Au(MVfrjS&HSAiY8BDv^*2b0U!Iq(2G9#>PugJ?Q1vm zS6_Mt4^5U02J-p(_nwk3jw7G1-S~=p2}Ak()AQeqafCO-Vl+3%DHLg_pt%t~CY`=2 zwpI<#_5w}xVLVBuU2+N0!d5}NSlz?Mg*}$V0#6#IERYUL)*v~E2UZ;@9;5=07g0fT z1EUa9eRl^RG`P__sjyLTakxb^LBbsajd5#S#k5iI6@+!d0N<_`m^e(6?+97c+^~6% z%obVQfS!@(*1S5U{S%b&f)x$l7_E9g_!5Du@3Dnp03W4HR zNl$(d{X8{E`=-fiN4=OC^L=}KW$1J{HjwGuPu#bHEBNFZqckNIDn9veg^;l|l@jg_ zEgNZ8Ni#sxJjxU!hWLneZ7vehlnaz%%E7FYRyHcx`z|-Fp|h4k?O7vF4rz@__Aa67 zqVKbyPzXZ5efHUZ-ar7N--l!nDm`a(_IQ+%JGXFzeBx};sCbIY#CEt#=gG8y_pr@U zU2h9l5rGg}W{2pn^j%Aiq)|oIw`qL>+r|MQIFENoIVQz7gI+dqIt&Jey-1Xdn)gTC z+0aL1;xWLM3efVxNCjxA0H2D+YJFR+-wSZUEQQb^Pbw5e87b6~BGhFT@*qVK5L*O0 zY9d2a%UiO%S}1Pk3HF*>OLw=H5b%gZBmRintO!JDlN1O?#&TM^Z|JIQw+M37tksv* z@|G+Iue?gzd1{cRc6Y0mN+UnYq^YOU)D>wqt$>aYsywy`dep2g)#_?RE3QyW+j)`@ zseX40c(H=yN0~^=sYqA>%qggY{b9SnArH}O?mx8q@%GYsyZ(uUO}<3oB~KMf^Tjej zpSKXp)0jk-oR-G^vb^4sLrYo#C$Re1+U4eU5O_i1lZF69+x>_DHbXiNMlPa-Ur_x| zFVM(NLl&af=bxB+^2R$6z3{t3Mz8#dyt4F|Ws5EcWH1w)G)hJT5Tt0xhLTx;~KMv9Q!%=7KS5jz_+bv z2QDT}0`aQl+4}>lC%-YTXYnvCF-1YkbHsr}L4k!K>_)sA9uMdM7&y>qy^9vohc4Qy zD-9M!yK@9RIgXd$$X2f{yG=By2hG^b z4{6JWQizPb4*tpK27RQ`Ay*S(BMK;OC1{bfrH!A_+`ypV1Et2xfr4>HIZ-v~uzA}? zs^@~!_J4JKaqE`3Ir_y;n+&ZtH}grToSW00TcVLjwim!JOnyb2vF!}3@YC@zcS_Pk zCXr+ju?_CiJPryMb(D1AJy^H!A`YBWj+~&SN9GIae&G6@f4_|5_4IomVx&A@|6g*Z z9{Gfv_7o!Lsm|-ChNv4Dc;@}ot+I36$vjm+B!{{4XStI@{zxfKD$wzV{NbS7HMu!k zB+OH0Nd${HKZ#VCGyULRMqEHjU~KXcc`4=usq==XjYU8>)>F=ro{b3suIh7*Ho ziD{^9K(T$yE1DEbWH3NR7_G}f@tTLtzgzWYRRG{c1tbDe z5LBolcB}{&F&^ygv4GZEQ@~ham}4ffkbx59L>!?5$ulpXXfikzXzN*L7lPXFzWK#F zAI11VzdQ5xMIL^0qln?J6OoLy98T5^?7N>b3MGlgWZaR4W*R9;e;C-}+L3AKJicb3 zR~M=}))nZ+(z+tY!;jkveKo(ck zAKtwz)-l<<<QjU4j1P)+JB_4%Y5++f!*jBVyCDfWm1pzRL2s+hb z2rt3w(p8+Pcq7+baKd?hgp6xJxcmYTSTJ627|wogyR>Qq5W3J)PJc90E~2l7(Rmp{ z5yr)hwFTg}aF8e2_XslOP3Ss)K}9$giTip~UXJ0@Nf|{Xi9zM% z7=5c(ib3V&7~CnxIGU%La-74dI8;-PbKNg*%XObmYmBHWYyS+KXo><*K20)FRmNrp zj&ByVmUk1XE!P4T^x)e{m*x>m>^P1Ql>TNHI`4@c@j+ZK4J@2Rqp?jU>3T8qITg2p z*CnI=O+kdc7pyfa)=F({Jqbc5kU|;hGDiHcDhcUt#+};Hj8tb ztR~6C>9{8*R+wy@h$F05>kx|)@>lT1b1oN-CY9-?(P!Y8V%M+aEFEf!9xPU1Hmo01&81c!7aFdotgLE z%w*>K1@GOpx@y&`+NbN@I=l9%eXptl+!I^?0ssjB08j$5Ssa}0VE_P3cmMzgfCOtG z?d;@k<>YRn`O3x0&4|t0(E*tM1ePHe01LhTf9=0`1WF<8%AFi&VMouKrBj&gs$C_J z%I3|!V9{}s18EM4S(WkyNap9)Us^~Nl}hcsS0lN7Y^(RAt2VNzVtq0>oa$g0ql=&| z^!}jO@@R1DF58MQRI5V(m3AJkYWD2Lu4=*eOH37OYH8eB=?Zz8YPaHnP~mdUw9y*jEm`Gwwf-QfAW9L=U!4gJ=RJQ-_`gmFe`qzLZtKii9|q z-E1aNkf97Ha_ZX0^S^HQE|hLMt!w8zN|DF;9PB_T<%flCcAT}E!&WMuX+W^`Oo+iq z%NBW{Ur8E|VH6P)#XfK*jjHS!_2>KVV(U4})@`|KsL=F(Lod_0l9ImEXB}7v6U{wU~e@rQjv`yopjXAn?V))0)_KG$e~{ z^rV=Y#368U;Ff^9f%!#|*xf$Li#49oXlz_z>RPX|us1iZ9*9hIpj27c($y|3&#CjN zi*z~pR}7vl@k}N4MR^MS%ha+HCo-QfN7!_Tk#XLWhT)5*2kG}H=`ERGmBUO)X&jV= zRo3z6?k11C1y84b*g+SM5LDbBPsi(XGq;{C_v>?@JijK^(y$SHuoH?|C#4xFzZzpKXPYD-*JC%G)2)8RIdI`5`Xde z^CCC^01+7gcnTdEZwGcSXOO+Qv$OqA5i8YlbY2s{dJ5qZD{OX5oxpOgNor{V5%h5SLJi=>|D_*m$B z`+{Lz<-MWjk5y^J(ndJg(}HYzO0qZHST}_yIbg#>La-s{MG=eytE>;@CLfPdB3?nq zTCn2_^ie1aukT3FYKY}UQwbVG>IcC z(#vV_tSeU5Gy`m^sr|9Vs}x@^y*CACgq$XjCMVMu+j(1dw>+)-5vRMvOjs2_gdX%+ zzwC8F^V9qWIj35&R>O&;1&{HmW6xV6onrO(vG6y+x@KK^5jy5!R(ZV5q&u$lcT~VTE43?<<^dOUNGkVmYm#ErCYoYt&t_8D zlOe|P*h~@D zmiJuK(zE+`aAccRP1ZMlVPxcc_$E#`kkG5_B>Q_+AP|n{$s4C5b}4>%4q5ykS`@AZ zoFqH!IJmu@LWG2oIWl1u!f~82_gyZdz#nAd@)nTVn6LbhIVQLo&u_c6&Q4P;F)LL% zZf`A(*7JlyOg4*H%^!8c2GMS0l*%juOUonsjEzwRTVE5=$On;wN+X@&<6w9}=+=ZY zJ)=Z3vimfiyEnE;vgO6`KH;z1*6AFDY4=T(qpX4&3|%rsJD44nzhU76i`alG*QpL0 z7}WLv+$_cnDFnE|2&xgz1xq0pe@NFyVSn0^4ioS(IZ4LB#FIe;AHy22CX6Wo(S36M z>BXKrVO!{K3@WRKD6a0Mk{`BFACT_Cz5&r16-2N34-JSPmhFkqg5XIrkoUdES zVEmosd#vwZx=9Dr@*eFEFWHk%yr7i*JE@ZpA^T6DbQgybn;3uu110tE;`e82|62%Q zphYV5+W+oWnlxzF#ew$hGV~#2tkspvUp372<(PV!mt2@JHQ)L(~ypY!n=_XyM`DXSSwwnsn?E z*9%QE#3G8!Ltr}>oZq9(sfJU!ip~mr%sfi4*s-5|CuXh$O8)S4e1sP$K7kvq9wZK_ z14iY=4?o&B72ENM3g3?IsHRuV&FTEu-d8=d zCH{{&r1xs(nFKU{JP-i@Lg*F$5(YOLD=T+5_TP4#KNTV~$-wy?2WIH9&MsIYfF40= zJWz^>nAmYydvUPIBFwa#z)qOI?4s>R0`ghiIA0zZi+C&ScAPFwmV$O+n#IuwJYk@M zv2n7?yYXS)Bb1|TL8>wUkdI<04V?(+OahRhg*iH=7Q2ju&-lP7jXm8exC_nydHk}LkSN!$HUO5=_^ z)7-OZPs&L%JfbF{BL{&28F$2le@?eHb^DgEFa}XBS|#}Cii-Qp83I}PCNOb@m9+Ef zyTL8d5W~98c-dnUhpRm6{xfh8MbU;mb$2o|^L1cs8`4{2v-_i}YvoD!>n6VdHXS{@ z(49edq7Nku7=x}igsEx`Utd-W`1Y@XEjcUTmt2mRDo1e(VovR(w#~&hw&DXrZZ#3J z%fP`;4q2mU$MMGho zah3>*cVyy$*=rZ`jfg~ekT#Vko(JTcF`3m!97>v;$*JwBm2BT7rj!5{Uqk|;lrgo@ zGqTI!5(|NSb2?wTZp+>{n%+ypYf52RYU3Ez?7+|+J|v?7OXlRc-9mi(fC4s!fCeD+rJF+mj8&eb0(B# zTtbk*``CVpd}MonIaqc3AHj4WY(fz!I(nkH`w$Juet1UB(84F>K_-?2&==z z&6@HXIW)pXn6TB_Gb&3gZZBkZ#r~0X?F5*u%23Aj0Dt-lzp>8U#>&x({kQFJgxl8} ziYDR5Z6ml5M|1PK<6V!ZU0NA&NM59|%z}{C)b6Wkb8{s%li!!s$}MM(P8w+9 z(ko;?!7o_EcoKREtrTYr9v{18D=sFVHbgc>jwae4vdNbMF1NUIb=K5pV=Jw`qeo#! zeh_FM*J%4B9Ya>qBptCiEy}f~SQ&YCh*=R5F+nR0GNn~#`z&o9G1y@Rd_DJLXvwjn zv&eo*)X$RI40<0N0TCZJdj@UT)b`Z{WjJ}sTB9vDxIo}`Il6Lo8X2D`#?u=Mme&g3 zg~HE?CEHNY)-i6$jk@@f6hPbK4bg<$iK3n}v8p0&bBalQT>*3$l+O~qLS7K~#m@@M zh)R>HR&g%WA=h@?zoe>%->}Po&_~=@4U>Ipj!AE!AaD<^jJBE+shz1AisTj+I{lb3 z*F>n{9@9hUTPNnGJ8H%~xYaPGLuHymwl81G+&8Rso@okWl~ip1jS=()iP`G%1maj} z?d%%tjn5E?wOnvbEVC$YB(RyO>5~l1kma zz0z_sp1OLxEq*y+ELLGPY@dFr-*bL(E@_wE>=!gZcl2XBTc!EaCO0MIa1g$`Ny^Lr zN%L3?B1h4@S|fdf9n3J*RR(Vw%L0U&b={RtoSthgeiTh#+G_DjW|ZQ&rZ+cTu0=t( z2QyyIXxXjusds$rgtB!*X=BDmRQRN8Z$`sd={NEpw)I7imdYmg0=6~1^xhya%uW!R zDZV68^B`0+!H~i=wtj6qo31`zB9c)^!tw!x0b9d-G!DS<7a)okxl|g=8%RLhyRlEP?4ME5*9XzjX^eIWJ6+e!wE!71oGW2E_x%sPRXV*2YD z63i5DT`}E-`@Ff@scpj+3DvTdDS}ot%3U6cyO+sIX=X_~S}0=UTi}GY_^}Ffb=jE_ z<01p2LqNMjoI!6Z@e(($z1BSk=#!31he5TP0$$GI!%guuHtd9YV4v35LGprC| zvo=i45cNE)+LBODLhZr(O2b_brl%{WiE4%z6MHu>hGwJBJZ&p_r`ZnIH(7^5v7)0D zO}-M;tlq4(8qWH;9$^8qZfgc|^&CCzLSNR1GCXNfemA=RO(@j3%-{&!XR&gOROGmY z8XaS9%1L#PAEgFVXMki!YZdTLuLv?v{3b?dus(t)NH{@aQ z9Bl|{7xo|k0O-HVubcZT2P?Oqm2QF7ywf}fnm%7c@J)=g-CS#DN&Ex(iPK!HYWa+UJwP=QVvuFXiyroNRxBNC^1@g$zkTQsmg zLoku-H#IG_JiNiPeu_^aX#}#2KQey2JXj~R?MKfNv&sR^oCZuPQnCnZ%_xFk0tVBx9&SqM zWqn?71^T5EZ;BzQkJ~*6bzO6Jhc+$~IumBIH zv1H*nN7k}QGk+L)z5tOZ(CCYZk-dhbbN09j>U6X!GP1;@)?h`thQ{=iN78 z-N|qCcl^z=pKZHV^^aqdN}Y>DLbbQ!ZA#F=!MOfUJv{btZT2YX`^+_qtwV+0$N0rt zT~$+H!8Us2#(ooKBh_hR#5UDFXxPt--?`gbLIy>_PF3hCd3A_pvT^$@fz9!j`>!_6 zLyv0qfLzeyvqdZ=f3$Cn@%Z}0+Ml^aI>nvdP<$_$r^0x-3c^=p)5HFnyvg*Oj(>2f zI4#`O`_zrceTf6qNQ4}Vsf4fn#gt3BN;>M&+8|6WJUgHeWt7}4r+4C5D6%8B9_^he z*ZXQyz81w`s>rn|_o`;4D9bLAX_Kv-_qZ3wA~Jt6EkqtH}44Zd%2!y z1cZi4>ivpjyO_ibnHSvKem-u4vjY;w_X+Ed=$&8E7DeNBNw~vh@U;gKaMj;7O04e2}kz*`3=J2J>anbOa?x&7YqkXMDszZWjQ zOReJV%XjadJ}Fk>jtm7^emLe`U#-YmU5TlG+HUh%;9btWeR!Ap{4;XiED?+HlT7Jo zUUKVVTMDkHX2sVTUGa}ag9Hmdz0JQHC7p8}>-o?#3(z0t@BOwgbFh%MF|&30NqNIz zrJr8~@GC7VWF7mCcK4D6wggf1qj0a?d4ep}xg^gnWJgh)5Wf2!dpkZN882{tiY_qK zn*t^%l9Dds8V(nBV?41|3b{yBZO0+HaT2qSz4&fgL#;*}fj5)c+X8W5K^W2^O_T@4 zGHx3#xhIRzO~M&;kv2Q*`Y=l~2A1$RI8Ag&d$c^D!We7u_(&|0n8oDE6kUDb9gG&A$Zv<$iGpYRT}Kfp*>kF@dEc9 z0Jo$;^(|~mDgG)tO6j|(iDGTlTv1&fW_EVa2jmiTk#zkKS6GLY7X#QIP(OPpj9DGVRym|zkTPnx%KTaA-h*72vqhOfa zhLN}>j2s69wFah9$+yF?#605U%$xe6^y|)qO;A_7Zn+;c;aS?J7>FdcV>JR^zeJ1<( z)A7*k!-LvJn19YbGZ&ZtB_DLi{?#&*mYpX!FngC1uPCV6DwGj3R5!h)$R-jbG(VG! zguB_63f68mJ!1unD(8DL9(T>(U+wOVWT`BY3+bGt^&yx7t0Ki>Zm8#euC5As2$0oE5Hyav}Ko`&<*iw zZ+73-Gk&uf+XeTo;!|sswKS(-xzB^igiu;ge70wAT2Rdm;k#-C0hNz!`pK}NVbLmx zAH=#!taQlN;Ew`fZU-W@N9Q2ijTLnPLPcPMYh-=( zenKlR$@9CXYnz$gmTBJfnFn9^TLiaAWrj{%Th2j zO@EgJ7+6-Q?EUlFj({Bg8ypz{{aO6vQd5m|36azzsC91`28c&8rpwu;%_$auTg$Avi^vo3l&;uSAMm% zehu(zDgH-*X@cJZ{85 { + .change(debounce(data => { // save data console.log(data) - XLSX.writeFile(xtos(data) as any, `C:\\Users\\hh7gabcannat\\Projects\\Personal\\obsidian-dev\\DEV\\.obsidian\\plugins\\obsidian-sheetjs\\SampleData.xlsx`); - }); + const wb = xtos(s.getData() as any[]) as XLSX.WorkBook; + const bookType = resolve_book_type(filename); + const bytes = XLSX.write(wb,{ + bookType: bookType, + type: "buffer" + }); + // fs.writeFile(filename,bytes); + app.vault.adapter.writeBinary(filename,bytes) + // XLSX.writeFile(xtos(s.getData(data)) as any, filename); + },1000)); (async () => { - // const ab = await (await fetch("https://sheetjs.com/pres.numbers")).arrayBuffer(); - //ctx.sourcePath - // TODO: take relative path - const data = await fs.readFile(`C:\\Users\\hh7gabcannat\\Projects\\Personal\\obsidian-dev\\DEV\\.obsidian\\plugins\\obsidian-sheetjs\\SampleData.xlsx`) + + const data = await app.vault.adapter.readBinary(filename) s.loadData(stox(XLSX.read(data))); })(); // see https://docs.sheetjs.com/docs/demos/grid/xs // https://docs.sheetjs.com/xspreadsheet/ // https://github.com/myliang/x-spreadsheet - - console.log(`spreadsheet`, s) + // TODO: support other formats, not only binary + // TODO: save into code block? + // TODO: support $A$2 }