DB_JOB/작업파일/_스크립트/_inspect_gmerge.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

26 lines
1.3 KiB
Python

import sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
import openpyxl
ws = openpyxl.load_workbook(r'D:\01.프로젝트\DB수집\작업파일\_제출패키지_2026-06-03\프리랜서1\충청남도_부여군.xlsx').active
merges=list(ws.merged_cells.ranges)
def eff(r,c):
for m in merges:
if m.min_row<=r<=m.max_row and m.min_col<=c<=m.max_col:
return ws.cell(m.min_row,m.min_col).value
return ws.cell(r,c).value
gmerges=sorted([m for m in merges if m.min_col==7 and m.min_row>=3], key=lambda x:x.min_row)
print(f'G merges: {len(gmerges)}')
# show first 6 G-merge regions in full (D..K)
for m in gmerges[:6]:
a,z=m.min_row,m.max_row
print(f'\n--- G{a}:{z} (val={ws.cell(a,7).value!r}) ---')
for r in range(a, z+1):
print(f' r{r} D={eff(r,4)!r} E={eff(r,5)!r} F={eff(r,6)!r} G={ws.cell(r,7).value!r} H={ws.cell(r,8).value!r} I={ws.cell(r,9).value!r} K={ws.cell(r,11).value!r}')
# Are H/I/J ever populated under these G merges?
hpop=sum(1 for m in gmerges for r in range(m.min_row,m.max_row+1) if ws.cell(r,8).value not in (None,''))
print(f'\nG병합 구간 내 H(8) 값 있는 행 수: {hpop}')
# distribution of which D group the G merges fall in
from collections import Counter
dc=Counter(eff(m.min_row,4) for m in gmerges)
print('G병합 소속 대분류:', dict(dc))