From 8514b659aef47a210d38ccbe59978a6926af5075 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Sun, 17 Sep 2023 14:49:16 +0000 Subject: [PATCH] [bug-67442] add test git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1912366 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestXSSFSheet.java | 28 ++++++++++++++++++ .../testSharedFormulasRangeSetBlankBug.xlsx | Bin 0 -> 12428 bytes 2 files changed, 28 insertions(+) create mode 100644 test-data/spreadsheet/testSharedFormulasRangeSetBlankBug.xlsx diff --git a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java index 9504b20ac8..762ef821a7 100644 --- a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java +++ b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java @@ -35,6 +35,7 @@ import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -2386,4 +2387,31 @@ public final class TestXSSFSheet extends BaseTestXSheet { sheet.addHyperlink(hyperlink); return wb; } + + @Test + void testSetBlankOnNestedSharedFormulas() throws IOException { + try (XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("testSharedFormulasSetBlank.xlsx")) { + XSSFSheet s1 = wb1.getSheetAt(0); + assertNotNull(s1); + Iterator rowIterator = s1.rowIterator(); + int count = 0; + StringBuilder sb = new StringBuilder(); + while (rowIterator.hasNext()) { + Row row = rowIterator.next(); + Iterator cellIterator = row.cellIterator(); + while (cellIterator.hasNext()) { + Cell cell = cellIterator.next(); + + // the toString is needed to exhibit the broken state + sb.append(cell.toString()).append(","); + count++; + + // breaks the sheet state + cell.setBlank(); + } + } + assertEquals(10, count); + assertEquals("2-1,2-1,1+2,2-1,2-1,3+3,3+3,3+3,2-1,2-1,", sb.toString()); + } + } } diff --git a/test-data/spreadsheet/testSharedFormulasRangeSetBlankBug.xlsx b/test-data/spreadsheet/testSharedFormulasRangeSetBlankBug.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..92593b413a2715aae4378bc2f307e7716e617f1f GIT binary patch literal 12428 zcmeIYW1ARV);8Qm+P2b6ciOgXrES}`Z98q-X4*#DwrxF~%*=bum6`V!+*2QFA9Yln zt9GruRC}E=;=mxt0AK(R000040GVISt;_%c0N_CZ0FVG6fYkV{EbR>}?X?tKtPSim zsGKd#@pC|c$i4#reLVlaS{sv7X;Mn;c1MHS}sIL1xDj&DFz|!M?HOpO)yKkL8lVR# z_OL(^F9X*s-aMJsthjZB*H9*wMNV;BN7e)iX>W2UFBPjB3*^mLZD|hHD+6}oM4UC* zGx-i6ex>Ta`cU#^T|88kV3{Hj85R z?{+TaZ@q5praey(L#p#NC*X5OfYG_g*vz6T<4#vY+ZSXb(@->l93GP7M=G ziQlc0Oa^C-W7TMe`op~5-+=*S{^q0giZp~bA9o}^ToCHRN40DX%?)fsj zyvh-AG)Qo_#ZVT8h|Esd;8Y%%^km}zPEKN*C}dN%*@xgbcRP2NA}r=Y=GY!ZUfNWY zEk3kPC^T~^Pz^sprGyEIl#d;V%9-M$+ApcHru$FOY;tuFtwW5*PsB_#>~ueQ3tn zoZ89C)=byR%IsGXD^s+v+G2r!>zIBGB3obWbMX_%r?@K6o4X?)Zg4}C+a)Qe7SSEI z`J`C?{@U*&(^B?L{T_b7nZxB}bd-MlabHr=bV7k4e4Y>|E2Tx~IDEg%6Z25Z=nLkN zDxqjbT30nb7`JWt z2!}|LG8_gNvKYJm_D(Ab?+4+UvL=$<{VwVbncqS@A;S_a+;MyisQ|VN=RgAVa=|8| z&W)LeYkR@MCv~(;hW*49>OOHtx!#Zg;uWOrkEWkqSF>Qk#~Wo24q{#BAjtFz%jB21 zYsH{BwhCVS7?i#KTmkg0aUCc3cu$hkwAkWICFA;5M0mmXyXG48{OTU(hymc$wIsND zLj(60H*#-U$Dm;djhy6&8zt_ZYBW`*8abojbQ*>!8W?ag%nh5+YO^R05pVKt!2GjJ zP}9}2ISs3ol2)|dfQmh;p%xM#hrr|=4J`CmJ&Z5(2cV1&kz7oaS{b~|S2Z!K&~*Ad zaO``|+E1`_NXvrblZ}&;)s)Dr)d@|0L{fZ8bHeSUzVF)&CoKdAT0Ef!y#DEsv6P$j zjQL^F4ERMBJYDzE<_EC+NczBRJzvO%nPt&kVQsf(9l=>55t%&*OMA53FDfuGS7+h} zQJ<9Sts7xylh4ZBwsp-G<_ha7xHF{&ye49;UJ?4GkxcDDmGnsEbCZUCbbdJIf4Xigc>D>-hf{NZxGyFE z1mK73{v*Zxy956#-2r}-q94!x-#*G>M@;)@pat&(-u$LIZ0I~>0&NVZs zStNA9)jW32&E(jIx}q&>XhnMNaYI^{y`0J)i109tQ1nGV`Ib2v=$V0@{}>q~4DK=( zH_spj1qNN%pI2&CGL6|T)K29JF4FY_>RqwQhhCBiBCz3HWGPNRkJdXhTg>Ism9&j3 zfSaCR#OIzt4wCcXj&H;d&5jy>H)}01W#D9gor>9oLZ!Qy><1O_=^*)bp+*{muw(E% zmU@Rh!58iy}qT=7Ig(Rd`ngz||=*wE4NM+k-N(Svp zzP>OpI#Ek&_1-;LyRgswUu`H17r{>%3IJf51pom3-CX1A9B_-vjNhJdhr@ z9GOM~A9zl2ixYj`oopvFNS+4aP^o(Be2R`#rY&KyUsdvS#?BL0hHR2h0b)#(dH&8x zKZ+++;{dCUmE8h_Fd+T2j$Mi|Fdw-i^=jANoLCQXMxYd>2ZM+ z-s~JB;m6Ekax~@PCFS7y94;N4Z_pDo258f#kLNwn5N4k6{J@n(8y<-w?mD1K$`4Y? zwmvYs(~p`8pifBtM4J632L(f+O;g)n9g;@y?MI@&;wc?>QPc&RGIYE3y&RfBaCU6iNRo$c|EZ*io-FcZr0y-0w^Cy+3BKbf1wK+7LOfJ!Dt` z3c{I94w@Tl6rB?VLM}3=M$!i{O2CtDLB~xm;f0Yhu6vphhK+s?0pg7~HU&+eHe_H0 zhPeURFQt)nGCl;jI{~TCQv?j^UN?sx%$J_zwuU7#_UkJgta-+X`Y~^fIPaRH-@tUo zZ!7wJidS2<+-8D*Md4ovLWM|`iLDd?+SwXJOwWUR1{PupI~7+W;$1qMcM8lKP1%et zz{R9yK$Bw&+8K>;eSF)#z1@DhuxaXWe?HDyTvjwFS$tj(;$Gj>!lJJ9>rr4i5L?Wi9H7PQsWLS4S3X5MSqOB@}U^^Yekt(_1x0H@8<$#nYoP?|Aoj z;04v{Da*Lr)A*?;q}*meZ||)6c0{iDAULrHLa4?lhjRLylse+Fomp7Q+XDs4O!|8O<{LTQ%E2?$geWm@$@$UA~N$RN^rqLFTi*{ww5{w(W44ZAm z!?1}L<1A)1LoMJ+U65X-^b4qQ+Q8>T=CdR^xlE8)^`Z-?s7we` zo9R$GYGhT-*1(`BYhiMBD^%L6Jv{+g+dUfLP)?1>uP={r)GKR+qw_egy7UhG7scr$d(3B3XHpFP*ZfPA^gGQx79ChzXNr<$%JK{V}ouno%pF zQTF(<1KRH;=B1aJDS5dG03Z74t%G~-(s#h5bj~L926-qT8j5UklXEH`KMMuLVD7fy zIuVt3wHWn72pQKS2oW?nq;Q_~qZ@(W_f2rripOdkUX@ zI+?8`*P6}G!;!aYx$NeP7$D;HBgc7>UCb-?^&F&QGT~eI2Wg+mjgqPy(fX`z19*Hy^L$T;M{By?XOOdD; zf_=AAZcv(|sIR6tjYRS`_gnT&gw!8}Rd&%PEh8+pX@?`NW=gF4NsZOk$ zlRNSJhT+ahGq42HS5!A0nNFH;BM#u2dh{iOKQROimNx~eeMcLgHo*GOJDK3ET&-+4 zmJ^G%`O2=uHg=lsb{#qIAjCqu3(0bma!j~FSy}e{?YzB|{h7Vu(WU9YvlO3ZKAXnx z!-j=(QRT#3t@w!OOHmRFg{gH^mQiE-K46X1YK#f8iw~|QGd;g#+ckP{I#UoO#{)f} z6{5R`en#X0dYVEWNHU2kyc{!$YVyPFj=IS2htM(&zi?R6qpTNh)j|7-QeVLQ1agQp zRPiGWL6kUvoxxjg==w*&1zxFlqnz4VT0ow|}Nq=pAhg43HJ@PJ`b9ycb1xagIQxOq`Ey#nsF zr3oV)IHb}&zyX#uJHmw8sgkwp6){7`7qVEDa{F{QE@eK(5*2nA%tHzG<^Xk66Q5n+ zNQ5)hQ0`pCcC&X`!E(?3skvbz1UDwt4ClFT(j_bG$B|ZEJsz_m(v(M{^(sMU14jIs zrPb}I4azUq+&o69C5PJj)D?vf7-P>79f zC?Tn4N~`h}ldA!Z$Ct%ImEje;fo+q(Mzc`nCjN4GMUW5YmS~~OMf_#)NVIIwar%h& z+&O4qRrp^G7aVXPcZNf-bfuF?%Z|I{HhoWqi0EnjNc_5w)<}&y^^HVe7fglU z^7}hovxK(0@|4}xVYlftK7^mDTfP=>k@~>x@vCZQ!*n5_F@tYHLBj&uae`&E4vfsx zTz0F{x#9@w+N737Z8J_uRKWaq1+S_=Jm{7UL8waJFI?)qK^caHM#uBtk+sx%=fzJo zWg2hHWCTQQn*yl<>P?-Rmr(S34kD4(p#6B;W4}zuM#Gez$jM76e`elQ4L_sf0`LZs zBNE*j`T;FH2~pD&M#j3)w@f?(foK(oNTS`O@C8Op@u8B-=dFM+w1I{$FF`{)L>Wu& z&RMr_NTT6|;`o#kfs{`QIA8_Y0omYazAJrN2l3h3*KcjQDjP` zP&Md^UbrK=6Wc~f>d3`~b*98>+;wwEYsh4b*%_5s8NmHM{dc7;xy6VogFTo~#E=4( z?rHhXYW{GX(pLW9-FZ&BEs3g-n=|-Izu*~Sep_u~IjTB--QbZP1APCbtFbkU%HATg zIZk(dLYr0<%{^+7U4WAx zTc(C~r4h2B=hg6Y6X=d2cEV=9%!3}##I|;d9!Ef^7$v!)p1EsS zQ+Qg{4rptwah`U7V7QxN;NLagjls*B`Euw4LVSWoTlEb_c~ck2C{;B-i%(lfV}b)l z7W&qX6t@%cVRoz*__GnvAFX^&9w2Q~ z;ovky%d#z`&8C3kpC3{glfSOS6H;#5kZ_aIEk#X2tMVJHcBO|(+$uQJlYH093v!@9 z$(k&Gmb!M1ikOiyYA$O@ErtS(eRTe!9>Jd^R&b!odA?RYd+d3j;G~iSMz%PEt|MWH zCF_7Ls|Cx4tZC%0xtO9nWv@IXbCi^=DrB?!iN*p2#d-H`L$G}}h+r5xP5H|%`}ZK+U8gGvBYPU z{+5)WSvu)v-DWIX`lARq1T(?Uq)k2~B=VDe?3R!9rVx$fgbZenNC)V>^Uh$+gtKaB zIr2@87^0b$4^BFX7-%&?0`Y9>aZT zX*Tfo?1Rp9-GnBAtLUS@#co@z)bdx3Vx6u&DzHu2C?tJlwR@A){y60zDiNrR+v#W!y?YPh_!9b zdV~RY(@LMtVF&!io;5~mUYvEIf?O8M^j#TPPN z!A~w5p`kRu5&hf9YnA$u13BD=c8sh#?9A~Kpt{baprc9Uz&zF2_AcdE076)pgw`lp z{pQnFhx($s%{c;o#&iAfcNGgq(*VPIPBM^osocqvpKJk|1io2 zN%i19P=gL@|ywGl@f?27U%7em~Bivg@AUF2x2C0Ur3Ft zZlGd-lxl@7$Ab1vit~zPEAFQCoq+_(KN)7_J;_&`5LQ`tnr8mYnj%EOCs@cRY(^9# z1TFv`t49>2_*veR?_0^(I3lKMV{_2gfl~MLY+e!D-YTGCcd9z2(5%%ozWs`Fj`2b5 zqm<}NI-jWQ&sG$KY1!aQ|H}W_3^aOF{z9j>PQ4rCb~~sS)*PQ;g-xU3xTDrJ_t58I zbC-Hn?4qY;VFi|w`^TX5F~`~%gJ^8BfDJZjw?7E4*_lIU`iL)M*`PIYof~YV&X^bE z?m0b#4=-Iv+#vX8P58!v=S%3=(qsG=ZrY{}l!^&$phy;&UKXMdye_Xae6KcAzEe)2 z?F9Rc#RJb7Kg}Aq{1mM;KhoWyrln51!yvfcQ5l{*%sVDoa_lVIAuM6d-u%rJc1 zu8yZB;_&gS_0ymXjRT2;j@%i>nV-I4T3e1Wt38{|j<>YXfnj#Js9Lwk#(r8J!(KlC z2S}qQII{qL5q<<|{SvdHR66YLJq=M_cj_0(Ulj6M)q6~W>J|J`2Tn(C2Ba`xIBE=U%-#^CZq9hkh-Wd8X-C+%@Yf7;kf$DG(2? z=khG7=gr(P7D!Uw>6gw}4 z4OD}nvj*@iiv6vW2Bphr@ys6jg0$-9IeNWTDGP?KEO*(f8-p{nd-zBp(ZoriEzw4H z$uHf{@6Nl4M=2__m)HphV~CRHfT&FEy%sWGUR4q|yYq6_Ju84t3GVx%+U^N1)93mK zrQoL)LUKh9%J{aZbG2>IDtZ9#F9MVpGsQ)m4)unD=zA$hnmCq@jI*^@(*Srx&T=QkK2S0(?t~x=F3p z8rwg8k0usOw>^3gPM6CmS{B?kUp(ZC{~JhIK_}CXMzNDL_qe^>ZueE;h{K!5Z#v%! zb5-#8H9p%uK3actPTyq-G@)tx!uFhx zZTMvAt45Q;g-IipNURF%3f{9M#)bWrNjjv0oFV^PJtYr%U$k~6R&;C27LrAEP2ISp zOI%3k+IQDylV$uL84A;}tzCt+E1D{_%c8x>D!wVo1#udb`uhFsd-?h^GqagBnQrn|0~u5hqelqLbP&yj@XX|7dMor}Aq61pE_Ad@&?Im{zsmX#pPo=%8`q z8_I=U%(qH7c)*@<{&*4~Oh<}e_j=D@a~KdNt43yu&hkUNg}$Ey)pp~Og9&(lR52R` zAdUFeB1Uv(+_vhG+k;^<;`lN+#vnJJLMs4)z4K@mXy&VEFloYZB{IRFTT6YqG`p&o zzVJgbYOe-mfI&wr0uoq6)GHe5)(qN|V1STKcIDMVmu7Hn57EU(Jld zxB8R&t_9@FIw()1XDq_JO#7C0zJ?KBF90*WarR)!yVy-8jLg7Wq!OS*oy!pUEg=p%qT(roW}akIh7{=>@@4i-W6C(SsmO zjh4q{7()lMNRiEJq0%@M+;7hrl+khXtPQoxD)NzY^;BuC^r^0=i|R)wPUHgWK~)zg zT8KU9_^_I-TVr}I2kdqq9H}RVh7chlDG{az10dC1TJY+3jvo(6EVsFrbYdbb1i6>q z&R{zhXCqcIULUlA|FlFMQAqfZ4@*S&xC{U9mZ)QG{Xaweu)u#F>9M@OvVOoh@Dm>N zDi-Ui475*~u87i2l@4HRgOOx`UUm&pa9PaBd{o2K?4s*Y#EzTulYr^wbZT zklh?)P!KFLw7Uf7g;fnt6wp}6`b%0K;z;i;AuV^gG;Ab&TW?TdkTL=B_-}GK7TNSo z+N@R6eJdDSOy>sXm`0mSOG&UmL!~usiPrcKjI&9H$Yce5iqd#6<+(Ty7dB23&}DOt z@olw%4~b8OwXC}4MGu};8wu%Qp@$9HS~a=3R0-*gre+aAjNr%p&LG6=U`M#4Rdo?I z81+XcbAI{BQ1)KV7D_n}7Vu!{VmBo0NWs-$%d_G2(jqF{KVHHq0kUJwlLPfw@5jyV z1*wIB(f0cZw1IRsv2FGTf!|D-NM_jkMp!QgX)dK$mVK<)?8ccjQ>33r-Edm`Y+(GG4I1C{*7e% zC-6_I-Cxk5kBs{V@$OIX-^o6IK|ey?r{CcJAL`Gaa{eTI{3U4+`v056f6zbvl=A0B z^punj`K$exfH}P10{;5({uBCV&HWb?oai6WKP&J*CHz_F{3T(Q z