Python/Python__works

openpyxl

말하는감자 2019. 7. 18. 15:56

평생 쓸일이 없을것 같은것이 나에게 다가왔다

openpyxl

 

엑셀 싫어함 ㅎ.. 

 

#설치
pip install openpyxl

#임포트
import openpyxl

#워크북 생성
work_book = openpyxl.Workbook()

#작명
work_book_name = '에헤라디야'+'.xlsx'

#저장
work_book.save(filename=work_book_name)

#열기
work_book = openpyxl.load_workbook('엑셀이름')

#시트 생성
work_book = work_book.create_sheet('시트이름')

 

시트에 데이터 박아주기

뭐 더 좋은 방법 찾으면 내꺼도 고치고 싶지만 파이썬과 엑셀의 만남은 초면이라 ㅎ.. 

#만약 시트에서 하드로 박아줘야 할 구간이 있다면
work_book.cell(row=번호, column=번호).value = '뭐뭐뭐뭐'



#이런식으로 박아줘도 괜찮지만
#셀이 많아지면 소스만 보고는 뭐가 뭔지 잘 모르겠다
#심지어 기하급수적으로 헷갈리기 시작하기 때문에 하드로 박을 구간은 좀 정리해서 썼다

header_data = {
	'1st' : work_book.cell(row=2, column=2),
    '2nd' : work_book.cell(row=3, column=2),
    '3rd' : work_book.cell(row=4, column=2),
}
header_data['1st'].value = '1번'

 

시트 새단장하기

인터넷 찾아보니까 하나씩 스타일 박는것만 나와있어서 (나름대로) 고민해서 수정했다

일단 스타일을 좀 정리해서 한 세트로 만들었다

style = {
        'title': {
            'font': Font(name='맑은 고딕', size=10, bold=True),
            'alignment': Alignment(horizontal='left', vertical='center'),
            'fill': PatternFill(patternType='solid', fgColor=Color('F6DDCC'))
        },
        'menu': {
            'font': Font(name='맑은 고딕', size=8, bold=False),
            'alignment': Alignment(horizontal='center', vertical='center'),
            'fill': PatternFill(patternType='solid', fgColor=Color('F8F9F9'))
        },
        'data': {
            'font': Font(name='맑은 고딕', size=8, bold=False),
            'alignment': Alignment(horizontal='left', vertical='center'),
        },
    }

그다음에 iter_rows를 사용했다. 

    for r in work_book.iter_rows(min_row=row최소값, min_col=column최소값, max_row=row최대값, max_col=column최대값):
        for cell in r:
        	if cell.value != None:
              cell.font = style['title']['font']
              cell.alignment = style['title']['alignment']
              cell.fill = style['title']['fill']
     
    

뭔가 멋지게 짜면 좋았겠지만 ㅎ.............. 

적용할 셀이 너무 많아서 간단하게 했다

'Python > Python__works' 카테고리의 다른 글

requests  (0) 2019.09.19
python json to xml OR xml to json ... 과연 정확하게 되고 있는가?  (0) 2019.09.18
lambda  (0) 2019.07.14
python lambda  (0) 2019.07.14
list 거꾸로 출력하기  (0) 2019.07.08