From 37a8318814dcb0188e8b668c8d72be105a3d6492 Mon Sep 17 00:00:00 2001 From: fuzhongyun <15339891972@163.com> Date: Tue, 30 Dec 2025 09:36:37 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A1.=E4=BB=85=E5=88=86=E9=94=80?= =?UTF-8?q?=E5=95=86=E5=AF=BC=E5=87=BA=E4=B9=9F=E4=BD=BF=E7=94=A8=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=202.=E4=BF=AE=E6=94=B9=E5=88=86=E9=94=80=E5=95=86?= =?UTF-8?q?=E3=80=81=E5=88=86=E9=94=80=E5=95=86=E8=AF=A6=E6=83=85=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=203.=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/tools/bbxt/bbxt.go | 31 +++++++++++++++++++++++++++---- tmpl/excel_temp/kshj_gt.xlsx | Bin 9469 -> 9473 bytes tmpl/excel_temp/kshj_total.xlsx | Bin 10313 -> 9414 bytes 3 files changed, 27 insertions(+), 4 deletions(-) mode change 100644 => 100755 tmpl/excel_temp/kshj_total.xlsx diff --git a/internal/tools/bbxt/bbxt.go b/internal/tools/bbxt/bbxt.go index cd1024f..d7d00ef 100644 --- a/internal/tools/bbxt/bbxt.go +++ b/internal/tools/bbxt/bbxt.go @@ -7,6 +7,7 @@ import ( "sort" "time" + "github.com/gofiber/fiber/v2/log" "github.com/xuri/excelize/v2" ) @@ -104,12 +105,11 @@ func (b *BbxtTools) StatisOursProductLossSumTotal(ct []string) (err error) { //总量生成excel if len(total) > 0 { filePath := b.cacheDir + "/kshj_total" + fmt.Sprintf("%d", time.Now().Unix()) + ".xlsx" - err = b.SimpleFillExcel(b.excelTempDir+"/"+"kshj_total_v2.xlsx", filePath, total) + err = b.SimpleFillExcel(b.excelTempDir+"/"+"kshj_total.xlsx", filePath, total) } if len(gt) > 0 { filePath := b.cacheDir + "/kshj_gt" + fmt.Sprintf("%d", time.Now().Unix()) + ".xlsx" - // err = b.SimpleFillExcel(b.excelTempDir+"/"+"kshj_gt.xlsx", filePath, total) err = b.resellerDetailFillExcel(b.excelTempDir+"/"+"kshj_gt.xlsx", filePath, gt) } return err @@ -126,6 +126,20 @@ func (b *BbxtTools) SimpleFillExcel(templatePath, outputPath string, dataSlice i sheet := f.GetSheetName(0) + // 1.1 获取第二行模板样式 + resellerTplRow := 2 + styleIDReseller, err := f.GetCellStyle(sheet, fmt.Sprintf("A%d", resellerTplRow)) + if err != nil { + log.Errorf("获取分销商总计样式失败: %v", err) + styleIDReseller = 0 + } + // 1.2 获取分销商总计行高 + rowHeightReseller, err := f.GetRowHeight(sheet, resellerTplRow) + if err != nil { + log.Errorf("获取分销商总计行高失败: %v", err) + rowHeightReseller = 31 // 默认高度 + } + // 2. 反射获取切片数据 v := reflect.ValueOf(dataSlice) if v.Kind() != reflect.Slice { @@ -157,12 +171,19 @@ func (b *BbxtTools) SimpleFillExcel(templatePath, outputPath string, dataSlice i } else { rowData = []interface{}{item} } + // 4.1 设置行高 + f.SetRowHeight(sheet, currentRow, rowHeightReseller) // 5. 填充到Excel for col, value := range rowData { cell := fmt.Sprintf("%c%d", 'A'+col, currentRow) f.SetCellValue(sheet, cell, value) } + + // 5.1 使用第二行模板样式 + if styleIDReseller != 0 { + f.SetCellStyle(sheet, fmt.Sprintf("A%d", currentRow), fmt.Sprintf("B%d", currentRow), styleIDReseller) + } } // 6. 保存 @@ -188,22 +209,24 @@ func (b *BbxtTools) resellerDetailFillExcel(templatePath, outputPath string, dat resellerTplRow := 2 styleIDReseller, err := f.GetCellStyle(sheet, fmt.Sprintf("A%d", resellerTplRow)) if err != nil { - // 如果获取失败,就不应用样式,或者记录日志,这里选择忽略错误继续 + log.Errorf("获取分销商总计样式失败: %v", err) styleIDReseller = 0 } rowHeightReseller, err := f.GetRowHeight(sheet, resellerTplRow) if err != nil { + log.Errorf("获取分销商总计行高失败: %v", err) rowHeightReseller = 31 // 默认高度 } // 获取模板样式2:第三行-产品亏损明细 productTplRow := 3 styleIDProduct, err := f.GetCellStyle(sheet, fmt.Sprintf("A%d", productTplRow)) if err != nil { - // 如果获取失败,就不应用样式,或者记录日志,这里选择忽略错误继续 + log.Errorf("获取商品详情样式失败: %v", err) styleIDProduct = 0 } rowHeightProduct, err := f.GetRowHeight(sheet, productTplRow) if err != nil { + log.Errorf("获取商品详情行高失败: %v", err) rowHeightProduct = 25 // 默认高度 } diff --git a/tmpl/excel_temp/kshj_gt.xlsx b/tmpl/excel_temp/kshj_gt.xlsx index 9ab76f5e450a7e10ea61eded595909e5f46182a2..c826635797dcc5b89a8eb2b89a85592c445b16c9 100755 GIT binary patch delta 1709 zcmV;e22%O`Nr6hRr2z%X6x`W2ld1t8f5}e6Fcd}iNc=WWH81cBID z_G@bq53&tu{~k9@LlG=kTKD+)zUOMTQC;#0&P$_flxGAbpt%uJuWIz%&eJQD_`tMa zozYOEEqF9*PERUsDK`!tow4A81fN8c_LSQitwXRBW6#&1n9m}iW4JU?+x8VD5qBmYnVBhyyUk){5{~W(A9-f9#Q>k~m;((gnemdsEBCc{NLELVe8=<6@ zJ~$SPtMG525`3sgxdRqJB=J$YH?Md|Udp@sc8;2Y6z6GPq{VehE@?q1A#W8vP~-h( z5~{JqKa3@5Nlwc%njaevf@bLb^W&Q@v-|?k0S*Ic%-Vqh006iJ000;Olg%U=e~naK zZ`&XgeV?@dfOxO5ois_KI8~FX+N4dY_W4Zkb&QIQ2PE$P{Vou@sWMf4u??Ji&bc3W zb^F{Xas*?gZVQ?vDJ9SfUCMS}(4RjZt`?M7$J>%C-9kbCf~B|Xj~`aOHcz$&a0D4z zThQ9MZpoMxH8k8Nx`P%^Ds39>e{gB`%ytHN8G;(c@-&^XhRc>lhNXEAhps9q;9iSE z1FefB1{8Pb-`29T1KV@?F22(69&;W1oLRh&CnH}rz3|saVYJniON4G%w04>04ZC@j zXCp3%{!^@mo2Nr}g~S~ux06b`zaibh5V#kfzVDO1vx#U=F3t*+%^A4uf5AH4+;hk2 zdKEhGXxMsHO01%9Juy%f^e$U&CKUGr;+KTpo_!O?ci%yQa8Tl?P~t~mr}dKue#WiT za|eKD+}92qPCeT9C758%W7Jp_Y(mHVWzCj3HcNQ)9m4$%B^YCI_qa}1f9!}Y5hujv5|NDv zhN7b~W*n3;;62I+M`e7D%K69}yln=AcXfq-jA=5Pj*wTr-DTB4vr+BBJC-%OmxxNy1)mELKG*D-bqe~Ex?zyYJA z(%KCR9LqYKJ%mkv24BX1?)o2-aReHZ&>{r0kOx`_2|s~;BoG1s05y~I4<&yjZHBaJ zI%=kk7->2}rL?d@Zt~Jtlh~2%k|Kn}3b9}@i>~wFouL6t zdMHsUA7U)S1TrGKJO`$~#9V)5MCq;AVwnpdkxT$omSWp9FK|XELp5P2+Aw$=(-5XS z+-1O24H1wMrQ4SY&1FN2Hq}LEW&xXSk;`t#FqG$P3!fxtJc?-wtJ(vDs9b-a{3=DIZz~Fg zeAJg)qo6F}#hOMc@sRDhrcR@-JqNl?ln%(Y9j8R#-x$?PHLF?;R(1dL@acH?e!Tzs z@Z)g&^7-N0z0R?;{#rL{>CT5#{}9)aRnZzmNYb!uT`!ezV43!yRKQ-{NL8)IPEZeh z@EzATdjq@E53Hcmw+4S^$M-M#9cLQ!oM+bbYUTtVn>h9*F+Qi!Oi4yV!6lDXH{=;0;pd&f~c9Yv9HUXWJ5+o)YKY@NE5CQ-IH3R?v4*&oF000000RSKX z007{VQzSeAlar7nAsYi}%-Vqh006iJ000;O0000000031AOHXWzmv=)D+c5s00000 D-T@zK delta 1702 zcmV;X23h%mO8rT&r2z#-9D=Vlld1t8e_c<)FcgOGP5ci_@3(dXQJQVUk8mZ4i4cu< zO?!aG^&@R{@b4{SOpIQ5*}PAmzUQ=@?NpO|g7ebo3gsC=321JF)SC*emhdT9gTgr`tCuc0UAi*cmq&?-fLfa55#n|&LDCV%@C?RhpK2iPs zdJw9<#XpTxI-XE6J~N&Kb=Ujn$Jbx8{Q}Sd4j{Y=wtfNt0I&rB02lz1(IgswjZ|H4 z+AtJ-pS1sA`JFfk6et3!eyG}{O{%)DXXD%u3n$KOL)w48Ynucrrm8PaVxN1?xgXB* z=A~BT0LDt)tZ0^`lt3eNA)D=r{`&binp0vOZwjt-11tIpmfoyCe_D3h>}&<#2r@Kw zMJwmp1!GoJP;;B;78*P$wW+y(!%wqiwl%G~(xD!v;bxGISL^MYiX9db;4BY*H-a1`BaL4I- z89MM}*m_w=tfFr{F;K4PZML`@Q``@T-x4}|_D&q%`~U^QL4l(}i64QD);kaUid(7Y z4gk-{g_8%k2c?ks3a99A)VT5jY*09V@6{f|&^#GZK*{&Y-D~wn7Oq0oG|A^zvuqOA zG3_DGy88lhTRFs_nBF^oB^&q#2T*vlqWRlBWb`SZ6QLE#;!0}iZvZ7Ve+kbnO3u^d zB$&^ql!#Ew-qDdHhNDaf$LBG8I!lgbqvdzQF`p2QBFFF?leyGm(RC=IZ|Zt!bVqRD z(Y`Oi7_V`R8j6AqXt}?q*&@e236H)-xZj}!V=V3-*6ETRuqEPuh`75%WCMbs=%9=l z2W1TSh%&-a8P`EMA9#beyB^_PjqqnNNv4wl@FmyZ#500UjZK7PLUb$qeUQtKTENjdY7)3%WXEaVYoTMxZj1+4+H zq#`ULDQDoJ_aM>5aWAD z-9dPAw&jJew2M%oRtc4xlV3(;d|Oi}L}%gjY@J3`dk%D)C=d1A zzHJEjH-AL=P>m{AiL21Na!Oi_ z2uT{6&h=6XhmPGD8U^gtwN&M5?F9AE2j3m|c6Zom^#Uho^_-#I^8J3V<<5ex`^=eL z&fVZ+oyOh}<8v7GkYqFzT=H18L!RL(+rP%d8Cu}-G!V5Ddio~giZ(LU;8Z;qGc1EFZJ}N&`=z#8wxLP7OO==?e%>1b`vxePZ$1d+FUlh7j$0dkYyBQ^n w0g{uHBq19hyb88{0ssK81pojT000000000103ZMW0KSvZBr68sAOHXW09#!SRR910 diff --git a/tmpl/excel_temp/kshj_total.xlsx b/tmpl/excel_temp/kshj_total.xlsx old mode 100644 new mode 100755 index 2035ef939d202a1570c39cb8884ac4a456927e40..b29ae47efc9514fb4d9a8dabfbee8e2afc199b5f GIT binary patch delta 4030 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