From 124222486cfc5b8eae077e3a10f968d7e3397b43 Mon Sep 17 00:00:00 2001 From: DharanyaSakthivel-SF4210 Date: Wed, 26 Mar 2025 13:34:26 +0530 Subject: [PATCH] ES-833344-Sum-mergefield-values --- .../.NET/Sum-mergefield-values.sln | 25 +++++ .../Data/ReportData.json | 18 +++ .../Sum-mergefield-values/Data/Template.docx | Bin 0 -> 13102 bytes .../Sum-mergefield-values/Output/.gitkeep | 1 + .../.NET/Sum-mergefield-values/Program.cs | 103 ++++++++++++++++++ .../Sum-mergefield-values.csproj | 26 +++++ 6 files changed, 173 insertions(+) create mode 100644 Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values.sln create mode 100644 Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values/Data/ReportData.json create mode 100644 Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values/Data/Template.docx create mode 100644 Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values/Output/.gitkeep create mode 100644 Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values/Program.cs create mode 100644 Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values/Sum-mergefield-values.csproj diff --git a/Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values.sln b/Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values.sln new file mode 100644 index 000000000..ad34e0c0a --- /dev/null +++ b/Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31911.196 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sum-mergefield-values", "Sum-mergefield-values\Sum-mergefield-values.csproj", "{D3AF529E-DB54-4294-A876-DD42E1E472D0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D3AF529E-DB54-4294-A876-DD42E1E472D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D3AF529E-DB54-4294-A876-DD42E1E472D0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D3AF529E-DB54-4294-A876-DD42E1E472D0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D3AF529E-DB54-4294-A876-DD42E1E472D0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {58137FF9-5AE1-4514-9929-3A8A7DA1DFEB} + EndGlobalSection +EndGlobal diff --git a/Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values/Data/ReportData.json b/Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values/Data/ReportData.json new file mode 100644 index 000000000..6d8b62272 --- /dev/null +++ b/Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values/Data/ReportData.json @@ -0,0 +1,18 @@ +{ + "Toplevel1":"1", + "Reports": + [ + { + "Subject": "Maths", + "Marks": "80" + }, + { + "Subject":"English", + "Marks":"70" + }, + { + "Subject":"Science", + "Marks":"82" + } + ] +} \ No newline at end of file diff --git a/Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values/Data/Template.docx b/Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values/Data/Template.docx new file mode 100644 index 0000000000000000000000000000000000000000..8b395a4685cf085c7d915f951dd5eba8b3a7db41 GIT binary patch literal 13102 zcmeHug0D$*U000^Q7F((GW2By~M;V@mLH8Mzq&=<0WXDC)#$RnpIqEChj1 z7%c0zZL1K;t7M<3-|ButMToDSXY;ZZC&n`V;W(pimM9&lU;FOMq36Nu*96aG z`51?#07v|@C>$*Q6nV8Mn4eCBPOJ(vgZ;z>t_H>7m7dDl?oCyBw6aTh>sKoIWVH{A zbixc^vE$2WIpylvD_O6UFa?odtvn)IOZZ4svFkVh?mgK+bZP!d(esg3w7i_U zJfc=BaIxkP+3q(Jy9x%z}``=%FdRbhT zWe+3b$J2o4fT=cx#V)K|Sq7uYC9EGXuv!w*XiE#0^Doal3k%>n2L@sz(=+jtpB*zq zo!1j|&Tx`c-h{Qm&E4zvXg#*N0TP2+^O@Y{K5ZhV@7|a`50gkx4F`m4podN1K*!#N zri^u>?NAHf>=Ytc5K~Re8j;rIX4$LE-==u8d`o2l&RL3UdBBwLinIsgH;-d`!<+Jd zPiCQuiSAyl*6CF~jBjL)w4}PG#j$2&Aj^m~EQ7~6Yn?j$oZC^@_a%rHE*tI(!=tCE zHmc^!Uf3=+Kl>?>My=k49d3q>z$GX!{dfQHlSA&f1BEMh3IG5F^iW*w9E=%^?Tnml zKymB0fb~;z$#zK;*^6P)=lzxX`;E+mzy&|ruwp+fHtPnjgOM<832Sls@7nj%dWRHO zbb50?5F`|;(G^_`^UV=sJknXr%v^#=m`_*N%!*yYEmC8ijP={upmD}YP$}*&jL(i_ z?o2r+C4(=p@<|6M0${Y?u6}*F>uG7Rm(Fnxb}RrB){Qz1+c&NUkf*MM9B*|7)J179HN@7 zRoM2dSgb-9?d+KNuC!evve$y7z1aap-4#o?3>PJYL(vcIW)?%#8jF1{iahdPMAT&p zIia}YTD8eUGV!a0rt}?D{FYBxI&G3vk51rgjEZ;@7r_sLp{o$Qc3Nl?M{h~eL}Bb4 zLN#*`g6hY^B%mo86+B}s*dwf5r1{W&>mb%e8n=3Ky0NGcc`b9&w@C4OO1fipH#jAX z)N731E|b@QAy;|`sJrw9tTo<2t76x<0g);$V#iHTglLrK1V~UY@zDf=_O0I!LnOr& zjho@2-Lj-#po_z~i`* zel`zrFh|eu^{VAhUWAl^Un&ZGLa4+A5G={;NSF%d0j^NW}o{S=vrjF2E1d(2vDc`gEi?I|;mnh3l$847cLKQ`z!gf(f#&gMVZd=AB zAIBD1H#_uzi&Ux%jf@Zlh{#pWU-H}c2DG#4FdW}bLn&|W%n&?-!5xxv#GlWSJx!)Z-#D^*xC!Z-R9> zV-MDgATH6HZs4R;*sr4cwjBF%WACmHZr;k8oEMT@+(|Em4XAcq2#VyJK;FzcH-t%Y z)P|_)a|CsRK?O1ArQH`m^~G}9afod3DvZw)ISKCj%ud3td{&hK8%2m&MxW0*~g|b+}1) zXuVFdMVHir*8*1PpmgptgTd>T=e<(;O(~`igFz1iAL^Zq_t4UV_V(AzpqdR;>Q!&V zP*S7RmqEMgOHn=r7DE`aC+d#vr}~}1lbvh5H1VJU6Ru6875K#yM&Sw+9+*HR3l9Jb_IsH47nk~L zu=s;lfq|wtpm6hldn=0@0r3hD#SeN3Nb#cM_L3Leww5GXntKL_5bzh#!i`;RbX1B< z98KyspE*>dI8OMoFHLlXxkk)-6n-0YK;Dn2^q8l1D<-Hs5kR(5vpT}3#){R~($%%j znzWRan!WZD&f!#?WD2QEF#dqYYQpzTiXk#OV3)OD71~DEIou&}&y`sgTRw}iuR;~s z^_nfz67i0(-Y#u*J%Gaw;sc)&5&x&xh|vR1Np*ZJW2ksWDdCts5ml+MNy2a==0bVe zlFr<|;!cCC(hi;KtQq>3dcywGsuagYjp^+3D4MngwCJzm(6 z8X5o?dJh1ggPh@auW>Rru`yxzT{8VnFf^pXamA3^VJ--Rn?^p5?HiP_O^aVx&9kr8 z1w^+gS{0OMSxl`g)-eX_e|3O^%!m;}Y}!EMk9+}M0h`5=~p&>a`0#j9qIpAoT;LTWJ3=EX=`r!6L)5P@O>chZPJ zyByB_)yD-aGZ`i7JH*8o&gc)eq&q)7n`lKDBYL^md*DW8u%crF>5)c^qM`)sq(|x` z^A(~{B(y06n2Oq%Qe#kD-X=)8n&o?b+|VNq!ogB#uT(Y?5;Pi^DS1FeK#@PeBU-dK z$YkQ?>%7fBk|!mVc3KX5aU9{s9JV5&Mlg1C5PEJ%(1MRBWTPAC>8bm+cdwh^)cwRk@3`FbkJvcYr z)GwPP1iCkI@OxcO%rInj_&lDE#oHab#SV15?3B*?Jl*RZ<_jFPm{oq|_qcwZ_j!Km z1wVCgN(mv1!9v*kz~^H79gE#u13-9j8_yYvJS625FaHga3LD|`dlCpQFF(ra_0J2n zTljAex}jTHJIs(*qwlm)5zaK<;db)&n@8IpWmOc{U8tr|WP923O>Ef`IT>qlFPvTI z^93|guqO%xzDeVtYQziT?3z|^v<~|&@{^t@Sm$;yl%StUlK0WfA7;*k!%5Sc6YQ zT{A=lqu3GOk=avmJq;$?pe_1OZg`tRWk{2aErm{q`!5Fh(xFkp%v8rozg#TP7{U{U zWu!}MN-$mq7V+JIkp-Q!3sr5LG<-c?iV6M+mSeiR>_W=OGO^_^i(F52da)q>T}QTT zYAQWM)cn*?dWs3h=;v~~VNXq}!DYl15Vm^Q#JXlo#kjxZkV5@qd0rT9xX~9zK^MZ1 zGT(_+Ly~h^c~lbJy!(e)#8fbC=kIK~2j-S}irv8My7)#SLnEIcO*_#+SQ;SajhoJ= z9-mW({*Sw>FoWy2Nq)UA$q(DHb1kuzWW{O>ZcE&4z5E(MAX{YM8QDp<$GP*dxWb^Cr^ap>6e}{W-W1^n*W}%w(%kGWtVgt3TQ)BHKc0z<&DDZ>weYuYA+mK@S2)VZL!*gs4q@(x}b|Uv@3e z=t!@|WrIYPx^wbpF{>x_q$)diw%=ciFW)MPBHJQQ8|@S-d+)3$-8#iGjoHl8E?Lo3 z6mD4r2-7c1qc$-{tY0kP@tNo~uq5MLB~aB{uxb(Z%u|1{-iA&~;oZX;*It2PBVj#i zM7tY;9CL$y2pm=p4VDC#@N6jPWAPc~?+4{X8IScp{G~RJOPBF+M`8Zcf?b zNqDG^=4;l@mD=i%8*>+l24kGF0lkW0CNGh?^8%juso0j$Ud;GC9c1uDx{66B6N-b) z7}G}6`gmDmY(V8zvxf{t1Jan2qnfEtQ)-Vq*FkT?$x_g) zFueta_WQ%R+P&y#*P%Ui6ZbX!#DbGC?Rnju<{YifZA`%^&H5Ap8K!#q5m6b-LUrWr zB&`tBDSZ3IhAz|D5(GmPwZql9a2pplB;pPv;9-Vjc5!zlMwCC0W{4GSe@exri6N7V z0{>Q^@AR|47?NaS5o#3)--3hkiBLD1VM{!#%F0N6+T%M9Dm#L3CR*39v@09dOAnqhMyd+F)FcAZ^*XjYH2$(G%a zs*^ym!*mYwDj*#u7YqZJxSuwB^$JNa=Zb6y)!OdM*&WTmejCDa(Q*qT>cLG*y0KGx zy3+VeK+lpD@4#~G<1P)oFfD)%Tx`*>>S^Lo6(m!wW5AJ6-Z(qy#S!lzUj zojYo@K847=hejJ*{Zm(rzuI?uEL1sXwn5I)7-FhyVSM~G=Ui{8p2BC%1bZnaeNr^- z3qgzc6ile0Pmfg?n{3{=@njR0!BQqXAHbDD{gNG|s4adhOjLt4){(Xl+87QL0hc^Z zXzE+`i1{^I$$4z#;j#>1IY&OA$x41(YWH`*xBhO0?#J=-6FAj z$zbsJZ}UvhW)U)e3R%3Fj+;ku7+J8`+(q@S-!YGG*h4#%I9QQpu$m^ z7W!(Sn>M+eTD-IoE*_k$AhuQzCUm?{LxnCeNe7}ocvv~-ar&*#Z_{KY-VbO}gGUs| zya+<_!vm5RFDW=r2aJNyB9z})d?qp5B}J7iK}Ycqe`F4E^ky;3qpSkJKvK2(Ul949 z%4D4~4jb&Y$F6B^`h3K$SUN))zOWci-28c>ZbLNR;SyJ{nt6E<#1Nvr*k?8llmK40 zO&QOMmQ1}pe>w|D))stOBiD=|AG$zgcInw+Yz`%zn%2=4OxmJM)rnXS;1473A|p+O z0tFOD*+W-<~m5;`y*O(j$*>B$cuwNcf<>rLzmY+C zM_(yEJ}D4QwU*#hDl-*3f0$a)U+Zw4A>cz+JJ#!NYAyNHqJH&m6gFY&VQ|{EafQ`S zi8vcYg%JiF6XUT*Ul)0gr)6G=)7;7)V_bBjvB^i*e7BIf4SxKYg??9jv$e0xVj;y_ zs#Smc9?geQcYH74eOhC{Jtg+rUhJ-@ALS~^(8DLA?@+-TT8PN4D1AE zLi`jtiB>4QEkFo>5$>KP>O9*JF)@D(1tp55n2WfY(>wAzU10oe2rmh;-bq}U5IzzRC0fkCQ zA%e@LHzkqef;O)YJY#(y%Qt8l#vQwG)ab86`q>P0)x#NtNuh<>`e3s1Ew4$G@O{+j zhhIxDXQk+!b6t}9XmzZU&aYM`idQ(Trlf5Stvjn-XB>?*%=y#EpvzbYz1hYP zg38zp0Xwfa+>iuHL$dkp7O8$fO}^I>!$`3i!E#RA6r188e!CN9B9=sx324GGc3?M^ zTyI?{ah4{(bTaW~M-tC->ZN(hQ#1|QAkbgFLh1T`-`FsRay*w|f=KV6wREmP`td5A zJ@mSA-mt~q=wXF)`t#{DkYE5qvJM0hhd3q_mU$KuFo$HMp(q|r$9}?iwsXt2m8ae2U zcOPG1nTW3mClGWvp&bZD`vjAD+Hl8b#0W;vk<{N&5fCwMl~6ifg~~~rd5*JW1!pi< z9eis>MVxkKCJ7xw*NXY>hJ)g|7Azk3?$B5D`cg4m7#Y&JyIcCkF3s5Zexr2o@is9S z67z_2SGdfMmB>{6*$N`yKo18?`gOQd{{a&^X`-mPCHn*exUh^;9cs zP%SR0Nd;)G;ndPtJ)f&LQ>jM?KF3!WkolNvPfJ|r#R21Xx@RT1 zLr;XBcMrqYlgdAzPU?&bOKvqVoT8F%`r1Ox!DgXs?D#K2+Kd_cX6 z*7LlPOM}iTCFb-ZT3m9>=@Ei-fofk;@IUsXKi}p?sUWa!bpG!l~Ws zX65FPy6L5}^t>PLdkrL8Ut=B0E$6u11P^PsKyGWd*+(fX=3uc;;^Sv8iC;oTv7tqG z;2?4x0{j&2J3GbkCtu<55$0Z*e-oOSsG_V;Rr<>Iq92~nGIzd%zM1~z<8sBde%X`; zIrD}IBaV8PmJ~Fdz~IpsiZEdi9%NwBWAul}BRi&#cl4r&kRAzdgo}B=a+c=&L2s`t z`_gA-EHgtp?1F-aVq#BAHub&k*w={GwNhuv%=85EU?s36CCHO%E7UB?%VDYHv%BVM z(s}cJ0e0qF4{!8v6BOy>>nU$s7On-WCaMM3(Hpy};t7iMbiK4uTX)jAp@Qr))36~0 zS0l73?*6Uk{-xC3s2zJTsm8G(?~!9#_koMNT(afekfwb`b^<{9uxpv94_Y48HBf^5rCf>s5W^qVahguJDAzd8O!!QrhLWSjXAtUZ8A} z{jJfS)0U{yIJd3v9^|&D)3C6tqq3xf(uX~AjvU802a?Gj@KLah)=5F|rByA1^C6Dx}G|J}4dZuFZy!vAGr375u#P|+j- zg|hi6iL&@P3U%I}w*3nNGLzl=>udYWoWrJ_Q=egdW@p^{yl<7%RC2u+8XT62 za!-n6N|(z{Zi%(U?~z$o-Q0{1BW;nH!h={titr18HWf{z;Le+uk0y`!eC%y|Ldhi_ zM5A0v07BO~$N}Yk8zMU`e`333jDvcz6z8a=>Pj29;4XWuX}0EN?S!0Q68+^QQ`)WA zo>n?7t=+2dC5KuQSdT_J7Omi_fTfG?CT@89+fR!RjYj-3heuLi*>rex-CxotF_I?L z(wz{4rhpcRg=Tf;F1gcnR{A6` z(iVL9t1RN`ciVT1J+=v7OYMP*@ukl}hvfP?k)=r)75yqw<^K`3YFj1w8JaA?L+qpSOmX!`B0Y1)4i zzZlUlER4(pZkbk92D_hy={j~{()GZfab}iwuH7Ha18?qnO=HOrBFA0XF>QTGEqMJX zc%AAE-t63>sLTge51vN2Dtv8KQv2OjLcWc+Ow$@iJF|lAYmGK=7HIeOZN>P&-d?hb z79uJ;v37}SAW*3sFS000R%=byBunP8St3eoAK^;xU4($o=y4A*)=_kv!mB!{6jb4^` zq2WfVH9*lmFzPiQn)On^CVsxMODVTENn0#2*#_TUcP`!SiW#H$(87CV;z^GGQW3}b zmV?UVlIrz}A2gNt?~FhB>Vvo)Xyu0vl<;`>$7I9R#8Bxk`Hqa472EFj?*QwMWF8^G z9{C^Gq>R`!Fp^hjrRsSB-Nj_!g`l*f9DflI=w{@q^mg)c=Zr(|q)xKE>%$jvid+Lp zR7SiY*7OWduL|gBQu{3Iu6HlAUlI?f$b6QFG9q{L$YSU*gjNr@a0Y7;12z@` zf_?9QE)uuum9@@Zz^IykrJZ|A8`&dGRkpUKD;T27bJ54}k1vSNgWVAsw8TdRnk%CI z@q$c2Ws1rMhSny(rK6VPWuns=k%LbY9|&VWMHBZ6teVw|OOeXOhuMoSfB~$kIl{rM z!0k0xYw;v%O^bu<5C_IBS01FBqm7O8JQas`Z}ZrohD;MkyFY13Dq(KVU!K^?pq`B; zNNbS5J79byXdvY0aY`S?L4upZT`<>;>3?*IFX+V0#vZk%K_sU+V!h;ab}mWv;Hq_9 zK1_0NN|t%)$i;TYZbA(>7o6Fwb;0Iike`xS5uJ z&N7|WX8N%Sok!-1VZCGKmSP}=610OI8LL|9yTkg?8$#XQKCNFJDdHW?0G@{IR#^p} zMii${Ln_KQ9%;et%MreAnuKU|`G@M%;Fe_t9LrR*HvzkHhWQ03m?Va4`okB=OiI!$ zHttYa&W%E29BYJpG4D5n&yhLo}jNcD&U`GUR`HX-~R2kgNXkX{Co zCz%mnlCTkodzNE2&Zi3Sb*A;zWHFrxMB{>kS`FR``(7bfFsMmOIky*0O8D|kNlv7P zdmGCJ3tdsgu#vy5Dui;^luzS7cF9v?UdDfky5D@c{IC zq-!QCcO2ZLSA9Nfk)6Zu?gOf- z``_v>=+Sw`DcFI!k?$JCG5`AxH12QYxWvlGC4A*GwZ@0F4e4HQY&+F&*b;pBA>gQ# z>KeG$_9pgfE|2D$!=m%*ey(~cs+d)$?Bvm!U@2g%Ql>O29{nDD*k=!OI=PAqLv)(&rZ3;9=bAxmgWQOkPZi2jCH$^^(g} z0R+y2-i02LUPF(HkZ12TO?Q%=<7P6-$^D1QaOiv*1z{0 z)TgnG@PsczS|5W#zh`5+Mk&KZ36!oCz{!Nb-TAcFHl;|qNar)n+_+zo(B=s@-t4Zw zh4CJZJAqK35RJh%Qps&L>EtWe5dC7n_7%6UF9jDWL`a;VY+ay9j$*DIF| zlXPcwuj!u6Des)x*>56aPd8@Hf>P4|zbc|%HT_yk@~19j zP*(dND@%S=@#{+5pDNHX{;lG#>vF%se@&$S2~WiN1OA`1`mf+$iSeIca8Tv#@8 data = GetData(jsonObject); + + //Creates the mail merge data table in order to perform mail merge + MailMergeDataTable dataTable = new MailMergeDataTable("Reports", (List)data["Reports"]); + + //Uses the mail merge event handler to sum the field's values and set that value to the TotalMarks field during mail merge. + wordDocument.MailMerge.MergeField += new MergeFieldEventHandler(MergeField_Event); + + //Performs the mail merge operation with the dynamic collection + wordDocument.MailMerge.ExecuteGroup(dataTable); + + string[] fieldNames = new string[] { "TotalMarks" }; + string[] fieldValues = new string[] { "" }; + + //Performs the mail merge + wordDocument.MailMerge.Execute(fieldNames, fieldValues); + + //Saves the WOrd document file to file system. + using (FileStream outputStream = new FileStream(Path.GetFullPath(@"Output/Result.docx"), FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite)) + { + wordDocument.Save(outputStream, FormatType.Docx); + } + } + } + } + /// + /// Event to sum the field's values and set that value to the TotalMarks field during mail merge. + /// + private static void MergeField_Event(object sender, MergeFieldEventArgs args) + { + + if (args.FieldName == "Marks") + { + //sum the Marks field values. + totalMarks += Convert.ToInt32(args.FieldValue); + } + if (args.FieldName == "TotalMarks") + { + //Set sum of the Marks field values to the TotalMarks field; + args.Text = totalMarks.ToString(); + } + } + + /// + /// Gets array of items from JSON array. + /// + /// JSON array. + /// List of objects. + private static List GetData(JArray jArray) + { + List jArrayItems = new List(); + foreach (var item in jArray) + { + object keyValue = null; + if (item is JObject) + keyValue = GetData((JObject)item); + jArrayItems.Add(keyValue); + } + return jArrayItems; + } + /// + /// Gets data from JSON object. + /// + /// JSON object. + /// IDictionary data. + private static IDictionary GetData(JObject jsonObject) + { + Dictionary dictionary = new Dictionary(); + foreach (var item in jsonObject) + { + object keyValue = null; + if (item.Value is JArray) + keyValue = GetData((JArray)item.Value); + else if (item.Value is JToken) + keyValue = ((JToken)item.Value).ToObject(); + dictionary.Add(item.Key, keyValue); + } + return dictionary; + } + } +} diff --git a/Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values/Sum-mergefield-values.csproj b/Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values/Sum-mergefield-values.csproj new file mode 100644 index 000000000..f76ffb925 --- /dev/null +++ b/Mail-Merge/Sum-mergefield-values/.NET/Sum-mergefield-values/Sum-mergefield-values.csproj @@ -0,0 +1,26 @@ + + + + Exe + net8.0 + Sum_mergefield_values + + + + + + + + + + Always + + + Always + + + Always + + + +