From edbd337ab698d00f97703275d1372b95c5773390 Mon Sep 17 00:00:00 2001 From: harid Date: Tue, 30 Sep 2025 15:00:02 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=A3=E0=B8=B2=E0=B8=A2=E0=B8=87=E0=B8=B2?= =?UTF-8?q?=E0=B8=99=E0=B8=A5=E0=B8=87=E0=B9=80=E0=B8=A7=E0=B8=A5=E0=B8=B2?= =?UTF-8?q?=20=E0=B8=9B=E0=B8=A3=E0=B8=B1=E0=B8=9A=E0=B9=83=E0=B8=AB?= =?UTF-8?q?=E0=B9=89=E0=B8=81=E0=B8=B2=E0=B8=A3=E0=B9=81=E0=B8=AA=E0=B8=94?= =?UTF-8?q?=E0=B8=87=E0=B8=9C=E0=B8=A5=E0=B9=80=E0=B8=AB=E0=B8=A1=E0=B8=B7?= =?UTF-8?q?=E0=B8=AD=E0=B8=99=E0=B9=80=E0=B8=94=E0=B8=B4=E0=B8=A1=E0=B8=81?= =?UTF-8?q?=E0=B9=88=E0=B8=AD=E0=B8=99=E0=B9=81=E0=B8=81=E0=B9=89=E0=B9=84?= =?UTF-8?q?=E0=B8=82=20#1815?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit เปลี่ยนจากโหลดโดยตรงเป็นผ่านโคลนจากtemplate --- .../Controllers/LeaveReportController.cs | 36 ++++++++++-------- BMA.EHR.Leave/Reports/TimeStampRecords.xlsx | Bin 18324 -> 18348 bytes 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/BMA.EHR.Leave/Controllers/LeaveReportController.cs b/BMA.EHR.Leave/Controllers/LeaveReportController.cs index 4cdec83e..c41273ed 100644 --- a/BMA.EHR.Leave/Controllers/LeaveReportController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveReportController.cs @@ -11,6 +11,7 @@ using BMA.EHR.Domain.Shared; using BMA.EHR.Leave.Service.DTOs.Reports; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing.Template; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using OfficeOpenXml; @@ -2157,12 +2158,15 @@ namespace BMA.EHR.Leave.Service.Controllers var org = _userProfileRepository.GetOc(Guid.Parse(req.nodeId), req.node, AccessToken); var organizationName = $"{(!string.IsNullOrEmpty(org.Child4) ? org.Child4 + "/" : "")}{(!string.IsNullOrEmpty(org.Child3) ? org.Child3 + "/" : "")}{(!string.IsNullOrEmpty(org.Child2) ? org.Child2 + "/" : "")}{(!string.IsNullOrEmpty(org.Child1) ? org.Child1 + "/" : "")}{org.Root ?? ""}"; var dateTimeStamp = $"ประจำ ณ วัน{req.StartDate.Date.GetThaiDayOfWeek()} ที่ {req.StartDate.Date.ToThaiShortDate()}{enddate}"; - //var template = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", "TimeStampRecords.xlsx"); - //FileInfo reportFile = new FileInfo(template); - using (var package = new ExcelPackage()) + + var templatePath = Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", "TimeStampRecords.xlsx"); + byte[] templateBytes = System.IO.File.ReadAllBytes(templatePath); + //using (var package = new ExcelPackage(fileInfo)) + using (var stream = new MemoryStream(templateBytes)) + using (var package = new ExcelPackage(stream)) { - //var worksheet = package.Workbook.Worksheets[0]; - var worksheet = package.Workbook.Worksheets.Add("Sheet1"); + //var worksheet = package.Workbook.Worksheets.Add("Sheet1"); + var worksheet = package.Workbook.Worksheets["Sheet1"] ?? package.Workbook.Worksheets[0]; worksheet.Cells["A1:J1"].Merge = true; worksheet.Cells["A2:J2"].Merge = true; @@ -2174,7 +2178,7 @@ namespace BMA.EHR.Leave.Service.Controllers range.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; range.Style.Font.Bold = true; } - worksheet.Cells[1, 1].Value = "แบบการลงเวลาปฏิบัติราชการ"; + //worksheet.Cells[1, 1].Value = "แบบการลงเวลาปฏิบัติราชการ"; worksheet.Cells[2, 1].Value = organizationName; worksheet.Cells[3, 1].Value = dateTimeStamp; @@ -2188,16 +2192,16 @@ namespace BMA.EHR.Leave.Service.Controllers range.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; range.Style.Font.Bold = true; } - worksheet.Cells[4, 1].Value = "ลำดับที่"; - worksheet.Cells[4, 2].Value = "ชื่อ - สกุล"; - worksheet.Cells[4, 3].Value = "รอบ"; - worksheet.Cells[4, 4].Value = "วันที่เข้างาน"; - worksheet.Cells[4, 5].Value = "พิกัด"; - worksheet.Cells[4, 6].Value = "เวลามา"; - worksheet.Cells[4, 7].Value = "วันที่ออกงาน"; - worksheet.Cells[4, 8].Value = "พิกัด"; - worksheet.Cells[4, 9].Value = "เวลากลับ"; - worksheet.Cells[4, 10].Value = "หมายเหตุ"; + //worksheet.Cells[4, 1].Value = "ลำดับที่"; + //worksheet.Cells[4, 2].Value = "ชื่อ - สกุล"; + //worksheet.Cells[4, 3].Value = "รอบ"; + //worksheet.Cells[4, 4].Value = "วันที่เข้างาน"; + //worksheet.Cells[4, 5].Value = "พิกัด"; + //worksheet.Cells[4, 6].Value = "เวลามา"; + //worksheet.Cells[4, 7].Value = "วันที่ออกงาน"; + //worksheet.Cells[4, 8].Value = "พิกัด"; + //worksheet.Cells[4, 9].Value = "เวลากลับ"; + //worksheet.Cells[4, 10].Value = "หมายเหตุ"; int startRow = 5; foreach (var emp in employees) { diff --git a/BMA.EHR.Leave/Reports/TimeStampRecords.xlsx b/BMA.EHR.Leave/Reports/TimeStampRecords.xlsx index 3c84bb60d2348c1347748d269d00956847bbb1de..ee4527d547ab7b7aa1ad89bad6738cccc9e7a6f0 100644 GIT binary patch delta 3401 zcmV-P4Yu->j{&TY0k97Tf4;YJ9$Nzd0Cxuf01p5F0C;RKcW-iQVsCG2E_iKhtX1D{ zn>rMJzta8(X6@AhJ3s;|nF1tQrEaRS-tDDQ<$zPH0_Gaiq^kD6?-)XVEHAy=qQu5N z;q!OS`Ofj#$3spAt#&cw~n$0I1st6T2KsFwns!91vbVrhOx<-2&Scd9#8#9-KlGr;s zww8)*OK|%@JnNv~f9u1KI55!hBru&ERf$Z=R_^o!pzVS5iT}j033(NQ!)XlOhUD6c z-wTt&CsxY;O;-LBmj4V!oIge*Agx|2Aq4L?(Yz;a6fMqnqU7HO=~}F5zOc$u#|iLYD0BR+=&vbG$3?_?8TFuFO`+^9qUSce+5Dw;h{2oKcJrZCkSI% zYOZRgc_M2KIz0OIr<&`rlR|>RtquRL6N*D&fxf_37+DswZF|XdVRfpEP#RvxpO<*` zX@g^y-L2}}tS7LZTyS>JuQ$ArO1IZ9l*&%a;(utBWhMYNL||Y!JpUREAgjVrkC$3m z@O++LKu*2_f2#$`rK{L8nlYDD_%~X0Uy9*)`x%x6Q~F9l z1;U-V;ky{3VVpLV0(^(DXKjyfEq($30RR63vxo|50tudz4`USv003Z<`V1j|U2obj z6o&67?LS1mhuBF-2_jVGOPe%R)o8bC;~21-#F=dhY}$X{u|q=Dc8FF2POx*H^Wpb+ zc)c%j?};ldWSJt;#mM6&lbI;jDSEh{clyZFhL#!4Wyw=?;2K?zK7ShSqmdD>Jo-rtpwv! z$+iVAO$|{zrv~!Z8&T5Va0b(g~VGa(8yn+qBu1l%tGKaeNB%;jQ zEBFNP4Vy4-{Z*twFeSBInJ$q1I_KBrCw}5n){Y9otg1s0rtng`io$~A-Wf;_vC zYZa3@GzosaLfCr(#)Iyi-PN(KPO-E(*k;8I|Co(Cm6ibVas;qP0*UNR<6L2}PVG%s z5R-ES+qeeZD=6}!z!1fGgKYzMBXaE1MFE@x8Im~cpA_+IaE_JKSBjg0f0NA*DSwi6+uM(_Xp0nGw3B^T zeEmt0vPe|wr$cH5IN`(o@s2^R358{oIyYCC<~ZKo%c>^sR6Nh(MtNG?brNGXUG zq!Og2WD4nbdnEu#1nq&bYxbZ`a4$$ING3=wNFhimh!&(0q^5+WoCKz9?0CwPfe;ga zb1!AcV;N0Ozi#)-OL4ir9N{3t5&3KZ7AqAkk0^OR^rxnoDw& zK=fTP&bXxLk<7WI>{)2TCHmuqsva*3?xpV8x@9L}-wfJNP-PlB_&9OYRVI=}M^a1X z9msr;3!B21ls?eHrb4pr7OJU+r3>eOF(_SQ$J0eZ(nUh@6(qOB?V1*DDq&Pp4a;T~ zn2oVx+2ociyB#c0;*u!^sgX2REUtB6T*i*aWeJH3B_u9Ev?XqnE8+J*{IbZQ*#w;r zW5*-6ghY-K61gDS5)!%admw&Uumxxv=0cH(!CKV38vk zifB^4rbLai(nvPlDXN5~rW&4qW8j^fDSPd?IC3OS9DI$?i%`j%5RtonQzUd7tyx2O zAnXo%}y&J;Jqpr^m4A@Mr<2hsP z6Aw2m@ZJFaA6wkMNn^jO?vc2%N`)p9BuC=9Rv|Q{AR0;26`D74g~U~VXN?3Jh~GNQ zOM1M$X03GSDPT=)s590*hB{+yVyLq*OFbT5>aK6ZW7c%y*R;9mp>9Sj!)6IOpY4&5 zG8CFjkQ@mqL!l`J(MU)cA|Yjnq^ArMze^2i_{o?xoj^?w3T9w^Bv83Q>rdT}j{g7v z0RR6000960bdX(Y!!QuDDHDMR1qrX>3|W(}8$b%K>VNOpNl56jx3l>h!2tngv%4Jz z0e|lL2#?*R7Pz&S&r>9Iz0?^nH^oQye%6KXWfLyR_*>+EVe;Le39oHwJ<3oZ^-G~2 zM$IL0(NZvl6_irFdhMuMJJem4ZhFM_7oA+R7rpBpp^ESml^S4XRag6&+FR-Vlc@?1 zTEM~#=V(XO>hLkPyXW6=Ms^Hb(v12_o|8HsPk+B2=D$Su4@uyRz4_P~4shs1;r!kS zhl~0BeG++rxA?o)xBCxWJJV)_8qpt4N(#L_*(^`v?qw&7?cPi6a8sB7?LPM?7@=^(7vY*&{8pKqf!|lgA`2v#lpF0h7BU9+ML$ zEt3W$!IOX|Ewl6_0Rgk#D3l5XTh!IPxwCgOGXW0C@v=5T;sV=H?63d@>XW!MB^|PC zAy@)Vdt=>x%kIkS^pYhJl{2dH4z{d=$gYZ$`ZOqi?0KW~v)Th+3h|ZKfXXOTya%Su zOk@+%=o#4@LNx%4=1@Tm4kOPN89!+eLLEO$7$RrN+G5vGPgA+)Y@^5EtbUDl7Pf7> zX!D^Asz2j@cE4_iR#WTxS!rO!#%PHaD=0Snbfi-}+&_WF(LEa!&;b^{?5pwh(<9?e(VrTLbH_P%YHn|G~zPEB7lPp4k37(S=V-*Jg z0AQ20LRSGUlMX{B8ws!C3|RyK00|ZV01W^D000000000000023lTSlB0Wp(`LqP$s zlgvX<0kV@FL^_k+L>d9alX65RlOIJI0xTtyv_vYCyCV(`000000000000000ttOND zL?x4$L>rSjMMVMUlYm7)0e+LgMJokc)YZMYlkr6r0eh1NMm_;+lSW280X&n0MnD3h fJCj~V7L(jYGy$lS5l2e_uajLzF$T6l00000*XvBQ delta 3411 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