From 91038bc14c770f95dff31a10dce7c536ec0cabd2 Mon Sep 17 00:00:00 2001 From: ChronicStone <55083156+ChronicStone@users.noreply.github.com> Date: Tue, 5 Dec 2023 17:58:08 +0100 Subject: [PATCH] feat: add table summary support --- README.md | 7 +++ consumption.xlsx | Bin 57855 -> 57873 bytes example.xlsx | Bin 228043 -> 232557 bytes src/index.ts | 126 ++++++++++++++++++++++++++++++++++++++------- src/types.ts | 19 +++++-- src/utils.ts | 13 ++++- test/index.test.ts | 7 +++ 7 files changed, 149 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index a8018ee..7bcfe20 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,13 @@ const assessmentExport = ExcelSchemaBuilder }) } }) + .summary({ + id: { value: () => 'TOTAL' }, + balance: { value: data => data.reduce((acc, user) => acc + user.balance, 0), format: '"$"#,##0.00_);\\("$"#,##0.00\\)' }, + generalScore: { value: data => data.reduce((acc, user) => acc + user.results.general.overall, 0) / data.length }, + technicalScore: { value: data => data.reduce((acc, user) => acc + user.results.technical.overall, 0) / data.length }, + interviewScore: { value: data => data.reduce((acc, user) => acc + (user.results.interview?.overall ?? 0), 0) / data.length }, + }) .build() ``` diff --git a/consumption.xlsx b/consumption.xlsx index 34d4719e9e56e346e7c8db5e31f66d9844531c95..ee3a48ecaf9e66cb7fe333e530d55be515eff9e8 100644 GIT binary patch delta 12766 zcmZXb2e?+%nePJ#0)nBO!#TDDJ^SE9-MHJ@do5HHY+wcK8kM!n5(^!BZ`e_J?F}3D zF7}3s1t-y&xiK?l9HZvR^V}P+Gsa}*CSx+WzqP-EWA4rKgdEQP`1amwz3;!hD}Q-& z$hGT+JaN|cn;!krMO9GF7rQzsB#eT-!bY~qicnQ~9r6jwzo=BGY#kYs7HOrOEQ|W& zfCVGuAK35va%-b3-UOzN|idS>bwcFq|%`^brvR3VXGo8B3s7tP2ATzYl*Fv9beg# zChoPQSvqgxLH6XO_PA!LsHAUbJUN=;-;pu z@{SFh=nph)C*FZRlU zq6o60D6OgD&?Kev%bbVotPPve>8gpUGR=*wFZzPSW!AYo30+pFVV3GDw3$xBD9)9O zsw#@|TE^%;+3nVG8y&RJE|R@<-_U4sMzt;E*Z=kA1i4?Q67Sg~U+W?$nxavrq1H^z zdt_-5+O#yj;85v% zHhsy$1!pv}&TKa*m>Jm%&rIWw+hN$qrL`WY+vKgS4FfSf89ar3h@5L?%le#h&uL zrE{SvqB@LJnl^bByF7LB4^#SrI8AC@*R^l1%$I}?%dCjPx-pbM7HdZfZMIXNESNJ~ zCf~I2klpPPnYB~jP&GN9oXBZA1@do)bjjm8rP6y)ul(muhLLABp*N8Hc(m%P=Y}Yox5MbS0~H4rJ9c8_Qp&50yE$ zcF7kzcMmmfZw=igV8?r8+AeC4lFyFpkrlg`plWE_+D4%SXp)yk=Xe6VjHtnQTwyP6=ab(};M_tdO$mgc-j1HP!N$WudCfjhEvSKe6bLIGW2VHz4RwzM-H z$s*-8F|JN2Sb1sJKz4j?7qQ}Fs(!RG-<}Q|(bl+cadGC^nVECT+@8$4>T` z7L0D&YvQbv>{8%O7M?pnu9?<7R8LNM|A(dpGV$T@^7*u0d1Bre899A4W#22&bRFo@ zu%%5N#t}H1WlcjdQBjpMQ5H985;cunIXwuE zYf2Zq~&3Eq}TD16PUCtlhgC#4{lLFZK>(*2*3kH$%zgi+bhQ879c1 zDvs*N14ls%(Br=CR2YG?&Ng+Fn^az&5d^G?(wg!}3q#YFz_HCrO2!!#mw8?}Rm(;* zw;MI*scT}By;n3!C)-mis%QJn^uc+k9ssEb4P3&5fj>N$tY|9Z#- zd3L{^wio|pztOUK_g)#izd<<^w(#AZ(|2G}4Js&;g!FmkN)LQ-A;<3TOTt!FU4X*1 zY2iad&Z-W}$T?;55_~G;{`~_vaq*~8hb>%KHw!vTAs_GGKd6wuzhS&|AJ8qY-Z4(5 z9?6B@B< z@+xn1no4wF`vAi_RncP7=?8WXMR3p&!bN}k_YYKqvsh*y(IZ>V(m_?|ROhJ;3kM`* zJWgmbcDbhMBNM>}Q6{I&>hH@b$kh6eq||N`m*^`>5=6+#IyaC=ENf>`4G)gkK*FCM z(<8%YcT))&53tQ_E~2%Ln5|e5duETUo((NTRUM`1D_gLF;w{6J=;yR3`UVE`bN(t;V=S=S4~RMzYVGKvvv4eB%wM?7?v59KQno0UqJ1e}G@j zQG=7bU4i%@9U%6yG(v~40u(`$u>w(=Lk$2`9ec1-a@9dWkefV4PBtL~1b|qSl0iLD zyG@ywwSkHw`S74XemHN$h>qHwVVB96g99D_sVnB-PAM)sIFn0u>y@&M}onGgWC?(zvAsjhjP)p$EfA zr^||ETgVfKbmJ=Q%<=LO9N^Jt$f0b$XrSg>n{& zlE|Znf(4OA`@_Vkf;qF8Ml2gp0VIkeG?15&^6!TRD=!*0dIJ=68gcu>JQ8Fe;=zYO z(06soio+B#XfyfvFsd&B=94N3FdFLGy$r=HJ;OuWahHZEPX^NBc?`)>#Dkv+a@jM|a8GnO>bOKRS>n z7IeugM|W@t=Q;8i$hoeRLyPD54(=a$$BQY+b%udUVkoPTFH4ms|3tdd(_>y?|2MGzaW zMPd6IbHlnKaUnxRU+B0jwF3HM`Hy4iLe^b3tsIAzGM7+?Ci6P3tQ*DlM5&djb6ZA| z1&?no7ti%-NC7{q_^r3O|2S94FEl31njkYtq?C4;H%0liJ4??Ycnzfp+7xvq=UZfH zuIt9aIP|<{?HZq?kjK{9R2NZ`BT8hw4X_|1M|Wy};=v0~ZBAM$8QqILnZuO^zF_QH54US3p40Xv~VkpZX_&ACXT<6Ou@v zq?;HUSjr()D+fjnl)s0+YbviwVtmjGT=YBtRn^zfL&@zuy85TtHAFg z^Vr9V%JPg%mcjDt2Kgno)WJ5Ds#z`80`W`<7T&v}6v8}mXdB$Il~3zQ^2=R^Z(zbZ z-30kj)71qEOx8Q^c*@kBcdVxFTuofE%Qkz;Z|ey%>&YHDt5F^;;idJB3B2j56Kgm3yaDD$*$mOa8pP%xFwPWE|ACa;qvM} z8_PCp#>+FVoA4un6FzYLtvwxa9HdmVi*e|26h=fnmyWbU`7&>KQLBN!CT@`bzFO)` zo<0tl9LEigL5GRU{r=IjwoIU~BFT|Rjn%{f-yG+8@%w|UWb?L_udf&<^AW3_5N?{+ z*^9OFMh}i52KM6D^8lpWlucCgx;0&ZEg@K{(MgWQZ3-&hQRdT+=k{bhC4Ud|yv>0K zU@Qg?`9LC*B@GCg$>qnlvVc&)Et3z9>XtdjcR`7eqWp$So)m%;a`^&23h@>l#&z5Qm4?k4onvBWF`zJui1rOq2;8vz04>L4L0eELNA(PNZg-9lx7<6wC z>H`vSpfUD4(QCwFvXYZe>^#NeC*l^a>XAR4h+|BW+SD3qN_~H$2t!(hazuq`L-d6O zkt0qDf&^Py6`q<@#0QC|;6_^7DjV0xb5~S_+;vjW{VgW%y~Hj!ei_*8Lz0h9nl!{` zGlS<(@{y39ujK2ad*$N!EJR)=RRtwQi2-a1RGQ)IfL=>&MXt=?^3Uf(PEnSCR3t_Y z1(`J@BwD*XR7L3!N!BDJVB0NdYw)kc(UJwe4kI?=O0If&xNd>6TXu1EQ9!Zv%K58yQl<|F375k9;;G{w$8>38G7BK>G#gcxo6hD#U zr<05}B-HWNJ|#SfN_e}d*ri(jaY-O&KQ&S|KV?hVYH5cRwd6}X+H}EEB_HD2URnwu zQuQY1K3Hb@AY$h&t{{vs?p2gqB!`yXWh4cKD~V%~tVnqlA1j4&pl?%!X!02{buxEZ zAh(@5a@g(*mo39APCR9TJhZF}XvQYVn_Tp5_+QIB9E_DG-w0&ilf7kz0}vv#xfeZn zMU!~tUq)q;)r2Fik_S$v6Sc#al9$F29g`8-AdQJvs>mWNl1yn;%2y}1QNhUln`Oko z?e0%H#kXKKIhO-Z>9FJSQBZCfk!y%fZ`e>xv>ST?EteU@rJAxqjq1e6kki|J z9w@RM65@~3J6Ea{8GX3gUFLVx+>>U7uB#Fh9M46Ox774%UYQ|9b3J!fRZ1>ibzv!uIm zdT606hUCeq8B(~ks=YVQjFZ_Hw57fQS{Bdkl3OnDwm+rf)^O1)jo)0Lq-T1s6c^&U zJga#p?YxO5>CeCwA2bp!6Ze%MbtKna*x#oj~$v!>A^s1;9xLR3w~mH;k!CLdqu zS!JC3`lSi-!;5_K38sm;sMBIgF3RP?mwV*Ziwxd{iAtdJSA!r^`G2C(Z zic+??m_m;<*h^4{%=3Xie%#bP{>uc1yvF>NPiO7dB@bNO&3p}nkvF*N z#qOUkR`VXuM)&#e+n09B zSNm+lxZ%@FJFL=kSw5&^cB{+CyioIzDeKTxjC{~bs05;?LBFQEw>R6fhSLz2-(T>O@?0{$nrhDFFRen-4KuK^Z2`WS$AIED|4?NE9);G zwZUnBdAaGUQig$*pI=4H%?N>k?wB2^eASh#4$Lz1ihkPMmV{9$4dMaVkDHilHiVy4 z28+hf)yc{$f^luyf|7H~HjFmqZ?EVd;`658T`{SBlpU`0vllO^PQQ{OC@|@4IIJG? zRwkyl{NR>wyQp#ti4lJO{7R6kch45{5)Jy}E<&Gp<(5 z+x(kfe>L}oyO9j+d5pMc2E&{4GEjEqAXkRXRV-g$jiOE~8{vSMr=odKP;e2L;MGr> z>oP&|r84E3fU)+Np`D0jF@HPerfzxYnz{vui02We{^$MC7#th(7hl7u3B=r9aBH`I?Z$uCygv+V(Nh=VLn}2 zz_UT2@NHSnq(N@E4qCw*Af|NKG%!kMCQ`9JF^LqA6!S$mjO)1Xxg$n=tJ`GD>-z^n zy}hpQ?DV$L=h?p~IyE-pxk}kKEA7(+c^Ji(a>mxlzd<7xc=}H$pDV%c6+h ziWuF1^3<=fcz8@Rfwf}nhI4=MMh1Hm`Iku(P5h?#tK^Q4wbx4Wec3+yci z24IKM7UyeYqT{SCpc97ibWLoa6Vni8$4t~Sk(fITy^mlGW^bNeE1LU{F~M&9Db*gx3Lhb?*vqs{$8<_h+ z_R70DDyoo2xE$TSnf&^$On&iPuf%tw9gT~b1?6EL;|HNe&Y$>mFFpvXnBW$S_GHD~ z@OOfH@>AY|Q8oq1@gUuHT4a%ZpnVB{|NQQD@i!T0@75J|-{aRlVeO~h)9+6yopz5J ztdh3!-o9tb*0|lo+sp#b!jT^sq|6y0kzf}nBSfTZeJ?JFIWAmtu$n1Q zTqO!+<4_qd%)bwJ}73UBQ(|lcbQv{m1Gyh8aLp-`&xD0aD$c8#v;= z4w|mKPeI{6iu~k0Mno7BW<2Ci_5A?|I9@LyRO5r6Iuklh5eafOMa-B+L^pr(I zxl9gx$j>Fy*m8=XY(*jyEsx)XBpn-;>*JM>*)YppFmLiZ7sd)4i!d%(B_BWBA9!nC7b){`hQQPz#LYSY zLiom#LrP4jnS?yjnuL-6jV*HQBa;vf5!8J-7yYZh`N+2qF!oXSvx!qqCUEb_r!GFp z!TIq36~vZfJNdQDe-vQ#sRQwH$Y{#%GKp7-xbvotsRyXW(=s1YQcj9|=O4LT^k|wH=u}{G( z{H!bQsc!i6@1ybZ{!`uU-v8%QZ5Xks z&bOJkbeC<^HdA*#WopuD=DnXr%#fcw9hC@hWQLGIJQW5U#6fvGFJZg)01S;T_ZW8wuPuQJ|IX@6$h^A^uc9o@)q-c zzJ_3e=rQ7G1JSdmS$`JQS}$Y~3S`Wjz|>mOXSi=c76rS7Y2qi6l^1&kg_Ch0Ac<+> ztg7YAXZ&EQJsT(2UEC$>p6Qk~(j{N=zdm%{>{&m0@p$W=HGR;z0izuT(H}hVfum&% z%A4T`*=<5LdE?oBbS4!a`{8koDe)6HaG64^D$b0NVK6VSvdMFu)?anQupwSM?(v*I zA{5ho^SScaBNODl=is&nd*$orP;xc1ZJ+m32b4A6?ne(iiJyBTtH@-G9QZs5fnqNh z9YcctkQ%nc6F;vFwHT*j*bUfue!F3vtXpOyrhfUn4gy5pLe`!LJpTpE zIhdU!3>XUZF-47GC_zqo0V&L(Uq-xy#d~uaCyc@is^5DW&HzxU@Hy!mVRMzp zq!-)T`*s-Lp39MAUhHq<{!A|Ax_^S#Ud-glrdKw3iTIP)rD9S5lzRG#ISpXFTEPK1 zFqh4&Ym#vqD#p&5=+<^2AH+mj6{c@y$zKKPRkx_sgA< z+yCWW8T0zsL5UoCWuM&gGCM$Zr$|(8-O>&?%;_4A9aa%SE9JaQQ_KH(8AW9{pN3uH ztN>EmC*te?u_Vb5VIgN@U}o9%l{O>!?k+5U#bW>m)Z|Vsdh_s$S5#Yj+rA3dBm0^2 z`@y%5fEgvQ8Xyu7U$fstBqT2vy$b93w8(nzLTUi|lNF+5(~ue^E>Q#*aV0-_H5mKf zS?IvnN48$mCEc(2r6Bs29baQqi3xPCL5KsYoM%&_9z0(U(FHP!`F7??O#ouWUUY0{pstMx$F<= z{b6md-1){>Y)yD*pX~WMqhZeBlJj#?%yA|vt9{fN0YG>-gb&B8Ssl6ibw;4N$QVwy zAs!fz`!j+L%px1)JOW8Pa4Eley&bxIcQm{$Q-)jScFD1COlS|tUiyZTNAKyC58nXz z80MzlFDO4zC6vZk_``7g-bd^l`gM&YZ(<@jK$W0-NWb|5aZBlNU(VP?KD*^$S5nFu zZ+cHPLQa^wg{*zEGwY%2`K>R2u60Uod~d8QnlfCoKYP1R!c;F_B#+(?Dm#tLCwtT zc&>Q~a_?JhAIMMN8r4S9zkQ3el92=FGLbThffMqX^B}Gx1306T<6RM82fQ8hkum@h zUMjVt5RDt61vw$nPzH6vC^nJn-~N#-Ts(YKhl>XWpzps;=^Z{!hP~6>W|hf1N=BX6 zE9btmQ$X%T1GWP_@0>Uk3(C-F9Cqe_4u|XwoBzo>{e2msq4gASNhKMYy??gRuN3AJ4LZhuPx@4j33q;Amq*$C;HLMM79r{X&qAo&B= z2qKg=F5aJ6D&&;){efc^mpI%-LrMZ@dRxUgDIaGfBpPL7GbgXD@0XvwG)6vM(Iq3^ zo3L`1jb!_kV{A2KpcoTE0Y>$&#+HGp@0HOa2{|r zaaeIiQ85Y*5f$S+;cRE>&P{G7oynwgy^l%X+)g@4$F%Xj`<%ig&&5Z?I{)*ZJ*@Su z@B7x`x>vUQ;N|T$pYsp9KK<@}Af*(o&_qF+u7lc^&(OHmM&+L77E14~oEuA9&p;P*qWtz6vYtCq)(bc@!po7N>>M zX;zuCl2t)>(!t9{K4+JmxpK8DAb`4`W z@$f-8KGa?k)i$eD;zwno{G?<7d0wY}7^*VJiXf^|D_g>@mxMY_>NN8c6SG`hXurq; z<>$ugz?3!*(@Opnc6VK{#M(2a%w9HJj@VUJ4p=iN2Sxoo(X?z@D5peS`JnEXTcSvw zymL@~9%(O)%Q97&^@G~5!Gv8Fx;B2Tqa+BjIxu-Hv*NB-2X$r=WBfn`)-6H#MQH+G z2T>RnM%T)ga!K5k(^u@W!+|5qhR?F{!MaKE&A6Wvh^85Nhlh9GJ4yCTVoA>&l%vmNpCP zJdoW~SAMkL1o_tG9a*UQdJMbHWQiJ*7muDG8&oX6ePU4lU1_hfnYF1YIq8til%*mN z!phgGvMS3`9b}mtl6JdUP((qbjc>D}WPy?O3zg-*PIVG0U8*vaFQuNWugCSyKeH(8 z$duWO^2HPYtuHsDPRb=vg+!hoMJ@v^+sl-V{ai;m@oY>L$MP@JyIx#`WC^KJg&`-D zvRGoE^rKAcGOxob2ow3ljBfA3eC4V&Q;u7N?a*NeE z^+~^&4~AhDhf!>jLhhOA$qSeFj$d|`9iDQyT~jQ}M=JR~KMmg6eoQK3_x0rcy9Q<7 zebv}BZWeLnzL}TUI%FTIpXMo7oD&dvl@@-fVv`p@4#zIdTp{v?=Iq8RlNfGP7hIu7V z?dQ30*kR6yI|F%fald@9U#EvGoTg>+{_X1*?62gJg@bbE{#-zy6PLffP4gIdEsUSJ z128(yGn?l@MKr#@zvoptDl?NCzY1!iF>#+M3Wt=$BOy>{VIT(`;K_@Rj~n+P{Q1$K zTzx>NCu9MM+{@$pPwtl=9WW>_-Y{V-K>VqTyRz4T+(B5_I8c#a>YV#6B95U*D!)o< z8<7TOXq8-gpy$;o$!hD|uLD+{6s{B`Vd&>&u2LK8!q`l{d7vlH-?*cEYi5r;^5`V# zo89SAWF!@3b{hiq>{Q-8Vn807%@x=rG6h?UYzV+7LBYFoZX^d;b5*gTSSEbN^KuiG zD&w`8HbiTkkSqy-Vr*I(YgH75T0Z+3PiCGmuD87cVqo#|m2&-Oyqm!w%5XxZyv@=w=Mp`y}{10E+j*MNmqz`s>hV573ktgJZL zlds6`Jqs2s9$6(D5B3PWhzyQc4998qsdcS<*6-H zp=9s~Z$b;bO%<53@XX;{<{#npBpg91XCL9oPd)?m9?>4b504lxC!RhiV~)(cDyX6) zO%uPiiSd)5j>slx2=$N1PO8|bOinq{1E!3PQUDheU?GZnN%?{QR0^mF)3_*Wx%WtK z_ig;A0lDRz5^(7;la|0Jh z^I8>YUgAm2Wk3ec|LV{!trv(hGp#EwrXU!ez5*B3` z<-UnrB`l-RhbO>INP#rdX+ZAE*0~MOOgOey1rtznQP(of(6&-vTaQYwoyA{7Pr8^Z=!KRA=O4 z1Vu3>qb$n01)O`HXK_LD*AaV9GF<~Z4m2Vi>(m8koy)&1@EYdX);^i?NJsWs*rD=i zc0YTe*D%j>7OJsv+HC*Lg+M@^S7A!MuN9m#sfqE-rC3$f3aU#el$_i#4t`Sb4ceDi zjs=!PM^*!v5yz3KG)!zB%kVM4%p1Ku4fU4&woH;okLhgZsQ+8XOqKOVOpo-;~WM$AUOWG_5`jwj@WNc;K#>-1Yuwaui97K zHL|FV%UF{DHe@cSVC(_CyO^Y}n zN&oS9PQXTW2{ES70fI0w0ws%x*Q~DKXjO^+kiHYBFPHUh<34TX9eRR8A;lGp@YrdO z2TxFAkso0-An%=Eya*~>RT@%n4PRKOkj#tN8*fjOJWni{ckGFtSHh1|3s@&%Rn zf<%z(sBnBPArKwm;Q*qf%yU&1#OjYv;^iiW|Dv@5uo{|5^{3VvpQ4@D5yCVrLYaDU zLppXC<-d-LFFCnGvR}8UPi{E5(}3{vCo36QIw-rGGQC@H$}XYM6YPj!@~JYg(6o*t zQ| zD+gT=?iQ;(r>xv}PqpW)nX6}Ih6_2`BMNj_BJT?e!X%g=pfTdG2%{*i6a|4&d{5== zndrX99pIve@gIBj8*~eK(44)=tNb@HH#a2VwcvFY3bRki(O#|5d{B-rw$mWo}P{| zO=VnpI-Dp2jzI?>4}gMSmnDG^Adm2x!n%SL>O#JKy61%v0a9{YhP9HzP!i-wK>;bl zG|Ceen9JZ9%?fs2u*%vc?E>bV;c*>`Lph6wvz8-;&PZ^DCd&tB7%$DsI?G`r24l;` zSOMA)auJj#tYgB_gmU5%kb#`Uj{&+hYk)bSozTdf0=yFXR)$q68sOJZgF2%uh3F0HOb+=~s;onK zXDO(hnp`^`QdR}^3jzagA|4=BoDWshhN#eeh8+_Orv-8yKX+R6^}QpQvFfnM za$VusMe@`#Q0InSwjsg+YbMJhr}a|~QwY%>%iGs4T;7uMbC!>ne?+6)wVY+BGT{(H zUu6kp37g6Xp<>@+`XJYlJi3%WFGmh0dCK)CKE>J5R<6My()_rHt01>U<&bgC3QxZA zTJNYsZy!D03O0p;YD)w z$dE^R1~H)JQ+ORI1V}R+(x#SRhGu1{1NrVqgNia?&W>Xb$z|7-L+B#K#haDw{#UL1 zkPyDK5>loNZXfAZ;)xN>4%6eNT;dU+2w{yM z05y*isaG{OAph&!J>=n4orZ}Rd6Sm+&Ky6M+;?i^s57T`Q)S8k4vJ4l z>cg(dClW7;GfSr9mt6UQ9_`$wPMw53N!1-?Ikgy){`^vC#rPfe}MiL$iqIG70=pn+%OYQYtz2tRW9= zUf2K$ib|kV1%OV0L*UatK!Q<66>ndEmM0tIiPC#bpZwyi&UPV0;Qg~cC3nu~7kxHS zXJp=`19HjP#)}miEF*t0GPueBD9;TbR;eJ0a|4PgC2yZi-lvFDtq^>czXP^W*bCl2{X&m z7=MJGND^oA!Fd=nsgrE51&n;~2gvn{98nG(P9ua8UlPl~=Qm0CSE}@?^BpUmx3*s% zKmTM*utC}T0$?8+TXTDUSfav`JcMH!_%487gbGh4NVQyc0ha)2D{HLBAdejbpm9?m z(fl%STv$1c63VwOXpGRE8!6T{1a`jANuLIPoDc|Yp<%pzKe&t zQJlaM3!hM+Lh^sqDT{Egux;b!e*-;-H!n zxDuQ}g%5J!CEjR9V6+)EOHGnDFX@-LtG5Soes)Q#N%pu@$&#}t%c4s;fLL1snQoMI zwWkDusmUR-%h2!2aJ!;PUb&P7pgD;*{C_04I{~0lZ=eRjw(svn;*sqw?NW z9o`?y#H*(^Zq(6NEBVwxgR<^w7_T;_a6}eUm<-6MYy~|&Y?c!DHNd1UGWp}xu%5gM zf)eRZopR(HS)MmMq%1A!AmjwK9Pq{Ft-Fna@Q2NybHC^{3?!3#`Gn)$Kl>t%*ck(| z&zCX}sL}8W=f61&s^PwFBYsNfDW?62;~2=*Ujl{k`v73LX2P*^6+ond3qk#2iZHGi zJO3YFqWCY(mn@kw+6!n)!Gvq3ZihK7*)^>gS$U0;gFgonUqc2KK^*3IO*NhhhoCw6 z5_=Ft<_1ho7S!^wYq6v&WFc-pSnGTf=Up0v2_KB2I)Sj}krjKb*EipmYsw|IYE7v& z3GTSo9YO^6fBo9!t{vwte(rU~gIuNxGmqMf2??8bO&$z^D7H2(RBDpAkO!|D>c-#% zG|{&t2H}q(n9-*p|3gifLcmli|9M@Le&hePAOGp=fxfr;rMkY;)SzpwS8_L&{SU9l zkfbFUXzDOF16hTlL-e4{i=w7H)17m~Hxrss+z%MUXX=36huDGi3@o=%DfBo*F$?8F znYw$uc$lp>x?@Uv`cH``|Mhsk{D-uL=pJ8AG3Mue`DonbkP7GM3>=TMcO@7aN&Ex% zm;wc5KwkMW$&b^EwxMTMLktsiHx!Y!eO00bgBU9vXMrVUhXxb4!zR@`$2GsvAe(G3Pa8nC<=iZcgagt;iWZFlw za+xJ`51yO*Bm<`r(p#+p`N2(yU5+Pp^$3c_(c=#RPw;}8c!#LQn6SC*d9xG#yU77t z`en(@9oc$qM{d0Nw5I*N>n$|faB@OermwL+S+a8v9N32`iVmezBcd-LDPpKj@Fmrz{$Zk^f?thu);`2zrV`>h%7 zA+-x)?pMSS0qgci4MRP|ng(_m#T?mtx1wk1;zl)c7hVgsCZ1s-l-9g9xS)8=d0okY zw|SD9iOn7_zpc}saJI?JeOAw!xlcK3W;tbK-#rhKdACiHYgM28=(ZHv;nc<6>+m_M zRAV1Db&VjSzsDuxf8~@-@SP@$uH>?Hbbjb1n+*76?1L3o&gTe`Iw(PWFJ=!4o5;7; zH9p5S&$Sg7JKXM+eFV(!bGvJHPL{>DCr!ua@!Pp=v}FLJ^;0A*$4Y?nm2}(_Q*gck z3#nz|9WKY152)$PsleGhZd9j0gwT4U2wEqwlT1#yqpdN2)ogU zE6Gw0P6q`Iayn#yw!E|6>-*4v9~}g7jAzQ79yI%)JO92}%EfoKt?zH&N$-Wyow+&! zhB@togvMGzOuMYpRal_w#J_8(ixpQpMVKnrd%-4#6@hp-PGRm`8s`d}c^7-Vtaqos zSpS>va!iA+vwWXtj`4TyR@-JDio0>2L!j0fpm7X!Lcvq_3nVO!L1)M_S&$a;!rc@b z%N&FoHX!6VC|B|gCI~ilieJb77B-h1H#Br}$GJ-w!dP53;}=J7XboU3i#N2E+npPf zTy!cUI2&esQpKD!jR)oIz7WlwGt5GbuPB05R&n@;-ZMm#h%$f%WJ06yh*3Mt1qH;5 zc6JE%yQ<~-d)hP%7VRjHKH8BV+yl*l8xbgRmUIFS`uM#KyOL*L{-_l9I!D7X zn{)W7V|8Ds)*+=Xr&`j#l+*5W?=3Y(KeGk2 zC3r6fL)Ep;hqW4aJYmjBHs1GX2^Q@j7d_Z7zrN3z3K_t<)5ez09k5Z!VRsM8mp0D) zB=8kuNjaB-xgnffOhP0pEw+l-f*#2)H*&ibLJ9g#LZ&1nM4t>G7EA;v#mHKwjU?XW z$-SSSAU9mpCueW!aIoQ9eR9tx=d5?+8=I15uxj%Cj>9vsVDZdo7;&$ZL&^m81kavc zBfpr`lGXPQb)itqRB#^3nGIpZ@$$w-Qe(4FLyVT^?{DWQp1Wr!nHCMmxCc7SR5{mj z&j;H5p8SAv%<*kAAP+oXx@Cc8BqKpr<=`{JDhFur>U9?9A=EgK9UdI=ka!IEz;kFd zvV;Hv3-^m1)1@OF)x15FqaSQLilg$u&9dG2pu1?rMQ`SzyXbcwR82o8c?fVt!Ev#b zZ*h#-lar808Ejj+XgDMxqlR+bLmnkBrHz1zTqoLz=z=?TE-tc1Gxb6*Dk$Xp4|(IZ zA&NXCAC*17>bm;mw9Nc!`|?#^O=aEe0eR`G@YjgS?|g6^YsVolj>#{$DNQyEQwFAZ z`Ntoool{XRYZ^{bW3+4dvvJ*DJQHe8g`}hLQ9tbUG!u=o__UA9riVKyrg_)*$v;0# zO2bLaeCxK_&1kF@hMS3IKR)zx$k9+}>C1r6Vg z?_n|l*^Ful4ERXMVG!!Hq9YMM3UA2(@C1)zMk9zszzy`KTv*-;R3$$T%J|_*m;;?Ee@Zo^#I!q<+kJ3@#P{8z;D%sYXDS z`7S&YOyU^&1c8ZU>toyn?AFctL9#NCh7e)=1nI{RL;)xj5wccx-ZE95&vx47LpNo~ z5}C85_3yPT+tSkb`?sX>okaukhb@#A>`P`EoO8;E4lQ=-y>m4S7is`~n1!_KANRZh zvB3ZUeGcVJL`*}5KQZ=byad+W5CaLa?(w#@*H*P=r1a;HyF74-_&yKafJywdmhD{d zwX91U$TbhxkW&b5FbxV#mctF95OC}ymmhv@$it)~I3bd7K0X%_w@foII17CniN!n7rf1A@;06{i#)-u&d=JGAensWvFTd(uIW z>nQK`6atP;?qN?QviJHyx$!BW9$%uOC*V+*9U008tudS|wu3cQ;v&ZK+o#;Y$FZsL zk3x)cZivLe^n(6k9U?a=&5+(1Pd8<)cbkH7$snJ9dWgL{@pKoD9l!b4rt}Zl)+}=E6io>GaP;327uh$kHtMoLJrDAG{4cb&>9R( zECBh&Gp&36=Qqd6#$Z4?&$0*$rE=gd1ZlVwW4JTAv`tPU?IqA73_Wt$=ZhCG= zE_lL~_m_C=8ft%hu9<3Zqos46r?tu`D4DKuRGgdcUiNAr{dW_Gmu2Le^)}dz1_V%r+necvhD~bzb$H`z^je!xq741et9X5o> z)0Vjjpg|6PnRE>DoJo6Elvy2=&~>2EK1>4hA&V~))pE_tUhk0%_>K&>vbq^D|DP{+ zWWuf6%fi(Yu73q&CL;EFMadO3w^qNx3TUOFr>GE2Z;|KhkdajilqKAmwMH+8@|{=E zd;tODNNLTOr_&rxZUE!1se`zt0mkUaM_+AP%e!tHG94YWUGS<0FeHux@&Q*Io&X$N zck3swj+bMSLD~K_C;}c{qQM60JbABOm3Eyw#=2-LW1gp&$N6hsmj+tGzZ^mA##lgl6EUox5udhF`okwHY|s_4O8>4t_mx120Yh%Ih;cO*0*v z1$mt_c!3rJ0%#`sbV_xerJQ;a%5PpD>ar5%vs?$Xa4H`I928~hKB9b3zaVxrgWi}r z=`WcvTAx}KxaN(arrED$!y7}*@W&6{(6ksQ%ieEJ_waW@?7EQFDbN4`r#6KQRuK5~ zUiga{{3e&bIpm?k@{E~8x_tPOEQfwq#N-PAQKP|`8MBrA)0;!CzbmJ0+DU$Qf1m8} z)})3g#iHICYOZ4BElox|_P|@4Iy-&%mqX;_pB^`cCcsZ;j(Jml!|(gbK5v^bkIJIA a_Z_od?tOdKn7@}_yghY?;h%hjU;hvBUAj5| diff --git a/example.xlsx b/example.xlsx index 3e171cffa62bd7018cfd39068cd7b20d48d01a56..7941d5821016769329662615509dea8c55e97699 100644 GIT binary patch literal 232557 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 I;jd@^2O!BFSO5S3 diff --git a/src/index.ts b/src/index.ts index 679396a..c2c05b1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,8 +3,8 @@ import type { Buffer } from 'node:buffer' import xlsx, { type IColumn, type IJsonSheet, getWorksheetColumnWidths } from 'json-as-xlsx' import XLSX, { type CellStyle } from 'xlsx-js-style' import { deepmerge } from 'deepmerge-ts' -import type { CellValue, Column, ColumnGroup, ExcelBuildOutput, ExcelBuildParams, ExcelSchema, GenericObject, NestedPaths, Not, SchemaColumnKeys, Sheet, TOutputType, TransformersMap, ValueTransformer } from './types' -import { formatKey, getPropertyFromPath, getSheetCellKey } from './utils' +import type { CellValue, Column, ColumnGroup, ExcelBuildOutput, ExcelBuildParams, ExcelSchema, GenericObject, NestedPaths, Not, SchemaColumnKeys, Sheet, TOutputType, TableSummary, TransformersMap, ValueTransformer } from './types' +import { formatKey, getCellDataType, getPropertyFromPath, getSheetCellKey } from './utils' export class ExcelSchemaBuilder< T extends GenericObject, @@ -12,17 +12,19 @@ export class ExcelSchemaBuilder< UsedKeys extends string = never, TransformMap extends TransformersMap = {}, ContextMap extends { [key: string]: any } = {}, + SummaryMap extends TableSummary = {}, > { private columns: Array CellValue), string, TransformMap> | ColumnGroup> = [] private transformers: TransformMap = {} as TransformMap + private summaryMap: SummaryMap = {} as SummaryMap public static create>(): ExcelSchemaBuilder { return new ExcelSchemaBuilder() } - public withTransformers(transformers: Transformers): ExcelSchemaBuilder { + public withTransformers(transformers: Transformers): ExcelSchemaBuilder { this.transformers = transformers as TransformMap & Transformers - return this as unknown as ExcelSchemaBuilder + return this as unknown as ExcelSchemaBuilder } public column< @@ -31,12 +33,12 @@ export class ExcelSchemaBuilder< >( columnKey: Not, column: Omit, 'columnKey' | 'type'>, - ): ExcelSchemaBuilder { + ): ExcelSchemaBuilder { if (this.columns.some(c => c.columnKey === columnKey)) throw new Error(`Column with key '${columnKey}' already exists.`) this.columns.push({ type: 'column', columnKey, ...column } as any) - return this as unknown as ExcelSchemaBuilder + return this } public group< @@ -50,7 +52,8 @@ export class ExcelSchemaBuilder< CellKeyPaths, UsedKeys | K, TransformMap, - ContextMap & { [key in K]: Context } + ContextMap & { [key in K]: Context }, + SummaryMap > { if (this.columns.some(c => c.columnKey === key)) throw new Error(`Column with key '${key}' already exists.`) @@ -64,23 +67,34 @@ export class ExcelSchemaBuilder< builder, handler, } as any) - return this + return this as any + } + + summary>(summary: Summary): ExcelSchemaBuilder { + this.summaryMap = summary as SummaryMap & Summary + return this as unknown as ExcelSchemaBuilder } public build() { - return this.columns.map(column => column.type === 'column' + const columns = this.columns.map(column => column.type === 'column' ? ({ ...column, transform: typeof column.transform === 'string' ? this.transformers[column.transform] : column.transform, }) - : column) as ExcelSchema< - T, - CellKeyPaths, - UsedKeys, - ContextMap - > + : column) + + return { + columns, + summary: this.summaryMap, + } as ExcelSchema< + T, + CellKeyPaths, + UsedKeys, + ContextMap, + SummaryMap + > } } @@ -109,12 +123,13 @@ export class ExcelBuilder { } public build< - OutputType extends TOutputType, - Output = ExcelBuildOutput, - >(params: ExcelBuildParams): Output { + OutputType extends TOutputType, + Output = ExcelBuildOutput, + >(params: ExcelBuildParams): Output { const _sheets = this.sheets.map(sheet => ({ sheet: sheet.sheetKey, columns: sheet.schema + .columns .filter((column) => { if (!column) return false @@ -137,7 +152,7 @@ export class ExcelBuilder { else { const builder = column.builder() column.handler(builder, ((sheet.context ?? {}) as any)[column.columnKey]) - const columns = builder.build() + const { columns } = builder.build() return columns as Column[] } }) @@ -164,6 +179,8 @@ export class ExcelBuilder { } satisfies (IColumn & { _ref: Column }) }), content: sheet.data, + summary: sheet.schema.summary, + enableSummary: sheet.summary ?? true, })) satisfies IJsonSheet[] const fileBody = xlsx(_sheets, { @@ -235,6 +252,77 @@ export class ExcelBuilder { ) }) }) + + const hasSummary = Object.keys(sheetConfig.summary).length > 0 + + if (hasSummary && sheetConfig.enableSummary) { + const summaryRowIndex = sheetConfig.content.length + 2 + workbook.Sheets[sheetName]['!ref'] = `A1:${getSheetCellKey(sheetConfig.columns.length, summaryRowIndex)}` as any + + for (const columnIndex in sheetConfig.columns) { + const column = sheetConfig.columns[columnIndex] + const summary = (sheetConfig.summary as TableSummary)[column._ref.columnKey] + const cellRef = getSheetCellKey(+columnIndex + 1, summaryRowIndex) + if (!summary) { + workbook.Sheets[sheetName][cellRef] = { + v: '', + t: 's', + s: { + fill: { fgColor: { rgb: 'E9E9E9' } }, + alignment: { vertical: 'center' }, + border: (params?.bordered ?? true) + ? { + bottom: { style: 'thin', color: { rgb: '000000' } }, + left: { style: 'thin', color: { rgb: '000000' } }, + right: { style: 'thin', color: { rgb: '000000' } }, + top: { style: 'thin', color: { rgb: '000000' } }, + } + : {}, + } satisfies CellStyle, + } satisfies XLSX.CellObject + + continue + } + + const style = typeof summary.cellStyle === 'function' + ? summary.cellStyle(sheetConfig.content) + : summary.cellStyle ?? {} + const format = typeof summary.format === 'function' + ? summary.format(sheetConfig.content) + : summary.format + const value = summary.value(sheetConfig.content) + + workbook.Sheets[sheetName][cellRef] = { + v: value === null ? '' : value, + t: getCellDataType(value), + z: format, + s: deepmerge( + style, + { + font: { bold: true }, + fill: { fgColor: { rgb: 'E9E9E9' } }, + alignment: { vertical: 'center' }, + border: (params?.bordered ?? true) + ? { + bottom: { style: 'thin', color: { rgb: '000000' } }, + left: { style: 'thin', color: { rgb: '000000' } }, + right: { style: 'thin', color: { rgb: '000000' } }, + top: { style: 'thin', color: { rgb: '000000' } }, + } + : {}, + numFmt: format, + } satisfies CellStyle, + ), + } satisfies XLSX.CellObject + } + } + + workbook.Sheets[sheetName]['!rows'] = Array.from({ length: sheetConfig.content.length + (hasSummary ? 2 : 1), + }, () => ({ hpt: params?.rowHeight ?? 30 })) + + workbook.Sheets[sheetName]['!cols'] = getWorksheetColumnWidths(workbook.Sheets[sheetName], params?.extraLength ?? 5).map(({ width }) => ({ + wch: width, + })) }) return params.output === 'workbook' ? workbook : (XLSX.write(workbook, { type: params.output, bookType: 'xlsx' })) diff --git a/src/types.ts b/src/types.ts index 61734b6..8768be5 100644 --- a/src/types.ts +++ b/src/types.ts @@ -118,16 +118,28 @@ export type GroupHandler< context: Context, ) => void -export type ExcelSchema< +export type TableSummary = { + [K in UsedKeys]?: { + value: (data: T[]) => CellValue + format?: string | ((data: T[]) => string) + cellStyle?: CellStyle | ((data: T[]) => CellStyle) + } +} + +export interface ExcelSchema< T extends GenericObject, KeyPaths extends string, Key extends string, ContextMap extends { [key: string]: any } = {}, -> = Array | ColumnGroup> + SummaryMap extends TableSummary = {}, +> { + columns: Array | ColumnGroup> + summary: SummaryMap +} export type SchemaColumnKeys< T extends ExcelSchema, -> = T extends Array | ColumnGroup> ? K : never +> = T['columns'] extends Array | ColumnGroup> ? K : never export type Sheet< T extends GenericObject, @@ -143,6 +155,7 @@ export type Sheet< data: T[] select?: SelectColsMap context?: {} + summary?: {} } & (keyof SelectedContextMap extends never ? {} : { context: Prettify }) export type ExtractContextMap< diff --git a/src/utils.ts b/src/utils.ts index 5793f97..b602d3c 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,4 +1,5 @@ -import type { GenericObject } from './types' +import type { ExcelDataType } from 'xlsx-js-style' +import type { CellValue, GenericObject } from './types' export function getPropertyFromPath(obj: GenericObject, path: string) { try { @@ -34,3 +35,13 @@ export function formatKey(key: string) { .join(' ') ) } + +export function getCellDataType(value: CellValue): ExcelDataType { + if (value instanceof Date) + return 'd' + if (typeof value === 'number') + return 'n' + if (typeof value === 'boolean') + return 'b' + return 's' +} diff --git a/test/index.test.ts b/test/index.test.ts index cd8b174..a0896d4 100644 --- a/test/index.test.ts +++ b/test/index.test.ts @@ -90,6 +90,13 @@ describe('should generate the example excel', () => { }) } }) + .summary({ + id: { value: () => 'TOTAL' }, + balance: { value: data => data.reduce((acc, user) => acc + user.balance, 0), format: '"$"#,##0.00_);\\("$"#,##0.00\\)' }, + generalScore: { value: data => data.reduce((acc, user) => acc + user.results.general.overall, 0) / data.length }, + technicalScore: { value: data => data.reduce((acc, user) => acc + user.results.technical.overall, 0) / data.length }, + interviewScore: { value: data => data.reduce((acc, user) => acc + (user.results.interview?.overall ?? 0), 0) / data.length }, + }) .build() const buffer = ExcelBuilder