DB_JOB/작업파일/완료/광역_사이트맵/전북특별자치도/7.순창군/_fix23.py
hehihoho3 df16c98366 백업: DB수집 전체 스냅샷 (공공기관2 정리 전)
공공기관2 작업 중. _temp 몽타주(재생성가능)는 제외.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 18:15:40 +09:00

41 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
import openpyxl, copy
F='전북특별자치도_순창군.xlsx'
wb=openpyxl.load_workbook(F); ws=wb.active
# ===== 3) 가맹점 G221:G224 병합해제 + 필터라벨 =====
labels={221:'이용 가맹점(지류상품권)',222:'이용 가맹점(모바일상품권)',
223:'이용 가맹점(BC카드)',224:'이용 가맹점(NH카드)'}
# 병합 해제
for m in list(ws.merged_cells.ranges):
if str(m)=='G221:G224':
ws.unmerge_cells('G221:G224')
src=ws.cell(221,7) # 스타일 원본(G221)
src_font=copy.copy(src.font); src_align=copy.copy(src.alignment)
src_border=copy.copy(src.border); src_fill=copy.copy(src.fill); src_fmt=src.number_format
for r,lab in labels.items():
c=ws.cell(r,7); c.value=lab
c.font=copy.copy(src_font); c.alignment=copy.copy(src_align)
c.border=copy.copy(src_border); c.fill=copy.copy(src_fill); c.number_format=src_fmt
# ===== 2) B순번 1..N 연속 재번호 (content행 전부) =====
content=[r for r in range(3,ws.max_row+1)
if ws.cell(r,2).value not in (None,'') or ws.cell(r,11).value not in (None,'')
or any(ws.cell(r,c).value not in (None,'') for c in range(4,11))]
# B스타일 원본: 기존 숫자행 하나
bsrc=None
for r in content:
if isinstance(ws.cell(r,2).value,int): bsrc=ws.cell(r,2); break
bf=copy.copy(bsrc.font); ba=copy.copy(bsrc.alignment); bb=copy.copy(bsrc.border); bfmt=bsrc.number_format
for i,r in enumerate(content,1):
c=ws.cell(r,2)
if c.value!=i:
c.value=i
if not isinstance(ws.cell(r,2).value,int) or c.font is None:
pass
# 빈칸이었던 행 스타일 보정
c.font=copy.copy(bf); c.alignment=copy.copy(ba); c.border=copy.copy(bb); c.number_format=bfmt
wb.save(F)
print('저장완료. content/B순번 행수=',len(content),'→ B 1..%d'%len(content))