From f86a2a8a82e083ffa2d22e7440cc09297ac844cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E5=B8=88?= Date: Tue, 9 Jun 2026 02:48:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=A4=E8=A1=A8=E5=85=A8=E6=94=B9?= =?UTF-8?q?=E5=8E=9F=E7=94=9FPPTX=E8=A1=A8=E6=A0=BC=20+=20=E5=88=97?= =?UTF-8?q?=E5=AD=97=E4=BD=93=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cleaned/危大方案编审进度看板.pptx | Bin 46614 -> 46192 bytes src/gen_pptx.py | 69 ++++++++++-------- 2 files changed, 40 insertions(+), 29 deletions(-) diff --git a/data/2026-06-08/cleaned/危大方案编审进度看板.pptx b/data/2026-06-08/cleaned/危大方案编审进度看板.pptx index b8f968b0348871faf7037ca15d556648796a0125..228931022676b0948787ceee820e57bf35e0ba92 100644 GIT binary patch delta 16339 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 Ji~bJq{{v|gwX6UD delta 16841 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 Y!u;<_f6y10I4?o4fePZa_%Hjv0Fv)a-~a#s diff --git a/src/gen_pptx.py b/src/gen_pptx.py index b5262b1..2f06cb4 100644 --- a/src/gen_pptx.py +++ b/src/gen_pptx.py @@ -156,22 +156,28 @@ R(MX2+Inches(1.2),PY+Inches(0.08),Inches(3.6*0.56),Inches(0.18),fill=BLUE) T(MX2+Inches(1.2),PY+Inches(0.28),Inches(3.6),Inches(0.18), '已审批 29 未审批 23 / 总计 52',sz=7,clr=GRAY) -# Unregistered detail +# Unregistered detail (native table) UDY=RY2+Inches(1.85)+Inches(0.12) -R(Inches(0.5),UDY,Inches(12.333),Inches(0.72),fill=WHITE,line=RGBColor(0xDB,0xE2,0xEA)) +R(Inches(0.5),UDY,Inches(12.333),Inches(0.82),fill=WHITE,line=RGBColor(0xDB,0xE2,0xEA)) R(Inches(0.5),UDY,Inches(12.333),Inches(0.28),fill=BLUE) T(Inches(0.7),UDY+Inches(0.02),Inches(10),Inches(0.24),'登记率未达100%的项目(认定→OA)',sz=10,clr=WHITE,b=True) -# Table header -R(Inches(0.5),UDY+Inches(0.28),Inches(7.0),Inches(0.22),fill=BG) -T(Inches(0.55),UDY+Inches(0.28),Inches(6.9),Inches(0.22),'项目名称',sz=9,clr=BLUE,b=True) -for col,(w,label) in enumerate([(Inches(1.5),'认定'),(Inches(1.5),'OA'),(Inches(1.5),'缺口')],1): - R(Inches(7.5)+(col-1)*Inches(1.5),UDY+Inches(0.28),w,Inches(0.22),fill=BG) - T(Inches(7.55)+(col-1)*Inches(1.5),UDY+Inches(0.28),Inches(1.4),Inches(0.22),label,sz=9,clr=BLUE,b=True,al=PP_ALIGN.CENTER) -# Data row -T(Inches(0.55),UDY+Inches(0.50),Inches(6.9),Inches(0.22),'阿联酋阿布扎比马斯努阿岛水工项目',sz=9) -T(Inches(7.55),UDY+Inches(0.50),Inches(1.4),Inches(0.22),'2',sz=10,clr=BLUE,b=True,al=PP_ALIGN.CENTER) -T(Inches(9.05),UDY+Inches(0.50),Inches(1.4),Inches(0.22),'0',sz=10,clr=RED,b=True,al=PP_ALIGN.CENTER) -T(Inches(10.55),UDY+Inches(0.50),Inches(1.4),Inches(0.22),'2',sz=10,clr=RED,b=True,al=PP_ALIGN.CENTER) + +tbl=s1.shapes.add_table(2,4,Inches(0.5),UDY+Inches(0.28),Inches(12.333),Inches(0.48)) +tbl.table.columns[0].width=Inches(7.5) +tbl.table.columns[1].width=Inches(1.5) +tbl.table.columns[2].width=Inches(1.5) +tbl.table.columns[3].width=Inches(1.833) +for i,(h,al) in enumerate([('项目名称',PP_ALIGN.LEFT),('认定',PP_ALIGN.CENTER),('OA',PP_ALIGN.CENTER),('缺口',PP_ALIGN.CENTER)]): + c=tbl.table.cell(0,i); c.text=h + c.fill.solid(); c.fill.fore_color.rgb=BG + for p in c.text_frame.paragraphs: p.font.size=Pt(9); p.font.bold=True; p.font.color.rgb=BLUE; p.alignment=al +for i,val in enumerate(['阿联酋阿布扎比马斯努阿岛水工项目','2','0','2']): + c=tbl.table.cell(1,i); c.text=val + for p in c.text_frame.paragraphs: + p.font.size=Pt(9) + p.font.color.rgb=RED if val=='0' else BLUE + p.font.bold=i>0 + p.alignment=PP_ALIGN.CENTER if i>0 else PP_ALIGN.LEFT # Footer R(Inches(0),Inches(7.18),Inches(13.333),Inches(0.32),fill=RGBColor(0xF5,0xF6,0xF8)) @@ -200,29 +206,34 @@ warnings=[ ('🟡','阿联酋迪拜马克图姆国际机场地下结构工程','T梁预制运输安装(4包)','已添加未实施','42天'), ] -# Table header -TY=Inches(1.1); TH=Inches(0.32) +# Native table: 6 rows × 5 cols (1 header + 5 data) +TY=Inches(1.1) CW=[Inches(0.6),Inches(3.8),Inches(3.0),Inches(2.2),Inches(1.0)] HDS=['信号','项目名称','方案名称','当前状态','距开工'] x_off=Inches(0.5) -for i,(h,w) in enumerate(zip(HDS,CW)): - R(x_off+sum(CW[:i]),TY,w,TH,fill=BLUE) - T(x_off+Inches(0.05)+sum(CW[:i]),TY+Inches(0.02),w-Inches(0.1),Inches(0.28),h,sz=10,clr=WHITE,b=True) - +tbl2=s2.shapes.add_table(6,5,x_off,TY,sum(CW),Inches(6*0.38)) +for i,w in enumerate(CW): tbl2.table.columns[i].width=w +for i,h in enumerate(HDS): + c=tbl2.table.cell(0,i); c.text=h + c.fill.solid(); c.fill.fore_color.rgb=BLUE + for p in c.text_frame.paragraphs: p.font.size=Pt(10); p.font.bold=True; p.font.color.rgb=WHITE for j,(icon,proj,scheme,status,days) in enumerate(warnings): - y=TY+TH+Inches(j*0.38) + row=j+1; vals=[icon,proj,scheme,status,days] bg_c=BG if j%2==0 else WHITE - R(x_off,y,sum(CW),Inches(0.38),fill=bg_c) - T(x_off+Inches(0.05),y+Inches(0.04),Inches(0.5),Inches(0.3),icon,sz=16,al=PP_ALIGN.CENTER) - T(x_off+CW[0],y+Inches(0.04),CW[1]-Inches(0.1),Inches(0.3),proj,sz=10) - T(x_off+CW[0]+CW[1],y+Inches(0.04),CW[2]-Inches(0.1),Inches(0.3),scheme,sz=10) - T(x_off+CW[0]+CW[1]+CW[2],y+Inches(0.04),CW[3]-Inches(0.1),Inches(0.3),status,sz=10) - T(x_off+sum(CW[:4]),y+Inches(0.04),CW[4]-Inches(0.1),Inches(0.3),days,sz=11,clr=RED,b=True,al=PP_ALIGN.RIGHT) + for i,val in enumerate(vals): + c=tbl2.table.cell(row,i); c.text=val + c.fill.solid(); c.fill.fore_color.rgb=bg_c + for p in c.text_frame.paragraphs: + p.font.size=Pt({0:16,1:9,4:11}.get(i,10)) + p.font.color.rgb=RED if i==4 else BLACK + p.font.bold=(i==4) + p.alignment=PP_ALIGN.CENTER if i in (0,4) else PP_ALIGN.LEFT # Rule -R(x_off,TY+TH+Inches(5*0.38+0.2),sum(CW),Inches(0.45),fill=BG) -R(x_off,TY+TH+Inches(5*0.38+0.2),Inches(0.06),Inches(0.45),fill=GOLD) -T(x_off+Inches(0.2),TY+TH+Inches(5*0.38+0.25),Inches(11),Inches(0.35), +RY=TY+Inches(6*0.38+0.15) +R(x_off,RY,sum(CW),Inches(0.45),fill=BG) +R(x_off,RY,Inches(0.06),Inches(0.45),fill=GOLD) +T(x_off+Inches(0.2),RY+Inches(0.05),Inches(11),Inches(0.35), '📐 预警规则:🟠 橙色 ≤30天未审批 · 🟡 黄色 ≤45天未审批 · 🔴 红色 在实施未审批(本月0项)',sz=10,clr=BLACK) R(Inches(0),Inches(7.18),Inches(13.333),Inches(0.32),fill=RGBColor(0xF5,0xF6,0xF8))