"""'공통 문제 상세(이미지)' 시트에 J~M열 '수정 후 캡처'를 만들고 수정 후 이미지를 같은 행의 교량별 열에 넣는다 (2026-10-26). 이미지: 검토파일/수정후_캡처/*.png (make_after_images.py) J=운곡교, K=산외교, L=옥성교, M=Ramp-A교. 기존 열(C~F)에서 '(해당 없음 …)' 텍스트였던 칸은 같은 텍스트를 J~M 에 복사한다. J3 이 이미 있으면 중단(이중 적용 방지). """ import copy import sys from pathlib import Path import openpyxl from openpyxl.drawing.image import Image as XLImage from openpyxl.styles import Alignment ROOT = Path(r"D:\★Pier 자료\프로그램\Pier_T") IMG = ROOT / "검토파일" / "수정후_캡처" XLSX = ROOT / "검토파일" / "4개교_공통사항_종합.xlsx" COLS = {"운곡교": "J", "산외교": "K", "옥성교": "L", "Ramp-A교": "M"} BEFORE_COL = {"운곡교": "C", "산외교": "D", "옥성교": "E", "Ramp-A교": "F"} PLAN = { # row -> {bridge: image file} 6: {"운곡교": "C-1_운곡교_H29_수정후.png", "옥성교": "C-1_옥성교_H29_수정후.png", "Ramp-A교": "C-1_Ramp-A교_H29_수정후.png"}, 7: {"운곡교": "C-1_운곡교_H25_수정후.png", "옥성교": "C-1_옥성교_H25_수정후.png", "Ramp-A교": "C-1_Ramp-A교_H25_수정후.png"}, 8: {"산외교": "C-1_산외교_H22_수정후.png", "옥성교": "C-1_옥성교_H22_수정후.png"}, 9: {"운곡교": "C-1_운곡교_H19_수정후.png", "산외교": "C-1_산외교_H19_수정후.png", "옥성교": "C-1_옥성교_H19_수정후.png", "Ramp-A교": "C-1_Ramp-A교_H19_수정후.png"}, 10: {"운곡교": "C-1_운곡교_H16_수정후.png"}, 19: {"운곡교": "C-7_정면도_수정후_운곡교.png", "산외교": "C-7_정면도_수정후_산외교.png", "옥성교": "C-7_정면도_수정후_옥성교.png"}, 20: {"운곡교": "C-7_단면도_수정후_운곡교.png", "산외교": "C-7_단면도_수정후_산외교.png", "옥성교": "C-7_단면도_수정후_옥성교.png"}, } wb = openpyxl.load_workbook(XLSX) ws = wb["공통 문제 상세(이미지)"] if ws["J3"].value: sys.exit("J3 이 이미 있음 - 중단") for br, col in COLS.items(): c = ws["%s3" % col] c.value = "%s — 수정 후 캡처 (2026-10-26)" % br for attr in ("font", "fill", "border", "alignment"): setattr(c, attr, copy.copy(getattr(ws["H3"], attr))) c.alignment = Alignment(wrap_text=True, vertical="center") ws.column_dimensions[col].width = 88 added = 0 for row, items in PLAN.items(): for br, col in COLS.items(): if br in items: p = IMG / items[br] im = XLImage(str(p)) w0, h0 = im.width, im.height if row in (19, 20): im.width, im.height = 620, int(620 * h0 / w0) else: im.width, im.height = 600, int(600 * h0 / w0) ws.add_image(im, "%s%d" % (col, row)) added += 1 else: t = ws["%s%d" % (BEFORE_COL[br], row)].value if isinstance(t, str) and t.startswith("("): c = ws["%s%d" % (col, row)] c.value = t c.alignment = Alignment(wrap_text=True, vertical="top") ws["J5"].value = "※ 수정 후 캡처: C-7 은 수정된 모델의 Rhino Front / Right 뷰 캡처(기초 콘크리트 숨김) + 높이 기준선, C-1 은 수정된 모델의 호 반지름 실측값으로 같은 형식으로 작성" ws["J5"].alignment = Alignment(wrap_text=True, vertical="top") wb.save(XLSX) print("images added:", added)