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

42 lines
1.4 KiB
Python

import sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
import openpyxl
PKG = r'D:\01.프로젝트\DB수집\작업파일\_제출패키지_2026-06-03\프리랜서1\충청남도_부여군.xlsx'
ws = openpyxl.load_workbook(PKG).active
def bdesc(cell):
b=cell.border
def s(side): return f'{side.style}'
return f'L={s(b.left)} R={s(b.right)} T={s(b.top)} B={s(b.bottom)}'
print('=== row 233 borders (template) cols A..AA ===')
for c in range(1,28):
cell=ws.cell(233,c)
print(f' {cell.coordinate}: {bdesc(cell)}')
# classify each data row: has full thin border on B..S (cols 2..19) vs none
print('\n=== rows lacking borders (B..S any side None) ===')
def has_border(r):
for c in range(2,20): # B..S
b=ws.cell(r,c).border
if not (b.left.style and b.right.style and b.top.style and b.bottom.style):
return False
return True
noborder=[r for r in range(3,ws.max_row+1) if not has_border(r)]
# compress to ranges
def ranges(lst):
out=[];
for x in lst:
if out and x==out[-1][1]+1: out[-1][1]=x
else: out.append([x,x])
return out
print('no-border rows count:', len(noborder))
print('ranges:', [(a,b) for a,b in ranges(noborder)])
# sample one no-border row border detail
if noborder:
r=noborder[0]
print(f'\nsample no-border r{r}:')
for c in range(1,20):
print(f' {ws.cell(r,c).coordinate}: {bdesc(ws.cell(r,c))}')