공공기관2 작업 중. _temp 몽타주(재생성가능)는 제외. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
32 lines
1.3 KiB
Python
32 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
import sys
|
|
sys.stdout.reconfigure(encoding='utf-8')
|
|
import openpyxl
|
|
wb = openpyxl.load_workbook('충청남도_서천군.xlsx'); ws = wb.active
|
|
mfill = {}
|
|
for mr in ws.merged_cells.ranges:
|
|
if mr.min_col in (4,5,6) and mr.min_row >= 3:
|
|
top = ws.cell(mr.min_row, mr.min_col).value
|
|
for rr in range(mr.min_row, mr.max_row+1):
|
|
mfill[(rr, mr.min_col)] = top
|
|
def eff(r,c):
|
|
v = ws.cell(r,c).value
|
|
return v if v not in (None,'') else mfill.get((r,c))
|
|
def show(rng):
|
|
for r in rng:
|
|
D,E,F = eff(r,4),eff(r,5),eff(r,6)
|
|
own = [ws.cell(r,c).value for c in range(2,11)]
|
|
k = ws.cell(r,11); link = k.hyperlink.target if k.hyperlink else None
|
|
print(f'r{r} B={own[0]} C={own[1]} | DEF(eff)={D!r}/{E!r}/{F!r} | G~J={own[5:9]} | K={link}')
|
|
for region in [range(162,176), range(408,416)]:
|
|
print('=====')
|
|
show(region)
|
|
print('\n=== D/E/F merges overlapping 162..176 & 408..416 ===')
|
|
for mr in ws.merged_cells.ranges:
|
|
if mr.min_col in (4,5,6):
|
|
for lo,hi in [(162,176),(408,416)]:
|
|
if not (mr.max_row < lo or mr.min_row > hi):
|
|
col={4:'D',5:'E',6:'F'}[mr.min_col]
|
|
print(f' {col}: {mr} top={ws.cell(mr.min_row,mr.min_col).value!r}')
|
|
break
|