공공기관2 작업 중. _temp 몽타주(재생성가능)는 제외. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
41 lines
1.8 KiB
Python
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))
|