본문 바로가기
python web Flask

Python openpyxl

by YJHTPII 2021. 5. 18.
반응형

#!pip3 install openpyxl jdcal



from openpyxl import Workbook

#workbook 생성
workb=Workbook()
#worksheet 활성화
worksh=workb.active
#A1에 'Hello World'값 입력
worksh['A1']='Hello World'

# 시트 추가
worksh2=workb.create_sheet('테스트 시트',1)
#숫자 100 입력
worksh2['A1']=100

#시트 추가
worksh3=workb.create_sheet('테스트 시트 3',2)

#시트 삭제
workb.remove(worksh3)

#시트명 변경
worksh2.title="새이름"

#셀병합
#A1~E1셀 병합
worksh.merge_cells('B1:E1')
worksh['B1']='셀병합'

#셀폰트설정 및 정렬
from openpyxl.styles import Font, Alignment
font_align1=worksh['B1']
font_align1.font=Font(name='나눔고딕', size=25, bold=True)
font_align1.alignment=Alignment(horizontal='center',vertical='center')

#셀 테두리
worksh['B2']='테스트'
font_align2=worksh['B2']
from openpyxl.styles import Border, Side, PatternFill, Color
#box설정
box=Border(left=Side(border_style="thin", color='FF000000'),
          right=Side(border_style="thin", color='FF000000'),
          top=Side(border_style="thin", color='FF000000'),
          bottom=Side(border_style="thin", color='FF000000'),
          diagonal=Side(border_style="thin", color='FF000000'), diagonal_direction=0,
          outline=Side(border_style="thin", color='FF000000'),
          vertical=Side(border_style="thin", color='FF000000'),
          horizontal=Side(border_style="thin", color='FF000000')
          )
#셀 테두리 적용
font_align2.border=box
font_align2.fill=PatternFill(patternType='solid', fgColor=Color('FFC000'))

#지정영역 위쪽 스크롤 고정 A2위쪽=A1 고정
worksh.freeze_panes='A2'

#엑셀로 저장
workb.save('hello.xlsx')


from openpyxl import Workbook, load_workbook
from openpyxl.chart import ScatterChart, Series, Reference
from openpyxl.chart.layout import Layout, ManualLayout

wb = Workbook()
ws = wb.active

rows = [
    ['Size', 'Batch 1', 'Batch 2'],
    [2, 40, 30],
    [3, 40, 25],
    [4, 50, 30],
    [5, 30, 25],
    [6, 25, 35],
    [7, 20, 40],
]

for row in rows:
    ws.append(row)

ch1 = ScatterChart()
xvalues = Reference(ws, min_col=1, min_row=2, max_row=7)
for i in range(2, 4):
    values = Reference(ws, min_col=i, min_row=1, max_row=7)
    series = Series(values, xvalues, title_from_data=True)
    ch1.series.append(series)


ch1.title = "Default layout"
ch1.style = 13
ch1.x_axis.title = 'Size'
ch1.y_axis.title = 'Percentage'
ch1.legend.position = 'r'

ws.add_chart(ch1, "B10")

from copy import deepcopy

# Half-size chart, bottom right
ch2 = deepcopy(ch1)
ch2.title = "Manual chart layout"
ch2.legend.position = "tr"
ch2.layout=Layout(
    manualLayout=ManualLayout(
        x=0.25, y=0.25,
        h=0.5, w=0.5,
    )
)
ws.add_chart(ch2, "H10")

# Half-size chart, centred
ch3 = deepcopy(ch1)
ch3.layout = Layout(
    ManualLayout(
    x=0.25, y=0.25,
    h=0.5, w=0.5,
    xMode="edge",
    yMode="edge",
    )
)
ch3.title = "Manual chart layout, edge mode"
ws.add_chart(ch3, "B27")

# Manually position the legend bottom left
ch4 = deepcopy(ch1)
ch4.title = "Manual legend layout"
ch4.legend.layout = Layout(
    manualLayout=ManualLayout(
        yMode='edge',
        xMode='edge',
        x=0, y=0.9,
        h=0.1, w=0.5
    )
)

ws.add_chart(ch4, "H27")

wb.save("chart_layout.xlsx")

 

 

 

 

반응형

댓글