openpyxl로 격자 치기
Introduction
다음 excel 데이터 파일 (test.xlsx) 이 있습니다.
한 번은 이 excel이 칸을 긋기를 바라는 요청이 있습니다. (여기는 검은색 테두리입니다.)
만약 excel 파일이나 작업표의 수량이라면 수동으로 줄을 그을 수 있지만, 앞으로는 대량의 excel 파일을 똑같이 조작할 수 있습니다.이런 상황에 대응하기 위해서는 자동화라는 작업이 매우 편리할 것이다.
스크립트 및 실행 결과
Excel을 로드하고 숫자 값이 있는 영역에 메쉬를 그리는 스크립트는 다음과 같습니다.
sheet_border.py
'''
sheet_border.py
purpose: read xlsx and set border automatically
'''
import openpyxl as xl
from openpyxl.styles.borders import Border, Side
# set input file name
inputfile = 'test.xlsx'
side = Side(style='thin', color='000000')
# set border (black thin line)
border = Border(top=side, bottom=side, left=side, right=side)
# read tmp xlsx
wb1 = xl.load_workbook(filename=inputfile)
ws1 = wb1.worksheets[0]
# write in sheet
for row in ws1:
for cell in row:
ws1[cell.coordinate].border = border
# save xlsx file
wb1.save(inputfile)
결과는 다음과 같다.
스크립트 세부 정보
from openpyxl.styles.borders import Border, Side
from openpyxl.styles.borders import Border, Side
Border 함수와 Side 함수를 직접 호출할 수 있습니다.Side 함수는 이름과 같이 Side 객체를 반환하는 함수입니다.색상과 선 두께를 지정하기 위해 Border 함수를 동시에 가져옵니다.
Side 함수
side = Side(style='thin', color='000000')
이 행은 사이드 객체를 사이드 변수에 대입합니다.여기에 검은색 선과 가는 선을 지정했다.매개 변수 스타일에는'thein'외에'dash Dot','dash Doot','double','hair','dotted','medium Dash Doot','medium Dash Dot','slant Dash Dot','thick','thin','medium','medium Dash Dot'도 지정할 수 있다.
다음처럼 변경해서 실행해 보세요.side = Side(style='thick', color='FF0000')
결과는 다음과 같이 굵은 빨간색 선을 그렸다.
Border 함수
border = Border(top=side, bottom=side, left=side, right=side)
이 행은 border 객체를 border 변수에 대입합니다.여기에 칸의 top (위쪽),bottom (아래쪽),left (왼쪽),right (오른쪽) 를 지정합니다.이곳의 모든 곳은 같은 사이드를 지정했다.
격자를 만들다
# write in sheet
for row in ws1:
for cell in row:
ws1[cell.coordinate].border = border
이 부분에서, 모든 칸의 격자 대상은Border 함수에서 지정한 격자 형식을 포함합니다.
적용: 가치가 없는 부분에 테두리를 두지 않음
test.xlsx가 다음과 같은 내용이라고 가정해 보세요.
이게 바로 위에서 보여준 sheet입니다.border.py를 실행한 후 결과는 다음과 같습니다.
위의 그림에서 보듯이 11행과 E열 등 수치가 전혀 없는 부분을 뛰어넘고 격자에 테두리를 그릴 수 있다.
값이 없는 부분에 테두리를 덧붙이고 싶지 않은 경우 아래와 같이 sheetborder.다시 쓰다.# write in sheet
for row in ws1:
for cell in row:
if ws1[cell.coordinate].value:
ws1[cell.coordinate].border = border
위에서 말한 바와 같이, if 문장을 추가하면, 칸 값이 None이 아닐 때만 테두리에 쓸 수 있습니다.이 결과는 아래와 같다.
이렇게 하면 대량의 excel 파일이 있어도 하나하나 손으로 선을 긋는 번거로운 작업에서 해방될 수 있다.
Reference
이 문제에 관하여(openpyxl로 격자 치기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/github-nakasho/items/358e5602aeda81c58c81
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Excel을 로드하고 숫자 값이 있는 영역에 메쉬를 그리는 스크립트는 다음과 같습니다.
sheet_border.py
'''
sheet_border.py
purpose: read xlsx and set border automatically
'''
import openpyxl as xl
from openpyxl.styles.borders import Border, Side
# set input file name
inputfile = 'test.xlsx'
side = Side(style='thin', color='000000')
# set border (black thin line)
border = Border(top=side, bottom=side, left=side, right=side)
# read tmp xlsx
wb1 = xl.load_workbook(filename=inputfile)
ws1 = wb1.worksheets[0]
# write in sheet
for row in ws1:
for cell in row:
ws1[cell.coordinate].border = border
# save xlsx file
wb1.save(inputfile)
결과는 다음과 같다.스크립트 세부 정보
from openpyxl.styles.borders import Border, Side
from openpyxl.styles.borders import Border, Side
Border 함수와 Side 함수를 직접 호출할 수 있습니다.Side 함수는 이름과 같이 Side 객체를 반환하는 함수입니다.색상과 선 두께를 지정하기 위해 Border 함수를 동시에 가져옵니다.
Side 함수
side = Side(style='thin', color='000000')
이 행은 사이드 객체를 사이드 변수에 대입합니다.여기에 검은색 선과 가는 선을 지정했다.매개 변수 스타일에는'thein'외에'dash Dot','dash Doot','double','hair','dotted','medium Dash Doot','medium Dash Dot','slant Dash Dot','thick','thin','medium','medium Dash Dot'도 지정할 수 있다.
다음처럼 변경해서 실행해 보세요.side = Side(style='thick', color='FF0000')
결과는 다음과 같이 굵은 빨간색 선을 그렸다.
Border 함수
border = Border(top=side, bottom=side, left=side, right=side)
이 행은 border 객체를 border 변수에 대입합니다.여기에 칸의 top (위쪽),bottom (아래쪽),left (왼쪽),right (오른쪽) 를 지정합니다.이곳의 모든 곳은 같은 사이드를 지정했다.
격자를 만들다
# write in sheet
for row in ws1:
for cell in row:
ws1[cell.coordinate].border = border
이 부분에서, 모든 칸의 격자 대상은Border 함수에서 지정한 격자 형식을 포함합니다.
적용: 가치가 없는 부분에 테두리를 두지 않음
test.xlsx가 다음과 같은 내용이라고 가정해 보세요.
이게 바로 위에서 보여준 sheet입니다.border.py를 실행한 후 결과는 다음과 같습니다.
위의 그림에서 보듯이 11행과 E열 등 수치가 전혀 없는 부분을 뛰어넘고 격자에 테두리를 그릴 수 있다.
값이 없는 부분에 테두리를 덧붙이고 싶지 않은 경우 아래와 같이 sheetborder.다시 쓰다.# write in sheet
for row in ws1:
for cell in row:
if ws1[cell.coordinate].value:
ws1[cell.coordinate].border = border
위에서 말한 바와 같이, if 문장을 추가하면, 칸 값이 None이 아닐 때만 테두리에 쓸 수 있습니다.이 결과는 아래와 같다.
이렇게 하면 대량의 excel 파일이 있어도 하나하나 손으로 선을 긋는 번거로운 작업에서 해방될 수 있다.
Reference
이 문제에 관하여(openpyxl로 격자 치기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/github-nakasho/items/358e5602aeda81c58c81
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from openpyxl.styles.borders import Border, Side
side = Side(style='thin', color='000000')
side = Side(style='thick', color='FF0000')
border = Border(top=side, bottom=side, left=side, right=side)
# write in sheet
for row in ws1:
for cell in row:
ws1[cell.coordinate].border = border
test.xlsx가 다음과 같은 내용이라고 가정해 보세요.
이게 바로 위에서 보여준 sheet입니다.border.py를 실행한 후 결과는 다음과 같습니다.
위의 그림에서 보듯이 11행과 E열 등 수치가 전혀 없는 부분을 뛰어넘고 격자에 테두리를 그릴 수 있다.
값이 없는 부분에 테두리를 덧붙이고 싶지 않은 경우 아래와 같이 sheetborder.다시 쓰다.
# write in sheet
for row in ws1:
for cell in row:
if ws1[cell.coordinate].value:
ws1[cell.coordinate].border = border
위에서 말한 바와 같이, if 문장을 추가하면, 칸 값이 None이 아닐 때만 테두리에 쓸 수 있습니다.이 결과는 아래와 같다.이렇게 하면 대량의 excel 파일이 있어도 하나하나 손으로 선을 긋는 번거로운 작업에서 해방될 수 있다.
Reference
이 문제에 관하여(openpyxl로 격자 치기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/github-nakasho/items/358e5602aeda81c58c81텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)