From 92f089b828d89c73453e5e3326de631c816a154e Mon Sep 17 00:00:00 2001 From: nxshock Date: Sat, 3 Feb 2024 14:44:35 +0500 Subject: [PATCH] Fix loading Excel rows ended with empty cells --- options.go | 11 +++++++++++ readerxlsx.go | 2 ++ readerxlsx_test.go | 4 ++++ testdata/xlsx/38_049RMZ_all.xlsx | Bin 9124 -> 7133 bytes 4 files changed, 17 insertions(+) diff --git a/options.go b/options.go index 27dd2e9..6496642 100644 --- a/options.go +++ b/options.go @@ -60,3 +60,14 @@ type Options struct { // Column names list columnNames []string } + +func (o *Options) fieldCount() int { + fCount := 0 + for i := range o.fieldsTypes { + if o.fieldsTypes[i] != ' ' { + fCount++ + } + } + + return fCount +} diff --git a/readerxlsx.go b/readerxlsx.go index 4b094ba..9d42097 100644 --- a/readerxlsx.go +++ b/readerxlsx.go @@ -109,6 +109,8 @@ func (r *XlsxReader) GetRow(asStrings bool) ([]any, error) { args = append(args, parsedValue) } + args = append(args, make([]any, r.options.fieldCount()-len(args))...) + return args, nil } diff --git a/readerxlsx_test.go b/readerxlsx_test.go index 3bb56c6..ca3249e 100644 --- a/readerxlsx_test.go +++ b/readerxlsx_test.go @@ -29,6 +29,10 @@ func TestXlsxReaderBasic(t *testing.T) { assert.Equal(t, []any{"7710146208", nil, nil, "99386901", "99386901", "304722813269", "TSENTRALNYY TELEGRAF", "780000334079", "780000334079", "10432641", t1, t2, 50.00, 0.80, 49.20, "553691******1214", "026094", "D", "MC OTHER"}, row) row, err = xlsxReader.GetRow(false) + assert.NoError(t, err) + assert.Len(t, row, 19) + + _, err = xlsxReader.GetRow(false) assert.Equal(t, io.EOF, err) err = xlsxReader.Close() diff --git a/testdata/xlsx/38_049RMZ_all.xlsx b/testdata/xlsx/38_049RMZ_all.xlsx index bae2e0f3567080ce06afdc37d486bfd3490667c8..96d91bdf6fbfe172d1d7f708318d59064cd6d3c3 100644 GIT binary patch literal 7133 zcmWIWW@Zs#;Nak3SmWay!GHw#85kHUa`emdi?WmQ^Rx9Ta&vlvPv+e=5ZL=&o8?}v z=e;cHY0TlJFjpll`)>qnz|5V?Av)}#{QbcwfTFdr2lrF8&GzHOHVgo@lv~5 z?|O%}D}vJ}Ra&}pq#s=2{gc^AIW4k zEEf^iZ|hHNlf0trpZna#o_p%+;3FBX)62h4-fh<{;~n)N#X`1pU$nq(A!Re(bmnJ@ z{_?XNU2|kEY<809Uf1FL@XATS6>-Ud&i{7z-8r}Ga&X>)cc~WwmVVY-e#%eXW8vZr zN>h*AIK#?%Cf2T`LzZXj?2CU`n->0wkQWK$koIHi(zjCY5M3DiIREs{TiFv%bf(yI zG;KK8YFxMN#kti}mMr@nUo=U{^a9t3%+5-7WuiKPp z3-xcRaQf=S9pC&!{N<^I=U$3$|D!AQ%R_F#jkt{M&pUF@NuHSc_(^co@AoTy&Q+VX zKERuuqcnNC*l$J#h5}{=2Hfd}7m{v@ODc0xi$SU8ZA5JTYy*+n`|CIS+4m{X>lWvW zU4Apa8HHwR`OfwDcvvQ-&EDkct@0`9chUKs?a6N<_|{!#W%Z8; zY1u4bm2So|uN&mhHHF+sbQ#d8bm)NUaA-k7TD>ArdezHzuQbH(4vF7RW zX`x3g^#V$dd7rs5c}h2vr>V%y(5Xy|mt0!V6tyn*cUU7wbKrrnqkATZcKqx*DNt3* zG2>bBqAfq=SlZrAQ};TherAJ%NYr|@_@2r4-+O*Op4mDzV(YKBC+GEUertUD+RU)k z_FO^dj;&wF92l^-LES~PdGY0Bznu(9(QO5G+h@lI^NZeCa#zV~TGNY!E-t5R;WFuh zK9{92<~6>h!O5#Hi9PLAIJQc0;a=w#x9*(`H0%8~FW^@7dne(JCLzyG*4e8WGk$mP z3fX-83VUwGtUdQr(wVOIRU0yx^sd_dL@AJa#p*W)^jL(NjLr$vYB;HRhJV>G7sM=5BVt(T(v&@@%EC>-?k~mF5kVn-IRIj ziLKwZWzV?9sO24Xey7^Rq}JO9+SO7;b}dv%X1(XNM>ytDgxPFQ;XbA-s!emaKP_7E zRV3~0qpQ{ZDjWG`es6VnwDr#^RU;j*%bOjZIH_aQm)8oyu1Pc7Rt zol&D-zVK4#8P7!vntih8=2@oZ*A(%6U3qn9?iB-@l2yNX{M>u2J8vpKd$85CbLJ7B zBsIgyGn|i9JU{-$|D~n-(qqV8IVE^3** zw{7=frLf`)&gGLfZQ1DW7fPPgz`Rc;yzHlf_yXEUr+tyy5@FZ@!l$W2%cK zE_{^bKA9;#c|o7O;7` zf3|t^sPdBDn!bqr#XiSP*QNNxA3EbzSzL70928FbE?7xEU|?Wa$%HSQgdyQnl98I5 zst+a&L50ZCaPOka1`_v*xq82c`2F!R^4*nja)ZWUo>pd!O*!4CHXRR&-juw9A-zGk zgweXH{fpb5X>)IM-kl^V)RCU^^7{Av@@0PK?Upj#-Q@Jq$8YVy&Rj*cOtB(K|F!(@ zpX%B?AT@V^im2wr z4Z2A(Vo&&vEMwx&y?tEs;iXkSyK8@J)_61}Hsy<2YEZZnms$tg<yO2CuB-?&YqlgJ*|uT(wb0RvoMYGAulf)7b#|#znrbJ zW<~SCs<;C>kAlKO>@%d2Zg)g%6|HQmtWVu`eX&l#w_vjk{0nnUD*UALT!p1LCw?k@ zymM;W5)DBeoyXDKqHkmuOK}Ff+`7YE9DhY&&*YWPsl2ClyuNkAHt5!KeiCq`+j}FPrH9zlPy9fX^L^2@tI+uvN?FGd7`#UYi?z#Dr4Q>Z7R1dHf1Gj z=aA{RTlFe$@3mkT<9~l~v{w+5BEpjvLWZ=97Q=U~M z*+0DW&*pFPp5<>A-bpy4TQFg|aP{HJ!biJO_Z*bel8t&G<92OIYR6&i-Q}m75~rN- zjC{p5&%D6cr6{`6A~FA?sS#IV14@0_BBS% zZxW+xnC`P0l)48Un*XHf?aPQ?`xCFtS|YPKdzQn*>l(U-J)$q<^bP+PE7xlD&n`zTU+G(-S|ZQ>_wZ()O)A*s1#31 z-cYn{ZO`_Sdbi8k516)PRzJw+S#p)l?Vb6AhcfFcA5U7mTh*`dOyQ+@+i!dlY0{a$ z$$FL`y+TGqYOs1;CqcvV<+QntVoF^`N5rw(oth$xSE zTJ(7P{i`9X|F}6-Q2Nx>mg7L`oBToGL~D>QQD zqa2S(5AH~W9XoSD`3c8-mFe?U>xGUAx@eo%-G9l?YW-f?XoVA7+XUwGjMwhjrmW|> zY24Z~=LLu2VXc%54#`$OlZyWnnzd5yhj^doZ2rz~xyFglSCQRa(QK8ITib+#4>WG4 zhqTH_x_n$qp*zrQ?kn@o>-7n;o^mca~RD86mTS880 zUy0yF#YfrVhE^^$#sf71Lkt%?_8K~vq}59(NNwHD)^Y6Z zC5DS9VkH&y-|Sj2!A1&4m+ zDpz+uTKoR@#P`*X`2s9)9L3kB6n&m>`-}Vb*3bn^n^h~1tvbCVs$tVY_20{`rruZ| zH~ZPlTuyOrwZ-Zs^VgeM#2?Ul=#ju8rYU_}c=v)HV;2jRd5eBLH1V&?<;aiP7T#n+|=^FB)^KJ{L4 zY>&sJ?z^WA&1EmE1nNfLP*|H@5h6ErXJsCH^Yv%Sn59Ob{n0)HoTpd-LlE1TV^VI0O$5+hBv)-O_&bevD z`Qj~dZEtm5A70&cz38Xgg>N-~o@HLh+^Lvn&CZoyZnOQ^>v`haW_2B#v2x3uHh)i3 zi!X;|Ontog{vO-xyne$!hwCeoKer_xcimQTdu>u~$iukjCl>S7G}wLNTyw;*CsAa- z-x2AH-Scu)OL9~f{a<#WUC}3@?+4Sgg3jHn?~eap@{?~Ghi;-u`5)b$MNx~q6BwQw zOjvApxb?*$pE(D@O?r+UomtV_ck!3d*}e~Nb>4C9o*4Y6Nhp~9 zZ1p<6;-}ET&Of;^clWfiG}d&TT3DOnsxSC6`tc)?eG@Yj>N-!Zj6~@zi7aoA2(Q2zzI?nP>VsX`N(MHlb$=jF@*DJt?|z=ZdfQURnLn zVBVWbKE^XsJ!JRJ{$wXFb|UU+-Nrd-J|cgdAJ?#h5@)wxPHr?40|Or?zQifWz`&4_ zpBzw>Ur?-{oL`g*YSq^U#riiJh}3=$pRmvQXGDqOfk*DsX6)FJq9b)bYiDw(hVSj( zxA$)!a#-G-|9xI@)w}S?Hy5s(W9xBLYTlv)pC>ZUF=Kt4+I8*cow-WxnTNQ8Ol5*f zSX$F=hB~?WNOOAMYErZ92&k~93NXTJm< zaDC~}_o_K*@rK;!^}SXrU)mp7-@QE4eAVe4v7)R~RF}IYX*FhO$RrDVf6Deubyxj~ z=NjC94T}C=;9a&;{%D{?`{eB`|EuzOfA5%hb8X~(u{lpaFTUElVXDZ26)8@$v(scN z*=Fof+H+^-)${{*zpk3xGr=~?bxPcf&-oG}M;@Md*tQ5bDL&Q)3bfVopQuMZj$fsUDLWwCB>a% zUHPkYY97}rHmzj=T#gd^M6I>fpNl_u(nkN1rRkri68rMz{$~P(X5op9#{!HD47(Wd zrG8Ma7Loc(i%arz!2x=1BiA7Vk=BQImvh{_9l}2G(w1%u>yYmg?rmc%&OhPXU0bc( z^scX6-p=o`?O*3L0yhP-cIsrZ7U5`;_?KsKU zt)q}_xm+Y`>5X#_c&A$?>nXeD2hA%CGU+>aXy%(ojFYWGt_I$075=GIWBK#rE7QN; zd@1+e|G1a0Se?7LF8#JR$X^eyF*HnPU|{&jfX`pt3=9mAAq~hd#-xLOhYfhz-dA^N zeK)=9z_D=IZXb``iY9UgRPv;^b}l~B{OOyEun0<;+9JQ%kB#CU|kZ`0VR_k@0!* zn-m6HhxVe_&~l@HDIL#RBH#1~6{d$Rx>3)vr^Pon+ceKpUZ%><_))mhWW}-*UOtO! zmRsx*;!SPis=Sw4yYuw@_fz;Jc?>*!1*a=Mdv`+Y^7cN(zf(@XoH0Xq*Uo1}1xa7n z&h8OvF-R||_EoO+@Od|1RMt4&t2=7mpVQBTLBZ5I%VgF&1_p+6crz0y`lFrm^GZ_l zO5#H*3sQ??LD9c9^t2yn)aSeQqL{!()0mw!a`|og0y>M_j@?sP_R)D;^sW8rb1!r) zGFj@SxAD>4nKy54ot(38YUmcm*DYa}D<<_l<`B6Yvm!}qzwZ1=w=3+VQ%}!j6i-}N zba}^@dv^pMMQ~2q6(SuVadPX_E00&}b}Y5jc<&9+?vJPjsx83IAyVw-<-$zw#Layt+EwQy3d%bqgzWB)V`Obs`rqSLl zOU^|sxHFX@E-Z8JvPoQ9%PXDk|BPkL%lJC$OV6ijiN_QFmpnK)PvBcc!@^3xD(Ur^ z=Q!BV62%|2T`^?$iA{v84)iiCYVQG;S!U6#U)DUXnC{ zV~zOT^tTH-uI!C<-tkH1$I@FlZ}&{w`&4>XeV4g;&Vy*vQyzb#XVfx-Vs5?Bl*&p* z1_oC)Py%OU5@A5hgCLJ|gXTeyrbQraEKtW8HY*a~jj9=WJP52?cjWeZVvJw04VJt%qeFBn*$zLLmFN~HvqZ82^uRv7;u*p zYyij!;2{I#kppy7kXr_z#wo&-P5fX}Fq*39CLq^UpcVwe1b-nc?Fn@4$b~bgLPKc( zFN~xeTD_s`MlJ$TL(x|hNp~{5I7c@Cxo`lLlnCop#ZbykbdAVq6V+xPaRvq~B}src UD;vmkZU%0KgG>wzY?2@z0H4SYTmS$7 literal 9124 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 S1IckQa4|G6F);8cf_MN)1Ksuj