From 2664c7f480d0eed5d8dd28378b0515e5346af435 Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Fri, 2 May 2025 11:38:43 +1000 Subject: [PATCH 1/3] feat (Benchmark): Add Benchmarking --- .gitignore | 1 + .../Benchmarks/ReportBenchmarks.cs | 46 ++++++++++++++ .../ClosedXML.Report.Benchmarks.csproj | 25 ++++++++ .../Models/Customer.cs | 27 ++++++++ ClosedXML.Report.Benchmarks/Models/Order.cs | 22 +++++++ ClosedXML.Report.Benchmarks/Program.cs | 58 ++++++++++++++++++ .../Resources/Benchmark.xlsx | Bin 0 -> 23415 bytes ClosedXML.Report.sln | 7 +++ 8 files changed, 186 insertions(+) create mode 100644 ClosedXML.Report.Benchmarks/Benchmarks/ReportBenchmarks.cs create mode 100644 ClosedXML.Report.Benchmarks/ClosedXML.Report.Benchmarks.csproj create mode 100644 ClosedXML.Report.Benchmarks/Models/Customer.cs create mode 100644 ClosedXML.Report.Benchmarks/Models/Order.cs create mode 100644 ClosedXML.Report.Benchmarks/Program.cs create mode 100644 ClosedXML.Report.Benchmarks/Resources/Benchmark.xlsx diff --git a/.gitignore b/.gitignore index fd71b28..7064b2c 100644 --- a/.gitignore +++ b/.gitignore @@ -290,3 +290,4 @@ __pycache__/ *.odx.cs *.xsd.cs nuget.txt +/Benchmark/BenchmarkDotNet.Artifacts/* diff --git a/ClosedXML.Report.Benchmarks/Benchmarks/ReportBenchmarks.cs b/ClosedXML.Report.Benchmarks/Benchmarks/ReportBenchmarks.cs new file mode 100644 index 0000000..5abc2c6 --- /dev/null +++ b/ClosedXML.Report.Benchmarks/Benchmarks/ReportBenchmarks.cs @@ -0,0 +1,46 @@ +using System.Reflection; +using BenchmarkDotNet.Attributes; +using ClosedXML.Report.Benchmarks.Models; + +namespace ClosedXML.Report.Benchmarks.Benchmarks; + +[MemoryDiagnoser] +public class ReportBenchmarks +{ + private Customer _customer = null!; + private byte[] _templateData = []; + const string ResourceName = "ClosedXML.Report.Benchmarks.Resources.Benchmark.xlsx"; + + [GlobalSetup] + public void Setup() + { + // Load embedded resource outside of the benchmark + using var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(ResourceName); + if (stream == null) + throw new Exception($"Resource {ResourceName} not found"); + + // Create a memory stream to hold the resource data + var memoryStream = new MemoryStream(); + stream.CopyTo(memoryStream); + _templateData = memoryStream.ToArray(); + memoryStream.Position = 0; + + // Prepare data + var dataBuilder = new DataBuilder(); + _customer = dataBuilder.Create(); + } + + [Benchmark] + public void ReportGeneration() + { + using var memoryStream = new MemoryStream(_templateData); + using var xlTemplate = new XLTemplate(memoryStream); + + // Add variables and generate report + xlTemplate.AddVariable(_customer); + xlTemplate.Generate(); + + //Not testing the save, as it has a high overhead. + //xlTemplate.SaveAs(Path.Combine("Output", "BenchmarkOutput.xlsx")); + } +} \ No newline at end of file diff --git a/ClosedXML.Report.Benchmarks/ClosedXML.Report.Benchmarks.csproj b/ClosedXML.Report.Benchmarks/ClosedXML.Report.Benchmarks.csproj new file mode 100644 index 0000000..51cd886 --- /dev/null +++ b/ClosedXML.Report.Benchmarks/ClosedXML.Report.Benchmarks.csproj @@ -0,0 +1,25 @@ + + + + Exe + net8.0 + enable + enable + default + + + + + + + + + + + + + + + + + diff --git a/ClosedXML.Report.Benchmarks/Models/Customer.cs b/ClosedXML.Report.Benchmarks/Models/Customer.cs new file mode 100644 index 0000000..ab5a144 --- /dev/null +++ b/ClosedXML.Report.Benchmarks/Models/Customer.cs @@ -0,0 +1,27 @@ +namespace ClosedXML.Report.Benchmarks.Models; + +public class Customer +{ + public required string Company { get; set; } + + public required string Addr1 { get; set; } + + public required string Addr2 { get; set; } + + + public required string City { get; set; } + + public required string State { get; set; } + + public required string Country { get; set; } + + public required string Phone { get; set; } + + public required string Email { get; set; } + + public required string Zip { get; set; } + + public string Fax { get; set; } = string.Empty; + + public List Orders { get; init; } = []; +} \ No newline at end of file diff --git a/ClosedXML.Report.Benchmarks/Models/Order.cs b/ClosedXML.Report.Benchmarks/Models/Order.cs new file mode 100644 index 0000000..5221c57 --- /dev/null +++ b/ClosedXML.Report.Benchmarks/Models/Order.cs @@ -0,0 +1,22 @@ +namespace ClosedXML.Report.Benchmarks.Models; + +public class Order +{ + public required string OrderNo { get; set; } + + public DateTime SaleDate { get; set; } + + public DateTime ShipDate { get; set; } + + public string ShipToAddr1 { get; set; } = string.Empty; + + public string ShipToAddr2 { get; set; } = string.Empty; + + public string PaymentMethod { get; set; } = string.Empty; + + public int ItemsTotal { get; set; } + + public decimal TaxRate { get; set; } + + public decimal AmountPaid { get; set; } +} \ No newline at end of file diff --git a/ClosedXML.Report.Benchmarks/Program.cs b/ClosedXML.Report.Benchmarks/Program.cs new file mode 100644 index 0000000..4797db5 --- /dev/null +++ b/ClosedXML.Report.Benchmarks/Program.cs @@ -0,0 +1,58 @@ +using BenchmarkDotNet.Running; +using ClosedXML.Report.Benchmarks.Models; + +namespace ClosedXML.Report.Benchmarks; + +public class Program +{ + static void Main(string[] args) + { + BenchmarkRunner.Run(typeof(Program).Assembly); + } +} + +public class DataBuilder +{ + public Order CreateOrder(int orderNo = 1, int amount = 10000) + { + var orderNoStr = orderNo.ToString("D6"); + var isOdd = orderNo % 2 == 1; + + return new Order + { + AmountPaid = amount, + ItemsTotal = isOdd ? 1 : 2, + OrderNo = orderNoStr, + PaymentMethod = isOdd ? "Credit" : "Visa", + SaleDate = DateTime.Now, + ShipDate = DateTime.Now, + ShipToAddr1 = "ShipToAddr1", + ShipToAddr2 = "ShipToAddr2", + TaxRate = 0.1m + }; + } + + public Customer Create() + { + var c = new Customer + { + City = "City", + Addr1 = "1 Main St", + Addr2 = "Townsville", + Company = "Company Name", + Country = "Australia", + Email = "boss@gmail.com", + Fax = "0011 123 456 789", + Phone = "0011 123 456 789", + State = "Qld", + Zip = "4000", + Orders = [] + }; + for (var i = 0; i < 10000; i++) + { + c.Orders.Add(CreateOrder(i, 100 + i)); + } + + return c; + } +} \ No newline at end of file diff --git a/ClosedXML.Report.Benchmarks/Resources/Benchmark.xlsx b/ClosedXML.Report.Benchmarks/Resources/Benchmark.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5be737720af51cb483edd97fdd4ea835f0aae0b9 GIT binary patch literal 23415 zcmeFYgO@GevL#%$ZQHIoW!tuG+qO=*>XdEUHc#2M?XKUwx5wB0z4sry&M^{u@0BZa zuZS5lV&+PDDPRy305AXu0000&06cPi`*1)2fND?x0Av6NAT1#~TW1qnXFX*PdlM%e zI(Hjuf_xAlid+DopZ5Q6`5!z2mC9qb{R{|QYG-`H-Kv9)VddozJkGzG#b@CeZsXNS znh!CXd#+b#$`PUvwCh*0pSQSYq_1sO*;a9Yu*{%u)7(VBnw{5H$`N`BYNn$`Ha%da2sVwl1R5$p}hj|OFJsd{A<$7Jlk?S=!u>XJF_3r#0bqE^O?fU})L2yOhj z8X&t0qi4W?UF8RTQ>E=7O^wlRWx(ZPpOOpGwlrm8wM(wk+9ZEjFi1LmbT=Yo>;dr> z1$R&hl%6>!B}ror7Ow!iS!yPqb((B~$_*QQ)ZNtX^}Ar^be4~z5U}N~e)a)&j!ez; zL&y@#rU#^R^IOkgY~RO(0K!~hJJ>5Us{|DUv!D#(I{(5DijNAYNOz5@vN7(4|;$}R8 zpp=_{cn6`fufN0wd{ayT3HD|WISzs{RuHh5UzhL4`1&Sy%-Ja6(;iD@6cP#-akE=h zXzH7T3pf>-V~VIl*C|$Q@WU>2Zd`_992bYX`a;BHnHf!t#BQ}44oPlBytf> zC>l?Cfab7_#+KnrHQ=J4(q&a>Z3}zu+3%T5zvYzTQ&_(6U(y%z>8PVlhGwhP-lNup zkFQuNO6I>TY7Mg;If*>l9BuYNyXmjz*`(ChSwlUNm+X$ zMM2~2^k$P+(^!i!(o)AJJjdeT+e*7o5FN98#f*UM_N_x4{at!_TKJN<#CZ;_Lbg@0SO zf8v~lWOWc70k*$mWIu^s*&kr%AxmP?euE7TYgq^1!tGGBtnZE%RUe<1RC%c)?O6ZQ~*o6->JeFrrv> zv$2+a?cY}EW@k>c(0#R%-J$cIJ{yKYK|H~wLOW<9QdM)U0EI1y*a^dWp}?ePUtXiP zqdKFh&@!p5GX`7GPRy5W*wmQxkr{|BZOx#0Pn)c?V@CYY-NrAn4=eIo@_LnQG$2Ok9 zmzAJQ=`V=Fs?OD~1&og$g#K6T2Jj}O-v3~>{fFSN03ZN=u={V0`#%xN<|r|!JkA8`YVjVEz=bhan+fg=tAWj9%8JKa-EEj+4o@^o2p$$eMyQQ*e=xL zdTPY=nH6pi82Pb}x-=3A#1q;2nhVr!>V66s!tk;RFHj5=8R_Eeyy6lXF2f1AjW=`K9t3Bn!$z1(rFfV{3qT|G#>cB1uI=t1va*{5M)rA9)7n8 ztv`X~1bX1l-D5&ZaKm~4%$@utq<-lWd4jm>{4kaAn6~OGc!N2_sgS}eXXWt@btVWK z6~p(VOmsTTPw!B<-gOpyAE)eDzoVIWxHdf)8(G}`vGjj+8DcgIpj|Kk03~z)0F0j& z{|Wa_<|Zc2PW1oUG5!?ty zFNenbL5Az8jEc$$NUazStnZ$t+{+%iC;_bfVUi^z3~YEJi3XtKCxgpFq1+scNE=?% zW{8!n^wYt|m?ZaF(Iv>J<{6?N7;&g(K*OAd(2=OtRc$Qh`X*VgD|IwpBnF*ObRgF0Av>$cKGN51rl|r5kbhi?hdO#MKKdmgNS6J{p_WyXOM3yh_?a5Ld{etUpiX& z84to`{VG1*!wA^jmwC&VLC)~N0{UJqRGd&ppF#6ju2e_YL2dsQSVXf3Ued}oz^pAm zQ0;H$ci=Zcl8=7R81wZFb8=q^0<_72*(*h^@)s2Bj$dq9)^!iLE2H=yeE)Lfe{Hf- z*MGbcCRC5~2ACuv*(d?T+*+b}n`ku91>Gu&^SrqQ-(-w4-g=>uox1xoU-~O)@anB( z;!rcEx@6$$^6>e*Z2lGHPtWMUMtB+wXBXHD~H@#7zp|12Jmhb$5OH zZ9a#7ruRsxjRvlxA;z)M;3*_&2;{2-{KFSvV)Np&HuFzc@m+=p<9#8SFk(I=V=zl_ zW3V%2y1-o?5UCO%VTpfw(nMOlP7D2byiABdOh7-skv@YtgE?}15nvIyXyl`^Z38}U z+1#)gHi$LMFI?Q8GSN1^LKe_PB5V67W6jD?TO^!p&>e|-17RL%{#Si7rSW3`PW_wx zQK)OP;f<^LA`MjG>m!9~C;j~1l#oGvDfM&*JQjm@fey$v#CI^U+VIOjU1gT2^Ln776Hs>J}sK+u&S4?e@pe8yVxlmj%MdW;lxnK;r6vi&+ zn#uAh9$5V$58&_*V~TPLr;t3TbZX6V^;?_f&m6XfsNAVsg1RYrwB&_C8`1E+yopKPNSLDZr4BKIvN{b!%9k`(Lb#ZYL>iJG zb?-19EL6z1Qt}r^BpGkr<^L^2TCBn&HX%}GKNKO|V7W!&5Art^8MPmXAYtmn6tNc{ za79}ETTf)HG!mIF(*}G2;^G8@V!MOjP+3J$PN|4u5eXv#D`F!oVMH9%u8;(GdKXjz zG;eU#w?1Saq~r-}s0g38P@(w0O-~$wY{Z^#@GyDVZIy)VoFXI_X-IM_e5BQIzlDy6 z$u2KZOPCG)fSH`jj4v`?z>U(*--td`Hsj6&BS}}J@$vf(|NnFIB*h8Y0e+Z|{os@q{tfF1yqOi|NLWyWEWO$?iqT4%i&)k> zl)T!2SW0dH@B&KKaZ><5DQEj6*Rq4cn%wc59wWMtxLF#W?+O zmBrm_4P?v+h3q#H$RQ1vsjBKp=WfM|rH5!3iICEJ+O zeeW9e*sdM;tA|VSAg+Si>gvtYemkk3gJ-{A=w~CJ=(yiuIltp}PAoaxw2j1vg-GA} zE`xlmFwT!?=dj(DS=~qkqj;@*lXKf$o15B*5@qsht{7_g*Ua-5fVFoUc#mf@Slo0A zcIC z4l(hr^(dKc#xs177v6lM!ozL7N(vQTB4i(c8Si%nJHdQM^T!pJ+HE3~gfPNn+#yo6 zN1o!?{ABcl0mj4xHzA|vH_MC#V}$#t}pY4g*yi~ zzgxS`8M584f^Fko5>-X`7invYGm^}Q$NSISzMIvX)0>@FA$MP}9{kLGVk8p#s9igdAR==&uyG6{-Bw53=;I=jo+WXXLDRPi?r_hoU7g1@c zD#yq1v+!;}2G$5Gw#*n)3*i}n+UtSwDjJWBL)9YX8S^9lCx=8=BUgjwi#?}@V{+r_ zrSr!SOR6YROa7-i?tq#}x)ik|oK8TEkA9GDZ9NMXG~9na?16N<6t%0n-h!bpVcE&$ zHVJ4|CA~q+A6i!-=mNT%u!Y1a?7$M+Ezq=ct1i6h2IJe$1wwif4MYx$!y?TO@p5mTkPLPfQSo4g}QEwZPUt8x+g$@eUUg>_^qIEOQYiLr0FK&I%y(HWX zcqG;$^An`r@+c|x3Y*Yja6_L%wN=b8KmKdD1(H&I(?=4wt6E9Veyjs(v!wK=T9#aE z+~=5gpT~;nr3=bu4JyOktlSoInT}NLl62K30Rb@u?Qel}`s=D$9}-pN+F7^joP=|hE4c}d*Q#2JmnLIG_qkQ3*u%mgJ^L<@Ft~KsIf8D zgBYWi8jTrZ?VS+auxSC>T$~@T&Xp1<*Z&EPd`)#Vf(_#B4UH7%0tBghRuSnB1MPHaciy@R3<)&>N$7q!2Ro% zgYd9(BF{pNY4j0mfJOS0-Y@Ki#N;#KrZy>R%sJ^ZrxZ3#rWI#L3kHsPGG$T-OU&6j zBIid<*OMPfGGM9WvVyt6eCgPd2y@TBkZt}vyHQ~bgYrIkG6u@J@V%FPg<_ySX_znnwqG&Umx8?UC-K(p~qE4U5=kL zOEoPzS8u0O#%kT$@wXF}^D8i2P{V#2DWU8_72F(6BJIZDtvJ}dX%XvQ-x`z&dlc8F zqV#Cag5sU+2cK5tmfX&ZKJP5r&F+nwe&K%8kwcy!oCXDC**22>iHRe)J2cL6znMK1 zM<82I;Khj^wo^(dq}2(~BH1OOfB~Ok9)U6NeBy04I|6l)S1Re4qTq0WLb$#Azcl>JL&4cy#C6yxMZG}1O zP~{h6w~Oa_it5FN(kG@PhL+WG zN|ap74aAmTC0qCx5gJE?lvBktjErE6==$%_RXXnhV7j2hzI;q;s*Qo{$lwxT12{Wo zh53zuz@s)u+PbR4AJn!k^Lc*nfms9w@mR|d;)6-alk}RaDw`>NbSp1IvM=1i8KdrZ zbP;&<8$2Cc53Lr6eau_$@#sy~-l4#PcgzIOUr?81L#v zAK)nTT*U?a%LNnMm$v|tA=C%X@(}(_-5=vZ6b9C!j7crvT-8Lk7l+8}#2Ee)q`4VE z+O!kElHEe8Dca`Dn5O%txy4$Rt`k<~)TZpW0E~1o*Qf^2Kzd{s6D}#zZ;I6KA9>@y zRFG>Um)=!pd9^w)rY- zrDbunL&m8i;?JCtT=vAUFY2Ug05xP88F475W|LcJVFN>+jdRN~Jz8uXS> z1>qSI*r-fz0Va&}LmF7ARuiWJbq1tiP&!HE0=tatgiw|R(2#W&OCb{2)t1A2^utpk zn$sk*Mr|j}_7u^UoFk3tehVOZwG?F0wedT3J*~P7NI%bB@*>2EC~ws*03G6-DRW`C z-M3J?;JFkedEU6hLo8E2vukQsGSU(KgOL2Uhg$}%VgXGw%_RB;q`z$*g%JsIjNA`6 zI>?&o2aKbXGBF%%OIDj0@G+77?i>>hV0paOSVJD~v=cpMfU%Hw95&oEzUK4>O!MI4 z#L!Aaw$~W2$lff_N*R?y1H8w?OA+5C3@tqV=_G!#f6XAwoYAFD?1*k~$wk0Zn} z*s1g1ndvz`Z55V_M0|7+h**Of~A>JR-K&vG)V=Nrt4EC%=zBT8T9<2l^kDkuC zwM(au7t>9NXBr+z3%%!tM&6L_66``sq&kobeWtV$~gbwzoA7P?yBxWbN)3#vM5Q4wS9YJya`@5qS12~r)!mPff#e1&y45KcUx z_8jeL_+x3xYNgC1UttI_m=8uzn4yx|e>n)-ZuC1Ncay-XW5;jv)UskVG{BNoSq4fu zb5XNZoy3Z!v^E>4mP+#q)uODZDeRms@1BO#g%)$EWzA{&1Rfwp1iwYxcA_F3ix2IO zBP^vcA;|(1;9GpG9V2NBf&xf5Bp2kE7jS~%t~O@m$}G^k3~)VK<)d$h4+w8g1?b z6pwWSC2N7HORZ!tRope8qVx@i{U;Vn|r)n~~m~dEa`}%o0qHadI>o|25D__{B zdN;IG7KO2=iDaZxBw>#H%(^yluQwcUSEM%4mjS+zw5Iw%DUc+D7@6$N*YB}bp4sdt z@3EVFjJdlJ;;IdWf+v>rcl-Hc@PD;U#5CJMdRU}7IGAN5FzCs4AA zG9KA|#-wBo3+-z7jD8o-wF2v^aHYEy?Vy3sV<~F`6L^0O2n~ED_IKcH5K~znUw|)5limI4p7I5g{7fT@EvtnsBnCeGcZ)+}WaRHLgdM0? zEC}^(ZKrO#b-e3e6Eq6dA&`yShkv=@yBiebl?(<@sdz`rGAkFCqS6+>h>r`FW*ndu zPL(e;%Kwy`#1K2S?aKOW?QSoZU01y9KqaFoHwS$jde0UgAT?b=ei(C#e3ge6;@$cz zVl|3j;)}0m3vy<|e;+&*-yvZ~0=5lh7TZi9uH5{N%VjSYJMfOrkc8$K)>86%r7)S` zWR0i+gyS`1z*2(Y1)s-ABFTX^_Z-l(89NdGzP|km`o6(<@B+T~oprL_d-8t%$~)%# z{T>$9%l>|J@I8ENkM0dK(z6wmopZQ>2I)whr=b(^_fhPg zGKs+6%NSX-3exD^;^2k+zb!{s&i-IG{D}3XAOHX;|KT=s14k2MrJtPA*6d#t7p&Z8 zx&I?&V}HO4hHbFPDy^i%Tq-I;d9ARqtV-DtWygS~93&4*1&;Mxt3&Fmv(7cmN$clU z`vow*F~&4%h+Xhx~vy$_S!sf-P9r1~jEB zZBF)&P(g3(I1+3vmEu}+iVaIGA~`75LNI0TnsVNr8_3~22y7%-^yMIRD_E1>t)d|%tTF|XJkLd-?y|fFA3C+<3n&L%q9FL~Fn6-0oGq5hx z=CvbHz?JZc$x3NjSBhWmOT6m`#j%N?6s7tUKYCesC$_pZ@S&0~9z_Wu2%Ld>D669_ zkY^Se4Pob$R+#{|6w5;~UR1PdkJa;H;MLD?f%#9Lcp$7;_SgwibKtMH@^I;?i_~vqPx~;N&pGM1(ohmgwl#bsRpZ zJ`!wQ+oJA?M4Dkh&ijv!T#w+-=;id_`r-QF`{g4P1X@4=Ejv<|RILC7kr;qG70B4- zc?~Ijq#f@L?NQ~(Io6UneH-$&wPw_id2ndyhB)|QPUn+*afTy7tznyYoEy$^hkq${ z?J7&qN--DJ-x_N;j)&3(;z1o{D{b!jJ-nL%Z5R2x?oZ^nOp{-jSk2_&cUMQs`b-Ro zONk*#__tz9^q7+zn1~Ff{5eli0KVS~Z0ipAz3Ga60y^NvYUiXYWRx(t=F?V#l~%nM zQ}_&vT%3tDWGR+a?OwsC2x)bNaZ*wp1wah7Z^=KX>R>>_n`mB;mY2*b)q9Ir>qe4= z1NRWVpjxOU1u6ko6v#*jNgx1jo@n0`j%F{z&HviG(19`w6CTK=UX6Co0fey=2gC=l zpM66pThZt-VjNTnmm`@kO7R3Z5YmD=+=et>N}+?zxr=+ z^4}9|pnkmhpM?;Bd&^)x?q_ej*i;$NUgN4HS=NwoG zabZOO06@Z@V{?cf#|L24o74W;0Xiv)2?A74+QR+&1+RZ-EK8=!F+tgJKgp? z`TTyA*?`}0e4$}g)3m(xyg~T8J45CddxwLy>pgoz8M@oa?347js_S_XU~2dN$FrQb zBx$NUQZ4DWI|xop=knB2)LQ)pR6nF8a;F>Z8?cqKV3Z;b;u{KaIH< z_qhNS%GbMb5h_3p`^4#k+vz}&4h1U27o=<_uiBV;=qgH8Kq6t=Uh_L;!{DmM{-iE$ z@>M7VqMC!d=tye3wiXhp97r5#BmR}HE{e>;U5nI)nS;XRY=l^$U{oqip->s3Oc8Gu zDb${33{e456UlTxtNsvd7`Lr_!7B13ZL3x#RAdUJ;o%xDhtL$c zg2zT*u4zgeDsuXcjdeM(vi+U`=qHyXMfU`wE(omZzIk6==bNZ+0bb7@zv^huMqPHK z3}J5(NBt#bP(>v3ak2FwI4<6r=a&A97oByEVp_IO^QlV=K(g$6h!4Z2`6sn-tpV_b;23*jes2uV4FgZbRi@IPlk-M+;WPFog}L`5t) z-QQVJ+aQ$iYnCCY6hf{%DL?IFpW#E-p&B*vOD9v!2g7}qsr3%%WBv)_90!TM@2esQi&0G5h`DfmFc#ZmI`K(V5yv(R@Fc9piX zEnlS(5@(37vcgXp;qb!kG0qcQoDWspB-8D;8fBI#T@l7Vgo8;S(c(mDL{~@NXM#E&0z(yE5)MPeC339=+z_Z!zvxc z9Y4G=T`!iN=0&4%DDh1uiXU?~pR`*)Uan@et%i#9<_>Nd?kug_%Sg zj^x_U$X7@^A29=?mb`9DR5>|W@ds+!jmC(GL5fLaMxu$QHlx%KPj7`@!}&rAq*#Wn zXhr#Pu|^<@r=`W!@9MD@PvaiQxV*OJ$o#gD8w{sv2-nj(d=oyscpD8&!(S7{U_P#- zsGB}|A+fPdjO7aA5;GZ;V%j2j04$?u=(A3{MuUUwbt;9ZCQFCBBH>cQlQ{Tn#s)AB zAG&W2D}mvz2CXNIYW2~fQV=OWJs=Z-geR~n)hS2FLtPcbqdilpG}6A8^fd!GcO=(G zuE{ISia3#nE_RY%O)hQYHyiSJ$-Sr-7pb&9m(RY^)kXjGK^Kl?W*h}QnM9?Mr#n&^bDA6VnbH1)Jqb?!`1h_XgeBqNQztQ&d@mBLCSd;;3B0_4SAIt;IyHk#7C z+!<(@JCu59ouR;q(&PtV*Zejd#G=}zoMV^{D3y%?NpT6-rr7;JrP{}o^dRXAahkeU z+GG#Sg~SRXJG+PuZ7G$-nhBARR~YC&k0IE@nm9BrecrBW3k;9k_3GpLl-rY-e!`L# zfn^pVFJ$1EA|>?G#qZJ)qO(HD5D;qFoeMF6@z%sh@fuu+2Hdl6hg)atF2WkqQ`ge&T)>f&M}?GX?NX37vE ziGwzBhv*RLqZ;W5)Fz+@M~<%YBATyrexPkhR!I0c=_Wl;_r4N83l5&LI&Cn%}K?gNESeK+2@vL z|MAl%RR`z&K7Ko^K9hNZ%*~{S@p1+gEl(v&B}FadXKzAW+zCX$z38u8DcQ1kae*S4 ziE~zNj-u`f(FU4CIn#Fys`CCTFp!6M~IUvLtk zT!tP}B}CtVmmMtBqO4R=7tuOpqX^whYP2}~F z4g^`3g+>r)nuS=Tl82K?75VYWXsd!)l5J8TS>T&vrcNRKgY~Mx{Zs@pB(<4|Y&9p3 zG7?zwxXP^wAwT^2(zQJ9s_bc2r0-EL?82(8yeo~k8={o8|CkgNIlGJ8+YhCZVce`jy)ZhfNLoW; zNHqbP;$vY);@JAD#V`BzG-$;4;*Uhkq{+v<9gujsUZ*Jq#)ACDC08-AZ9Ofll2o0&-!Euv^sp6R^vMh8?`+8m zj`GI6+8+)q=J6J23q2q1X55>VQfW4H^<1_^kMmTYAU0 z%>RyU9X{F{JIBS674}ja(e>fTfhP#hR|t_50qjDvwk1>)nO00=#t*qT{Fw2YHGYS# z53K6{B|5$WO{ybu6-S(>wCg11$|z|9v+0ud1u}#m%E&5q9ktYYKUC?B#}KIic<}axrbH(I`#$dwO$coZ9s-uyw%{?sJV5OT}(% z`PL$1@n-v0AVj49cvFG2Ye=L@Az^K%VMC0;M4Yd)3Qb7cyrgE+g;=jiV!Z7t24=%^ z_WS2csP{9cXVED~isMW(0q*E9{=zk=We7mewCNCW)Spp6U$SN?r}X+YZD`&?G$Zd3 z3WE#=`KTKBf|~$*-o9kDS<5Pjj?Uu(wq;YsY$80ip}7uD(R;qOwl73V>8MJg5L(zG zZLL1XudDPoF>8yb^EWYp3a{a zeF@k#V16q)+@HnsbEUIwQ(I8(<^q$j$QSD7XhAtCb8et5 zq8VVKG%$Q$+XcZE0`7ia@{@@|w?@v&2he)vfIREEy>fg+326izQTf{vt+Duc5=?zV|{Jd{to(#oh zu?ZduthFKo`iDAdzIdRG61U@!&s&ncHi1W;Q6&L2Bhj%>WsdBiX6douW~pH-f0$%` zVZ%n%OHUW6@l6Rly3r1_(kiJJlzSX4A#GjW@w-dx>PhWAFCXS$@_GilZ5GvOr-KL| zfAt*Wh>feuss;Xn^P^RWu1N_Rd}dM`|FwWbw*ktL0F6R%q3p|T|z z2(lIOD$G{W5MehkqDHiuQSvF-A6BTy0I0YL3K(yNheUURLq15*L^J`ZskMYUP7=pw zR$WbcS2d(c`j_9ifCw{A(o{qltUCk-nijx`XbGf{8!nqyKbL!<^v97LoPqS;i;v$O z6y)ueIay*ZumMW$qJYP|t-Yp1JA{RP1?9^wKTp~BXaubj2Ky_SbddI_=0Se)?*+n7 z3?L zV4NW6y3sMPp-*o?18RD~y7tDPuZwhjK4R(QKXxi?6#+W7<7$!b4spTHfO3a$B6rn5ba|+aMJ?a>-Eaq8fi#st zX|7IMOrx`#okkg5^#Ky{rI%%EC%N}$RW0zK4G0nmFmC1BxN%9_dHB#04Q-&9D<3P7!Fc+!0Hj}jt@egH6;YjiN&{AD6o7)eK z94~$?TYW4q*y2j>RIDyCL|JJ*yRHe7xoBns4w;UH?|Yv*_YT0>j6c{dy5SC9l*X#` zeU(O01yP00!%l#C9t*aT10N(}4=`71rG4vV>24++aJPik@k(j*4n**#2sEG!t7(aX z+Z`J)fwYc=4h@TBO$gJTCkI@ua$UvKaSeUB2*(R*TX_RADyjJuL{U;iN#`?6et?m9JPYDke5y+Y@6sG z>a3Lb0Wx&9E(8;Kq&=qF-wmI3(*#@1A6V}n<~8L`pHbAxkW0niIR!7z9i6y@x*-gD z9&l%`rM#x0P)qkavu7&(1x*NpUa*8>8fB%c6OC(-V+l5ie~8Pny-Y^A>)GqzpWN|wx(0F zhuX3K%0vR^2I1Pfk&$rNv>JiH2A2irMryEvkyz!}QXfe(M4hfTL>jVY&`BCOOUySJ z=l76T`-Fsgh_vd~O>XxAz{~Iw0_EN? zzW9lz#VRQ5R&IerS-u<2)Cv7~T===5l}e2hUQfU7p_OL1JkHofWq6JY%g}v1whHf; z&|?>-zj7O&wJ{9=G<&C9oqs1G$ql@Wn}^5*teh9;)9QbxErwj{Y%Hd1-1>*vkF?J7 zU7kYgAzt7+km@tc%1D_1Z4WUpO%7jaB>0J^Url;KKV$Keo93O$y9=SaP^_!=Yxm3O z@3hz1jTVzkCXvByyD1OxS6E@m^v3)>Wfz^qT;bT+y(qD5a6GkbLeTCVSTjcNZef^J zKh75e!V_H0d3s2Q<>A{d@wb-LRDJK^c$1QVmn~~wThC~v{F!RorM60wj`&xU{^!Ee zVbLN}F@y20@?qEOBDPl;Jt}OZtKby(Q-<2T00|<$(#s`mJ8h4CTEfhGt?Ae<_Dv=A z#-P)w8Z^+@0-PoIhsmQooe<+{d027mzu)4xD$U<%on0I0?|k^KcsU$gS6z$Q3mZ5&bGB0hM0po zIE(Vvy6mTwgbES5qW{6H1B_D#{^JR;#E#}kvO~C%Q{3pY)xjAGUT>&*^O+X+qkgQ2 zMeWYVU-=JOMD@Q5k0qb(D2hx_?HZBOm4xNA1+C4_o)o@b>IBmF~+;e zLrl&3nr)N{G7-AkoE)TUYJ1%FdE!P&7oAOi+5t4ojpa3`3A9>7%Blgy*hS2_xGN!w zgmoWWU?AhmpyqI!n>xIBV9E~EgjLR>hG1jIy`cbBn*2a6E1p5T4%vnu4?U>hTKdh& zc7C_>Qk9O)CfE67{=##-*mB%JxzYa>S@O(tJ6+7g;;D;vgFq#^=;m=fyFOw!OwT`J zzmg>q6OxUxE{}skJBX=>?jBy}X_!2CDre9+*A~THYue_zztgS70D|p~@qgZleeH;YWiW$(Qa)I#kGC#BiCvZ_f3>6E2zk6&TUD6FlfVF5g6XgkJnYb8WM^d zZ2cHlN3ION2xA?vUkS2#hX^{VQ!mW&<8(l6z1GZ z?D`H}r{w_^(o-I5@Pej|Tr78o9-mf*jt9X^&3zq782RlnSOQ~xQvSPp^B*0!`fhFQb7U9#WuDj1_4@w)?XocWwp-C z(XAD&>x^{=9PdhK8?}(y+B^*VZ!!0s#vlMxQ3`?|=--rrAXxd6m#@hq&Wfffz;6}C9l4l8o z4K9J!J`&u_4oQz5Ld&_yyRUu4NoN@KLuyrqxvE=hhvcxx_CoL9*Kg>oO6_-}gAu}N zm15?rL;1QtI?ElgPc`+0Hp&;LidIm((YUo_Su7xrqR5Eg%DzaB`fvsOds24*p-`xF z%iRjGX*uBww+dNH)j$mT=kCMI*WRpLC8zs$atblL&&RzOkJM62&s#*RfN%F{1gIxJQW@_f3+wE4QoJdx6BqnXLmWJFxxDfd&hQGz8}L!J|f$}TBu6W4Vk z-)f1NSbE$Zvbkf}5@Q<>Rh{lTx{etxrvoXv<-Kkf$&vD4w2+IU@;;cKIndgM>Itw35~lHkqj!_bicZGW)y=t;x~)6znZp>wwqnOZ%>Z30ipLP@5=D8Cr7A4d3-^8A)0VSAcQt zDIs;eM@u-&6|$(E%gPqFREvkioKKxdf_V9^|GKnMEW#a`R^Rl!*G%49j)?I#uAs`N zWlvcz;-6VX{#b(hySZuqt*)$RB#-&F_Q6PUB-eALfYZVJC&@C(*6}z%V|B$iF1GJm804GvCZ>}Ro~Y; zUBO@FVoDXkn_}ROUGi7-!a>XHZ+s%YlDL?Ua|WmWzWZoSjtV2yMFge()~8!gpVGaBFIJN)|6q`UocM5 zlIPagsxJDTGbXM z)ljhi%F#UdYdrnXWXmzi=d8g9&l@ zz@vuQji0qm_Gfp0p~93-1wpAB^Iu|`iDWIZ6&!PazpA`CY?Y$x2 zG2(K9J4}o>;~Gi&Ywj7aY?XIQ239@L*kZij;_hk@O5YlAvsE=Ros~Ka#P@E#%3}Lb z#V2mB2;9=?`~MPAz5Xit$eN7Ujce+5ga_xDThB_I=Y z6xFI63v7Hotx>m12_C=S+JO$En=6Bs`XcnsP#HcuN!nbb{jKC=0pSES-I4c2r-d*1 zyQG@PN{j~=t?fwWHx_qOFgU3tG*1{KpB2k273G57fpVRNyaTO!3*?-(Z>{h>N%-Px znc*$s_D(j-S|TpIMW);ynyC5NmC<5P<#XC0hBOiMxw)@~{Z~aT=)3EMZ;?ioG^q(3 zW{7M0pnOIXyS(-B{mf+EFtrPbMFf_Kws9_|d?|wtF|3mapBgGtx#QYKF7N3ze0Nl6 z!KEeZ7{g}jX zE1J(uK|~$}O*NSCIGdBah*k2gz$rW2*qp&nOq)|Or6xRQ#m_KAEuC6{sCt}^&++y# z^%~3jU4l`Td%)7GtJ{1vR;+UB39{W5wcAHcj+yz z6hThgY4w@nic+83s08@f84dbVyUQ(>QaXJcTh~<7NLN@@7n#G*SB&aDEu3tQ4t;I) za?kmt*UUhc+tHdx?+fQ zX{kVilK73*=?p_z0_#~_+r>4sm)M6DviDQh4l}HHv>k)K-mZ49eube3 z*wPwC(Gz#T?~PB_DiuzR`>rXM!SnJiJPy{Fx^V^fI3IhBDl_i-a+{?~TI|YTl({*c zZpXIP*(GNQAAn3#JiYCyVFU)wlAn-PS<~VQiPUz5)~sBGbP#)hD^+H4RMmqJ0cRKF z{aaYDulnLwOb-P*1Nb(S#eCAWq^uem5>n=V!oi*vZ+g^*bSB@sV9S%QE31@>g^#t=*xS>?-g0A^PoZJ2zFl*m zPf&@n#%3^}U47>r?Y;W361@WNW_XWx#M zJq4m(00{iT1(3H-9P8>UI(}cvweRG`LZrwK0~bzY2#Y)~6WlLiYw}hU9S+OOu;Cal zZsvRP#-Rb3De_zd4SBi+0be^~CmsvqV_l)S@i5BTvXro?HzDdal8m3}qHQwhc$tyu z`t7`Br56RgfN?Nz#buG5^(lu|WSvFXp1FEFpWcnpJV;~7k%03`qxKeD8?073!uO;Y zEY3Le%($J154oO~Q(G*G}gPpR@WpCFl@IHTKXrf8bEdM!w9G z6N0a*5sk*PxW0;z<6x%=OHn~a`h-C`N0Cf)OfyH0zBNe}9L+3fdQm?(VM_ zX*1~)-Fb0)kZU;6uA!^K55v}vxc_XfP1@)31@|wZ$FNr?#>H%f@Vg%kYuCaW6Z;!a zs0->+uU~R@a;aiH+Zo(EOg_zPbSL7C)X8;r)<^Tf27a)5J%dWVmRPB_du7bF<|9{) z0w%_?(MRj>GtljDkPkO~9-e7>)aVY?Ig1>d_bt2Xr)4@msv4YBQuhn4!{%g_2QLqD zav>7)>gT+m;p_7n3@e%f*UDsdW*Pl^OB>0cmDUFOg_lf%0>H-iC>|s^AKfJz>*ZM| zt(6xAm%NHhnqNJ=E>UY&Cq(5#B`2b-^H)W%b(F+W`XwCrEQ1R=!_3qN)>N*E9W5C?zlN z0)Br?yp`ld*VkjUoI!I5W2czBM|tfQ1|@xZ*zV0L&0Zfp*>%>UZMfO=j;#C}ZOA1H zts3y)j49Xf3^0g3k4Z`^;B7wr5!)Dz_tx%TNW2UaKP0vUCAm-iRMduO7YQNVR>^0ViXZg`Wc_rSzhycxCsNjz}cuR7p)q zkyVp}7vYE!YG!?$7bw!7pKA4+-^L2mB%+Fc7 z`*RZ%rQ}Q|N~N}e7;SX4a>)tTZ}TbP4{+7?B(Zjp%dr_6)YXJqsYo5CtM1*~+2}zx zH0xMY^*+X8o>S-xNLI0rVm5F4_>vhhhh_>MW3Kc-js<=k>aoCK#qD#cWp>LC!T?EpZV{EYGhCdF!M8!Wo3K;%Xp!R##I zMcS2qR*dd{5=I zf3kfkSYex)JUYG9`83jYT719>1LNV10 zM)I^u`fG0DpA7|GU7$0?#X+)-AE$GfN_2O3U$X?Gju%9r8l{g(u5jD&zZ6G%p>i0n z*TchxT4m!Hr0|9vn=gh4PgkYN$>l;noIznk8(Et8Ag0u+y&U9hkH6ILGd~z-)OxOX zDg27+O2R-u-U5>Bk(j6PTUM8`yl`22&}bNZ8!`nMS>AX9!(&%AkHO63QOWt~hPf8E z6n)Q2PaR2o$J-DUSZ1SsozEytjNo@+~e37Jih)GCy`(o*vIy!n9)Vr#w857vy7}EnH_$o~6 zO_@Xb$oCSYue=&W@>+{!#@ebbkowYYZHKfe{Be6$^QS1h0BW89?oTv7Z%=CvkN@vZ zU|atEDF8R>GK=opZ<^NAx}Q@vn!Ko-{!rz525(QPOSipXZMhxwi!3Xv<)=Z}hAjH- z;_m9*?xPW#&8X6>ki>|)7gM^=Yhn0bJ{s=-4E6F~ONt44>*Q1if4ao+2DG|LW~Ii) zo)MrbhS0v~cCsn3ILmz2_UTkfdwdH{_onWLC!0BBb_$VlJXQm7i2+o7&hQW%-1h#Qa2)xeF)S*7$S?xeAya&ax#>%;J8PuInm=0w_=@LFOm zlH3u5+$iciatziCdTyLi_g-%CCE8EL92D-7^r+<$G98#^1!8Xnn^xTMbPP84swE9^ zd$_k-10XVr`0Us#RendS*cs*V=bHWU3)h*=DkTo3M?sC(hTUwT6 z=fy4RIU(1bcvb0z&pfRIg%N3=&am8t9sa6g>3}ACUBWuj83h5SgzwgZKdw~LLxO;&>CYy+|19V~<@Mh!clEV@1^CtE^Pj-)Wg~EEe%#CZ zcQJ7wvGL(S=ro`z{+syxV}nQ>{HycYK`04H1|W3+f`2spn-3c?4zV5A0a72;zn%Ea zoQoKR*uCTcWdV?70KFmhG9d;a)>0n;Aer|84wTizp~O&I>74>s?py5y9 ae_vSo+T_65`ffBzO|lCdPaBi(PyYkO{tE#B literal 0 HcmV?d00001 diff --git a/ClosedXML.Report.sln b/ClosedXML.Report.sln index fd5a12a..16b2e22 100644 --- a/ClosedXML.Report.sln +++ b/ClosedXML.Report.sln @@ -11,6 +11,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{8438BAA8 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClosedXML.Report.Tests", "tests\ClosedXML.Report.Tests\ClosedXML.Report.Tests.csproj", "{D529A371-3AEA-4D02-9A0D-308A6276D411}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClosedXML.Report.Benchmarks", "ClosedXML.Report.Benchmarks\ClosedXML.Report.Benchmarks.csproj", "{E61B9B2F-96AF-4B19-9327-C7B724BA0B1D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -25,6 +27,10 @@ Global {D529A371-3AEA-4D02-9A0D-308A6276D411}.Debug|Any CPU.Build.0 = Debug|Any CPU {D529A371-3AEA-4D02-9A0D-308A6276D411}.Release|Any CPU.ActiveCfg = Release|Any CPU {D529A371-3AEA-4D02-9A0D-308A6276D411}.Release|Any CPU.Build.0 = Release|Any CPU + {E61B9B2F-96AF-4B19-9327-C7B724BA0B1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E61B9B2F-96AF-4B19-9327-C7B724BA0B1D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E61B9B2F-96AF-4B19-9327-C7B724BA0B1D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E61B9B2F-96AF-4B19-9327-C7B724BA0B1D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -32,6 +38,7 @@ Global GlobalSection(NestedProjects) = preSolution {DEF4A219-D1CF-42A2-A5AC-FE7F2F005AB0} = {885EF47A-C124-45F0-B979-303B30FB586B} {D529A371-3AEA-4D02-9A0D-308A6276D411} = {8438BAA8-E968-4C14-9500-E3A52434E32A} + {E61B9B2F-96AF-4B19-9327-C7B724BA0B1D} = {8438BAA8-E968-4C14-9500-E3A52434E32A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {42DA0EC5-D733-4746-9613-413A64EEDC4B} From 641e214dce975c0602d054615b56d03c8e012c2f Mon Sep 17 00:00:00 2001 From: Jason Finch Date: Fri, 2 May 2025 11:40:48 +1000 Subject: [PATCH 2/3] refactor (Report): Minor performance improvements and slight memory alloc drop. Refactor row/column into CellPosition Update expected style in tlist7_horizontal_images Guage test --- ClosedXML.Report/Excel/CellPosition.cs | 14 ++ ClosedXML.Report/Excel/Subtotal.cs | 2 +- ClosedXML.Report/Excel/SubtotalGroup.cs | 1 - ClosedXML.Report/Excel/SubtotalSummaryFunc.cs | 24 ++-- ClosedXML.Report/Excel/TempSheetBuffer.cs | 110 ++++++++------- ClosedXML.Report/Excel/XlExtensions.cs | 4 +- ClosedXML.Report/RangeTemplate.cs | 129 ++++++++++-------- ClosedXML.Report/XLTemplate.cs | 4 +- tests/ClosedXML.Report.Tests/GroupTagTests.cs | 5 +- .../OnlyValuesTagTests.cs | 9 +- .../TempSheetBufferTests.cs | 4 +- tests/Gauges/tLists7_horizontal_images.xlsx | Bin 327928 -> 300757 bytes 12 files changed, 166 insertions(+), 140 deletions(-) create mode 100644 ClosedXML.Report/Excel/CellPosition.cs diff --git a/ClosedXML.Report/Excel/CellPosition.cs b/ClosedXML.Report/Excel/CellPosition.cs new file mode 100644 index 0000000..1d48dde --- /dev/null +++ b/ClosedXML.Report/Excel/CellPosition.cs @@ -0,0 +1,14 @@ +namespace ClosedXML.Report.Excel; + +struct CellPosition +{ + public CellPosition(int row, int column) + { + Row = row; + Column = column; + } + + public int Row { get; set; } + + public int Column { get; set; } +} \ No newline at end of file diff --git a/ClosedXML.Report/Excel/Subtotal.cs b/ClosedXML.Report/Excel/Subtotal.cs index 76d0af5..9b2b052 100644 --- a/ClosedXML.Report/Excel/Subtotal.cs +++ b/ClosedXML.Report/Excel/Subtotal.cs @@ -298,7 +298,7 @@ public SubtotalGroup[] ScanForGroups(int groupBy) var result = new List(grRanges.Length); var rows = Sheet.Rows(_range.RangeAddress.FirstAddress.RowNumber, _range.RangeAddress.LastAddress.RowNumber); if (!rows.Any()) - return new SubtotalGroup[0]; + return Array.Empty(); var level = Math.Min(8, rows.Max(r => r.OutlineLevel) + 1); diff --git a/ClosedXML.Report/Excel/SubtotalGroup.cs b/ClosedXML.Report/Excel/SubtotalGroup.cs index c810162..75eca77 100644 --- a/ClosedXML.Report/Excel/SubtotalGroup.cs +++ b/ClosedXML.Report/Excel/SubtotalGroup.cs @@ -1,4 +1,3 @@ -using System; using ClosedXML.Excel; namespace ClosedXML.Report.Excel diff --git a/ClosedXML.Report/Excel/SubtotalSummaryFunc.cs b/ClosedXML.Report/Excel/SubtotalSummaryFunc.cs index 8d1bd51..f617395 100644 --- a/ClosedXML.Report/Excel/SubtotalSummaryFunc.cs +++ b/ClosedXML.Report/Excel/SubtotalSummaryFunc.cs @@ -1,14 +1,13 @@ using System; using System.Collections.Generic; using System.Diagnostics; -using System.Linq.Expressions; using ClosedXML.Report.Utils; namespace ClosedXML.Report.Excel { public class SubtotalSummaryFunc { - private static readonly Dictionary> TotalFuncs = new Dictionary> + private static readonly Dictionary> TotalFuncs = new() { {"average", new FuncData(1)}, {"avg", new FuncData(1)}, @@ -27,7 +26,7 @@ public class SubtotalSummaryFunc private static IFuncData GetFunc(string funcName) { - var func = TotalFuncs.ContainsKey(funcName) ? TotalFuncs[funcName] : null; + var func = TotalFuncs.TryGetValue(funcName, out var totalFunc) ? totalFunc : null; if (func == null) Debug.WriteLine("Unknown function " + funcName); return func; @@ -70,7 +69,6 @@ internal object Calculate(IDataSource dataSource) var agg = _func.CreateAggregator(); var dlg = GetCalculateDelegate(items[0].GetType()); - //var dlg = lambda.Compile(); foreach (var item in items) { try @@ -171,25 +169,25 @@ public void Aggregate(object value) private class CountAggregator : IAggregator { - private int _cnt = 0; + private int _cnt; public void Aggregate(object value) { if (value.GetType().IsNumeric()) _cnt++; } - public object Result { get { return _cnt; } } + public object Result => _cnt; } private class CountAAggregator : IAggregator { - private int _cnt = 0; + private int _cnt; public void Aggregate(object value) { _cnt++; } - public object Result { get { return _cnt; } } + public object Result => _cnt; } private class MinAggregator : IAggregator @@ -206,7 +204,7 @@ public void Aggregate(object value) _min = value; } - public object Result { get { return _min; } } + public object Result => _min; } private class MaxAggregator : IAggregator @@ -223,12 +221,12 @@ public void Aggregate(object value) _max = value; } - public object Result { get { return _max; } } + public object Result => _max; } private class AverageAggregator : IAggregator { - protected readonly List List = new List(); + protected readonly List List = new(); public void Aggregate(object value) { @@ -246,9 +244,9 @@ public virtual object Result foreach (dynamic v in List) sum += v; - if (sum is TimeSpan) + if (sum is TimeSpan span) { - return TimeSpan.FromTicks(((TimeSpan)sum).Ticks / List.Count); + return TimeSpan.FromTicks(span.Ticks / List.Count); } return sum / List.Count; diff --git a/ClosedXML.Report/Excel/TempSheetBuffer.cs b/ClosedXML.Report/Excel/TempSheetBuffer.cs index d34c0f8..dfa384a 100644 --- a/ClosedXML.Report/Excel/TempSheetBuffer.cs +++ b/ClosedXML.Report/Excel/TempSheetBuffer.cs @@ -10,12 +10,10 @@ internal class TempSheetBuffer: IReportBuffer private const string SheetName = "__temp_buffer"; private readonly XLWorkbook _wb; private IXLWorksheet _sheet; - private int _row; - private int _clmn; - private int _minRow; - private int _minClmn; - private int _prevrow; - private int _prevclmn; + private CellPosition _cellPosition; + private CellPosition _minCellPosition; + private CellPosition _prevCellPosition; + private CellPosition _maxCellPosition; public TempSheetBuffer(XLWorkbook wb) { @@ -23,28 +21,33 @@ public TempSheetBuffer(XLWorkbook wb) Init(); } - public IXLAddress NextAddress => _sheet.Cell(_row, _clmn).Address; - public IXLAddress PrevAddress => _sheet.Cell(_prevrow, _prevclmn).Address; + public IXLAddress NextAddress => _sheet.Cell(_cellPosition.Row, _cellPosition.Column).Address; + public IXLAddress PrevAddress => _sheet.Cell(_prevCellPosition.Row, _prevCellPosition.Column).Address; private void Init() { if (_sheet == null) { - if (!_wb.TryGetWorksheet(SheetName, out _sheet)) - { + if (!_wb.TryGetWorksheet(SheetName, out _sheet)) _sheet = _wb.AddWorksheet(SheetName); - } + _sheet.Visibility = XLWorksheetVisibility.VeryHidden; } - _row = _minRow = _prevrow = 1; - _clmn = _minClmn = _prevclmn = 1; + + _cellPosition = new CellPosition() + { + Row = _minCellPosition.Row = _prevCellPosition.Row = 1, + Column = _minCellPosition.Column = _prevCellPosition.Column = 1 + }; + _maxCellPosition.Row = _maxCellPosition.Column = 1; + Clear(); _sheet.Style = _wb.Worksheets.First().Style; } - public IXLCell WriteValue(object value, IXLCell settingCell) + public IXLCell WriteCellValue(object value, IXLCell settingCell) { - var xlCell = _sheet.Cell(_row, _clmn); + var xlCell = _sheet.Cell(_cellPosition.Row, _cellPosition.Column); if (settingCell != null) { xlCell.CopyFrom(settingCell); @@ -52,49 +55,59 @@ public IXLCell WriteValue(object value, IXLCell settingCell) try { - var cellValue = XLCellValueConverter.FromObject(value); - xlCell.SetValue(cellValue); + xlCell.SetValue(XLCellValueConverter.FromObject(value)); } catch (ArgumentException) { xlCell.SetValue(value?.ToString()); } - ChangeAddress(_row, _clmn + 1); + UpdateMaxAddress(_cellPosition); + ChangeAddress(_cellPosition.Row, _cellPosition.Column + 1); return xlCell; } + + private void UpdateMaxAddress(CellPosition cellPosition) + { + if (cellPosition.Row > _maxCellPosition.Row) _maxCellPosition.Row = cellPosition.Row; + if (cellPosition.Column > _maxCellPosition.Column) _maxCellPosition.Column = cellPosition.Column; + } public IXLCell WriteFormulaR1C1(string formula, IXLCell settingCell) { - var xlCell = _sheet.Cell(_row, _clmn); + var xlCell = _sheet.Cell(_cellPosition.Row, _cellPosition.Column); xlCell.CopyFrom(settingCell); xlCell.SetFormulaR1C1(formula); - ChangeAddress(_row, _clmn + 1); + UpdateMaxAddress(_cellPosition); + ChangeAddress(_cellPosition.Row, _cellPosition.Column + 1); return xlCell; } public void NewRow() { - if (_clmn > 1) - _clmn--; - ChangeAddress(_row + 1, _minClmn); - _minRow = _row; + StepBackColumn(); + ChangeAddress(_cellPosition.Row + 1, _minCellPosition.Column); + _minCellPosition.Row = _cellPosition.Row; + } + + private void StepBackColumn() + { + if (_cellPosition.Column > 1) + _cellPosition.Column--; } public void NewRow(IXLAddress startAddr) { - if (_clmn > 1) - _clmn--; - ChangeAddress(_row + 1, startAddr.ColumnNumber); - _minRow = _row; + StepBackColumn(); + ChangeAddress(_cellPosition.Row + 1, startAddr.ColumnNumber); + _minCellPosition.Row = _cellPosition.Row; } public void NewColumn(IXLAddress startAddr) { - if (_clmn > 1) - _clmn--; - ChangeAddress(startAddr.RowNumber, _clmn + 1); - _minClmn = _clmn; + StepBackColumn(); + ChangeAddress(startAddr.RowNumber, _cellPosition.Column + 1); + _minCellPosition.Column = _cellPosition.Column; } public IXLRange GetRange(IXLAddress startAddr, IXLAddress endAddr) @@ -102,23 +115,24 @@ public IXLRange GetRange(IXLAddress startAddr, IXLAddress endAddr) return _sheet.Range(startAddr, endAddr); } - public IXLCell GetCell(int row, int column) + public IXLCell GetCell(CellPosition cellPosition) { - return _sheet.Cell(row, column); + return _sheet.Cell(cellPosition.Row, cellPosition.Column); } - private void ChangeAddress(int row, int clmn) + private void ChangeAddress(int row, int column) { - _prevrow = _row; - _prevclmn = _clmn; - _row = row; - _clmn = clmn; + _prevCellPosition = _cellPosition; + _cellPosition = new CellPosition{ + Row = row, + Column = column + }; } public IXLRange CopyTo(IXLRange range) { var firstCell = _sheet.Cell(1, 1); - var tempRng = _sheet.Range(firstCell, LastCell); + var tempRng = _sheet.Range(firstCell, LastCellUsed); var rowDiff = tempRng.RowCount() - range.RowCount(); if (rowDiff > 0) @@ -152,7 +166,6 @@ public IXLRange CopyTo(IXLRange range) foreach (var picture in _sheet.Pictures) { var tgtPic = picture.CopyTo(tgtSheet); - //var relAddress = picture.TopLeftCell.Relative(range.RangeAddress.FirstAddress); var tgtCell = range.RangeAddress.FirstAddress.Offset(picture.TopLeftCell.Address); tgtPic.MoveTo(tgtCell); } @@ -170,23 +183,14 @@ public IXLRange CopyTo(IXLRange range) return range; } - public IXLCell LastCell - { - get - { - var rowNumber = Math.Max(_prevrow, _sheet.RowsUsed().LastOrDefault()?.RowNumber() ?? 1); - var columnNumber = Math.Max(_prevclmn, _sheet.ColumnsUsed().LastOrDefault()?.ColumnNumber() ?? 1); - var lastCell = GetCell(rowNumber, columnNumber); //_sheet.Cell(_prevrow, _prevclmn); - return lastCell; - } - } + public IXLCell LastCellUsed => GetCell(_maxCellPosition); public void SetPrevCellToLastUsed() { var lastUsed = _sheet.LastCellUsed(); - var clmn = _clmn < lastUsed.Address.ColumnNumber + var clmn = _cellPosition.Column < lastUsed.Address.ColumnNumber ? lastUsed.Address.ColumnNumber + 1 - : _clmn; + : _cellPosition.Column; ChangeAddress(lastUsed.Address.RowNumber, clmn); NewRow(); diff --git a/ClosedXML.Report/Excel/XlExtensions.cs b/ClosedXML.Report/Excel/XlExtensions.cs index 368a9dd..c43a7ff 100644 --- a/ClosedXML.Report/Excel/XlExtensions.cs +++ b/ClosedXML.Report/Excel/XlExtensions.cs @@ -118,7 +118,7 @@ internal static KeyValuePair[] GetRangeParameters(this } /// - /// Get the named ranges that contains the specified range (completely). + /// Get the named ranges that contain the specified range (completely). /// /// range public static IEnumerable GetContainingNames(this IXLRange range) @@ -214,9 +214,7 @@ public static void CopyStylesFrom(this IXLRangeBase trgtRow, IXLRangeBase srcRow var rela = srcCells[i].Relative(srcRow.RangeAddress.FirstAddress); var trgtCell = trgtRow.RangeAddress.FirstAddress.Offset(rela); trgtCell.Style = srcCells[i].Style; - //trgtCells[i].Style = srcCells[i].Style; } - //trgtRow.CopyConditionalFormatsFrom(srcRow); } public static void CopyFrom(this IXLConditionalFormat targetFormat, IXLConditionalFormat srcFormat) diff --git a/ClosedXML.Report/RangeTemplate.cs b/ClosedXML.Report/RangeTemplate.cs index 27a349c..d1ef7fb 100644 --- a/ClosedXML.Report/RangeTemplate.cs +++ b/ClosedXML.Report/RangeTemplate.cs @@ -32,7 +32,10 @@ public class RangeTemplate private bool _isOptionsRowEmpty = true; private bool _isSubrange; private IDictionary _globalVariables; - + + private readonly Parameter _itemParameter = new("item", null); + private readonly Parameter _indexParameter = new("index", 0); + public string Source { get; private set; } public string Name { get; } @@ -84,12 +87,13 @@ private static RangeTemplate Parse(string name, IXLRange range, TempSheetBuffer var innerRanges = GetInnerRanges(range).ToArray(); var sheet = range.Worksheet; + var innerCells = innerRanges.SelectMany(x => x.Ranges.Cells()).ToHashSet(); for (int iRow = 1; iRow <= result._rowCnt; iRow++) { for (int iColumn = 1; iColumn <= result._colCnt; iColumn++) { var xlCell = range.Cell(iRow, iColumn); - if (innerRanges.Any(x => x.Ranges.Cells().Contains(xlCell))) + if (innerCells.Contains(xlCell)) xlCell = null; result._cells.Add(iRow, iColumn, xlCell); } @@ -97,7 +101,10 @@ private static RangeTemplate Parse(string name, IXLRange range, TempSheetBuffer result._cells.AddNewRow(); } - result._mergedRanges = sheet.MergedRanges.Where(x => range.Contains(x) && !innerRanges.Any(nr => nr.Ranges.Any(r => r.Contains(x)))).ToArray(); + result._mergedRanges = sheet.MergedRanges + .Where(range.Contains) + .Where(x => !innerRanges.Any(nr => nr.Ranges.Any(r => r.Contains(x)))) + .ToArray(); sheet.MergedRanges.RemoveAll(result._mergedRanges.Contains); result.ParseTags(range); @@ -174,13 +181,25 @@ public IReportBuffer Generate(object[] items) private void VerticalTable(object[] items, FormulaEvaluator evaluator) { var rangeStart = _buff.NextAddress; + + // Precompute merged ranges that do NOT belong to options row + var mergedRangesNonOptions = _mergedRanges.Where(r => !_optionsRow?.Contains(r) ?? true).ToArray(); + + // Precompute worksheet row heights once + var worksheet = _rowRange.Worksheet; + var rowHeightMap = _cells + .Where(c => c.XLCell != null && c.Row <= _rowCnt) + .GroupBy(c => c.XLCell.Address.RowNumber) + .ToDictionary(g => g.Key, g => worksheet.Row(g.Key).Height); + + for (int i = 0; i < items.Length; i++) { var startAddr = _buff.NextAddress; IXLAddress rowEnd = null; int row = 1; var tags = _tags.CopyTo(_rowRange); - var renderedSubranges = new List(); + var renderedSubranges = new HashSet(); // render row cells for (var iCell = 0; iCell < _cells.Count; iCell++) @@ -192,11 +211,10 @@ private void VerticalTable(object[] items, FormulaEvaluator evaluator) if (cell.CellType == TemplateCellType.None) { var xlCell = _rowRange.Cell(cell.Row, cell.Column); - var ownRng = _subranges.First(r => r._cells.Any(c => c.CellType != TemplateCellType.None && c.XLCell != null && Equals(c.XLCell.Address, xlCell.Address))); - if (!renderedSubranges.Contains(ownRng.Name)) + var ownRng = _subranges.FirstOrDefault(r => r._cells.Any(c => c.CellType != TemplateCellType.None && c.XLCell != null && Equals(c.XLCell.Address, xlCell.Address))); + if (ownRng != null && renderedSubranges.Add(ownRng.Name)) { RenderSubrange(ownRng, items[i], evaluator, cell, tags, ref iCell, ref row); - renderedSubranges.Add(ownRng.Name); } } else if (cell.CellType == TemplateCellType.NewRow) @@ -212,12 +230,11 @@ private void VerticalTable(object[] items, FormulaEvaluator evaluator) RenderCell(items, i, evaluator, cell); } } - + var newRowRng = _buff.GetRange(startAddr, rowEnd); - foreach (var mrg in _mergedRanges.Where(r => !_optionsRow.Contains(r))) + foreach (var mrg in mergedRangesNonOptions) { - var newMrg = mrg.Relative(_rowRange, newRowRng); - newMrg.Merge(false); + mrg.Relative(_rowRange, newRowRng).Merge(false); } tags.Execute(new ProcessingContext(newRowRng, items[i], evaluator)); @@ -240,24 +257,18 @@ private void VerticalTable(object[] items, FormulaEvaluator evaluator) var optionsRow = resultRange.LastRow().AsRange(); foreach (var mrg in _mergedRanges.Where(r => _optionsRow.Contains(r))) { - var newMrg = mrg.Relative(_optionsRow, optionsRow); - newMrg.Merge(); + mrg.Relative(_optionsRow, optionsRow).Merge(); } } - // arrage rows height - var worksheet = _rowRange.Worksheet; - var rowNumbers = _cells.Where(xc => xc.XLCell != null && xc.Row <= _rowCnt) - .Select(xc => xc.XLCell.Address.RowNumber) - .Distinct() - .ToArray(); - var heights = rowNumbers - .Select(c => worksheet.Row(c).Height) - .ToArray(); - var firstRow = rowNumbers.Min(); - foreach (var row in Enumerable.Range(rangeStart.RowNumber, _buff.PrevAddress.RowNumber)) + // arrange rows height + var firstRow = rowHeightMap.Keys.Min(); + var heights = rowHeightMap.Values.ToArray(); + var heightsLength = heights.Length; + + for (int rowNum = rangeStart.RowNumber; rowNum <= _buff.PrevAddress.RowNumber; rowNum++) { - worksheet.Row(firstRow + row - 1).Height = heights[(row - 1) % heights.Length]; + worksheet.Row(firstRow + rowNum - 1).Height = heights[(rowNum - 1) % heightsLength]; } if (_isSubrange) @@ -272,7 +283,7 @@ private void RenderCell(FormulaEvaluator evaluator, TemplateCell cell, params Pa { if (cell.CellType != TemplateCellType.Formula && cell.CellType != TemplateCellType.Value) { - _buff.WriteValue(null, null); + _buff.WriteCellValue(null, null); return; } @@ -285,9 +296,7 @@ private void RenderCell(FormulaEvaluator evaluator, TemplateCell cell, params Pa } catch (ParseException ex) { - _buff.WriteValue(ex.Message, cell.XLCell); - _buff.GetCell(_buff.PrevAddress.RowNumber, _buff.PrevAddress.ColumnNumber).Style.Font.FontColor = XLColor.Red; - _errors.Add(new TemplateError(ex.Message, cell.XLCell.AsRange())); + HandleError(ex.Message, cell); return; } catch (TargetInvocationException) @@ -308,21 +317,14 @@ private void RenderCell(FormulaEvaluator evaluator, TemplateCell cell, params Pa * just add to the error list for future use and keep doing the work, other items may have the material property. * No need to write the error in the cell since it might be a desired behaviour, but needs to go to next cell. */ - _buff.WriteValue(string.Empty, cell.XLCell); - _errors.Add(new TemplateError(string.Format("TargetInvocationException: {0}", cell.Value), cell.XLCell.AsRange())); + _buff.WriteCellValue(string.Empty, cell.XLCell); + _errors.Add(new TemplateError($"TargetInvocationException: {cell.Value}", cell.XLCell.AsRange())); return; } - IXLCell xlCell; - if (cell.CellType == TemplateCellType.Formula) - { - var r1c1 = cell.XLCell.GetFormulaR1C1(value.ToString()); - xlCell = _buff.WriteFormulaR1C1(r1c1, cell.XLCell); - } - else - { - xlCell = _buff.WriteValue(value, cell.XLCell); - } + IXLCell xlCell = cell.CellType == TemplateCellType.Formula + ? _buff.WriteFormulaR1C1(cell.XLCell.GetFormulaR1C1(value.ToString()), cell.XLCell) + : _buff.WriteCellValue(value, cell.XLCell); string EvalString(string str) { @@ -346,10 +348,11 @@ string EvalString(string str) if (xlCell.HasHyperlink) { - if (xlCell.GetHyperlink().IsExternal) - xlCell.GetHyperlink().ExternalAddress = new Uri(EvalString(xlCell.GetHyperlink().ExternalAddress.ToString())); + var link = xlCell.GetHyperlink(); + if (link.IsExternal) + link.ExternalAddress = new Uri(EvalString(link.ExternalAddress.ToString())); else - xlCell.GetHyperlink().InternalAddress = EvalString(xlCell.GetHyperlink().InternalAddress); + link.InternalAddress = EvalString(link.InternalAddress); } if (xlCell.HasRichText) @@ -359,8 +362,13 @@ string EvalString(string str) xlCell.GetRichText().AddText(richText); } } - - + + private void HandleError(string message, TemplateCell cell) + { + _buff.WriteCellValue(message, cell.XLCell); + _buff.GetCell(new CellPosition(_buff.PrevAddress.RowNumber, _buff.PrevAddress.ColumnNumber)).Style.Font.FontColor = XLColor.Red; + _errors.Add(new TemplateError(message, cell.XLCell.AsRange())); + } private void RenderCell(object[] items, int i, FormulaEvaluator evaluator, TemplateCell cell) { @@ -381,17 +389,20 @@ private void RenderSubrange(RangeTemplate subrange, object item, FormulaEvaluato if (subrange.IsHorizontal) { - int shiftLen = subrange._colCnt * (valArr.Length - 1); - tags.Where(tag => tag.Cell.Row == cell.Row && tag.Cell.Column > cell.Column) - .ForEach(t => + var shiftLen = subrange._colCnt * (valArr.Length - 1); + if (shiftLen > 0) + { + var tagsToShift = tags.Where(tag => tag.Cell.Row == cell.Row && tag.Cell.Column > cell.Column).ToArray(); + foreach (var t in tagsToShift) { t.Cell.Column += shiftLen; t.Cell.XLCell = _rowRange.Cell(t.Cell.Row, t.Cell.Column); - }); + } + } } else { - // move current template cell to next (skip subrange) + // move the current template cell to next (skip subrange) row += subrange._rowCnt + 1; while (_cells[iCell].Row <= row - 1) iCell++; @@ -458,19 +469,19 @@ private void HorizontalTable(object[] items, FormulaEvaluator evaluator) { worksheet.Column(firstCol + col - 1).Width = widths[(col - 1) % widths.Length]; } - - /*using (var resultRange = _buff.GetRange(rangeStart, _buff.PrevAddress)) - _rangeTags.Execute(new ProcessingContext(resultRange, new DataSource(items)));*/ } private void ParseTags(IXLRange range) { var innerRanges = range.GetContainingNames().ToArray(); - var cells = from c in _cells - let value = c.GetString() - where TagExtensions.HasTag(value) - && !innerRanges.Any(nr => nr.Ranges.Contains(c.XLCell.AsRange())) - select c; + var innerRangeCells = innerRanges + .SelectMany(nr => nr.Ranges) + .SelectMany(r => r.Cells()) + .ToHashSet(); + + var cells = _cells + .Where(c => c.XLCell != null && !innerRangeCells.Contains(c.XLCell)) + .Where(c => TagExtensions.HasTag(c.GetString())); foreach (var cell in cells) { diff --git a/ClosedXML.Report/XLTemplate.cs b/ClosedXML.Report/XLTemplate.cs index 04283e3..d12d852 100644 --- a/ClosedXML.Report/XLTemplate.cs +++ b/ClosedXML.Report/XLTemplate.cs @@ -118,8 +118,8 @@ public void AddVariable(object value) public void AddVariable(string alias, object value) { CheckIsDisposed(); - if (value is DataTable) - value = ((DataTable) value).Rows.Cast(); + if (value is DataTable table) + value = table.Rows.Cast(); _interpreter.AddVariable(alias, value); } diff --git a/tests/ClosedXML.Report.Tests/GroupTagTests.cs b/tests/ClosedXML.Report.Tests/GroupTagTests.cs index 130a07c..15c03da 100644 --- a/tests/ClosedXML.Report.Tests/GroupTagTests.cs +++ b/tests/ClosedXML.Report.Tests/GroupTagTests.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System; +using System.Linq; using ClosedXML.Report.Tests.TestModels; using LinqToDB; using Xunit; @@ -62,7 +63,7 @@ public void Simple(string templateFile) public void EmptyDataSource(string templateFile) { XlTemplateTest(templateFile, - tpl => tpl.AddVariable("Orders", new Order[0]), + tpl => tpl.AddVariable("Orders", Array.Empty()), wb => { }); } diff --git a/tests/ClosedXML.Report.Tests/OnlyValuesTagTests.cs b/tests/ClosedXML.Report.Tests/OnlyValuesTagTests.cs index 6133451..1840056 100644 --- a/tests/ClosedXML.Report.Tests/OnlyValuesTagTests.cs +++ b/tests/ClosedXML.Report.Tests/OnlyValuesTagTests.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System; +using System.Linq; using ClosedXML.Excel; using ClosedXML.Report.Options; using FluentAssertions; @@ -13,7 +14,7 @@ public void TagInA2CellShouldReplaceAllFormulasOnWorksheet() { FillData(); var tag = CreateNotInRangeTag(_ws.Cell("A2")); - tag.Execute(new ProcessingContext(_ws.AsRange(), new DataSource(new object[0]), new FormulaEvaluator())); + tag.Execute(new ProcessingContext(_ws.AsRange(), new DataSource(Array.Empty()), new FormulaEvaluator())); _ws.CellsUsed(c => c.HasFormula).Should().BeEmpty(); } @@ -24,7 +25,7 @@ public void TagInFirstCellRangeOptionRowShouldReplaceAllFormulasInRange() var rng = FillData(); var tag = CreateInRangeTag(rng, rng.Cell(2, 1)); - tag.Execute(new ProcessingContext(_ws.Range("B5", "F15"), new DataSource(new object[0]), new FormulaEvaluator())); + tag.Execute(new ProcessingContext(_ws.Range("B5", "F15"), new DataSource(Array.Empty()), new FormulaEvaluator())); rng.CellsUsed(c => c.HasFormula).Should().BeEmpty(); _ws.Cell("B3").HasFormula.Should().BeTrue(); @@ -37,7 +38,7 @@ public void TagInRangeCellShouldReplaceAllFormulasOnlyThisColumnInRange() var dataRng = _ws.Range("B5", "D7"); var tag = CreateInRangeTag(rng, rng.Cell(1, 2)); - tag.Execute(new ProcessingContext(dataRng, new DataSource(new object[0]), new FormulaEvaluator())); + tag.Execute(new ProcessingContext(dataRng, new DataSource(Array.Empty()), new FormulaEvaluator())); dataRng.Column(1).Cells(c => c.HasFormula).Count().Should().Be(3); dataRng.Column(2).Cells(c => c.HasFormula).Should().BeEmpty(); diff --git a/tests/ClosedXML.Report.Tests/TempSheetBufferTests.cs b/tests/ClosedXML.Report.Tests/TempSheetBufferTests.cs index 36026cc..3b981c3 100644 --- a/tests/ClosedXML.Report.Tests/TempSheetBufferTests.cs +++ b/tests/ClosedXML.Report.Tests/TempSheetBufferTests.cs @@ -18,8 +18,8 @@ public void NamedRangesAreRemovedWithTempSheet() var tempSheetBuffer = new TempSheetBuffer(wb); wb.DefinedNames.Add("Temp range", tempSheetBuffer.GetRange( - tempSheetBuffer.GetCell(1, 1).Address, - tempSheetBuffer.GetCell(4, 4).Address)); + tempSheetBuffer.GetCell(new CellPosition(1, 1)).Address, + tempSheetBuffer.GetCell(new CellPosition(4, 4)).Address)); wb.DefinedNames.Count().Should().Be(1, "global named range is supposed to be added"); tempSheetBuffer.Dispose(); diff --git a/tests/Gauges/tLists7_horizontal_images.xlsx b/tests/Gauges/tLists7_horizontal_images.xlsx index 90633b28f448ae0af6739f07859da5fd350e7b96..398e4c4fe0a9cc063933fd1fb31181661d80a25a 100644 GIT binary patch delta 83240 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 aba40wVIhMQ2!Y^&KmH)4@Wp}EApZ+pjNudj delta 86824 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¶Y**2bkB`O<$dnUV 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 L Date: Fri, 2 May 2025 11:58:07 +1000 Subject: [PATCH 3/3] tidy: Remove dead code. --- ClosedXML.Report/RangeTemplate.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/ClosedXML.Report/RangeTemplate.cs b/ClosedXML.Report/RangeTemplate.cs index d1ef7fb..a59f697 100644 --- a/ClosedXML.Report/RangeTemplate.cs +++ b/ClosedXML.Report/RangeTemplate.cs @@ -33,9 +33,6 @@ public class RangeTemplate private bool _isSubrange; private IDictionary _globalVariables; - private readonly Parameter _itemParameter = new("item", null); - private readonly Parameter _indexParameter = new("index", 0); - public string Source { get; private set; } public string Name { get; }