공공기관2 작업 중. _temp 몽타주(재생성가능)는 제외. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
30 lines
1.4 KiB
Python
30 lines
1.4 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)
|
|
cross=0
|
|
for m in gmerges:
|
|
fvals={eff(r,6) for r in range(m.min_row,m.max_row+1)}
|
|
evals={eff(r,5) for r in range(m.min_row,m.max_row+1)}
|
|
if len(fvals)>1 or len(evals)>1:
|
|
cross+=1; print('CROSS', m, 'F=',fvals,'E=',evals)
|
|
# H/I/J merges?
|
|
hij=[str(m) for m in merges if m.min_col>=8 and m.min_row>=3]
|
|
# rows under G-merges always have own H value?
|
|
missingH=[]
|
|
for m in gmerges:
|
|
for r in range(m.min_row,m.max_row+1):
|
|
if ws.cell(r,8).value in (None,''): missingH.append(r)
|
|
print(f'G병합 {len(gmerges)}개 F/E경계 넘는것 {cross}개 H/I/J병합 {len(hij)}개 G병합내 H빈칸 {len(missingH)}행')
|
|
# which F groups (읍면 etc) contain G merges
|
|
fset=sorted({eff(m.min_row,6) for m in gmerges})
|
|
print('G병합 포함 F그룹:', fset)
|
|
print('E그룹:', sorted({eff(m.min_row,5) for m in gmerges}))
|