python openpyxl 모듈의 사용 상세 정보

7305 단어 pythonopenpyxl

Python_Openpyxl


1. 설치


pip install openpyxl

2. 파일 열기


① 만들기

from openpyxl import Workbook 
#  
wb = Workbook()
#   worksheet
ws = wb.active
② 이미 열기

>>> from openpyxl import load_workbook
>>> wb2 = load_workbook(' .xlsx')

3. 데이터 저장


#  : ( )
ws['A1'] = 42
#  : , ( , )( )
ws.append([1, 2, 3])
#  :Python  
ws['A3'] = datetime.datetime.now().strftime("%Y-%m-%d")

4. 테이블 만들기(sheet)


#  : (default)
>>> ws1 = wb.create_sheet("Mysheet") 
#  : 
>>> ws2 = wb.create_sheet("Mysheet", 0)

5. 테이블 선택(sheet)


# sheet   key  
>>> ws3 = wb["New Title"]
>>> ws4 = wb.get_sheet_by_name("New Title")
>>> ws is ws3 is ws4
True

6. 테이블 이름 보기(sheet)


#  
>>> print(wb.sheetnames)
['Sheet2', 'New Title', 'Sheet1']
#  
>>> for sheet in wb:
...  print(sheet.title)

7. 셀 액세스(call)


① 단일 셀 액세스

#  
>>> c = ws['A4']
#  :row  ;column  
>>> d = ws.cell(row=4, column=2, value=10)
#  : 
>>> for i in range(1,101):
...   for j in range(1,101):
...   ws.cell(row=i, column=j)
② 다중 셀 액세스

#  
>>> cell_range = ws['A1':'C2']
#  ( )
>>> colC = ws['C']
>>> col_range = ws['C:D']
>>> row10 = ws[10]
>>> row_range = ws[5:10]
#  (  →  )
>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
... for cell in row:
...  print(cell)
<Cell Sheet1.A1>
<Cell Sheet1.B1>
<Cell Sheet1.C1>
<Cell Sheet1.A2>
<Cell Sheet1.B2>
<Cell Sheet1.C2> 
#  (  →  )
>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
... for cell in row:
...  print(cell)
<Cell Sheet1.A1>
<Cell Sheet1.B1>
<Cell Sheet1.C1>
<Cell Sheet1.A2>
<Cell Sheet1.B2>
<Cell Sheet1.C2>
#    
>>> ws = wb.active
>>> ws['C9'] = 'hello world'
>>> tuple(ws.rows)
((<Cell Sheet.A1>, <Cell Sheet.B1>, <Cell Sheet.C1>),
(<Cell Sheet.A2>, <Cell Sheet.B2>, <Cell Sheet.C2>),
...
(<Cell Sheet.A8>, <Cell Sheet.B8>, <Cell Sheet.C8>),
(<Cell Sheet.A9>, <Cell Sheet.B9>, <Cell Sheet.C9>))
#    
>>> tuple(ws.columns)
((<Cell Sheet.A1>,
<Cell Sheet.A2>,
<Cell Sheet.A3>,
...
<Cell Sheet.B7>,
<Cell Sheet.B8>,
<Cell Sheet.B9>),
(<Cell Sheet.C1>,
...
<Cell Sheet.C8>,
<Cell Sheet.C9>))

8. 데이터 저장


>>> wb.save(' .xlsx')

9. 기타


① sheet 탭 색상 변경

ws.sheet_properties.tabColor = "1072BA"
② 최대 행, 최대 열 가져오기

#  
print(sheet.max_row)
print(sheet.max_column)
③ 각 행, 각 열 가져오기
  • sheet.rows는 생성기입니다. 안에는 줄마다 데이터가 있고, 줄마다 또한tuple로 감싸져 있습니다
  • sheet.columns는 유사하지만, 안에 있는tuple은 열마다 칸입니다
  • 
    #  , A1, B1, C1 
    for row in sheet.rows:
     for cell in row:
      print(cell.value)
    
    # A1, A2, A3 
    for column in sheet.columns:
     for cell in column:
      print(cell.value)
    ④ 숫자에 따라 알파벳을, 알파벳에 따라 숫자를 얻는다
    
    from openpyxl.utils import get_column_letter, column_index_from_string
    
    #  
    print(get_column_letter(2)) # B
    #  
    print(column_index_from_string('D')) # 4
    ⑤ 워크시트 삭제
    
    #  
    wb.remove(sheet)
    #  
    del wb[sheet]
    ⑥ 행렬 변환(행→열)
    
    rows = [
     ['Number', 'data1', 'data2'],
     [2, 40, 30],
     [3, 40, 25],
     [4, 50, 30],
     [5, 30, 10],
     [6, 25, 5],
     [7, 50, 10]]
    
    list(zip(*rows))
    
    # out
    [('Number', 2, 3, 4, 5, 6, 7),
     ('data1', 40, 40, 50, 30, 25, 50),
     ('data2', 30, 25, 30, 10, 5, 10)]
    
    #    ( )
    rows = [
     ['Number', 'data1', 'data2'],
     [2, 40  ], #  
     [3, 40, 25],
     [4, 50, 30],
     [5, 30, 10],
     [6, 25, 5],
     [7, 50, 10],
    ]
    # out
    [('Number', 2, 3, 4, 5, 6, 7), ('data1', 40, 40, 50, 30, 25, 50)]

    10. 셀 스타일 설정


    ① 가져올 클래스
    
    from openpyxl.styles import Font, colors, Alignment
    ② 글꼴
    다음 코드는 등선 24호, 굵은 기울임꼴, 글꼴 색깔 빨간색을 지정합니다.셀의 Font 속성을 직접 사용하여 Font 객체에 값을 지정합니다.
    
    bold_itatic_24_font = Font(name=' ', size=24, italic=True, color=colors.RED, bold=True)
    
    sheet['A1'].font = bold_itatic_24_font
    ③ 정렬
    셀의 속성aligment를 직접 사용합니다. 수직 거중과 수평 거중을 지정합니다.센터 말고right, left 등 매개 변수를 사용할 수 있습니다
    
    #  B1 
    sheet['B1'].alignment = Alignment(horizontal='center', vertical='center')
    ④ 행 높이 및 열 너비 설정
    
    #  2 
    sheet.row_dimensions[2].height = 40
    # C 
    sheet.column_dimensions['C'].width = 30
    ⑤ 셀 병합 및 버스트
  • 병합 셀이란 병합 영역의 왼쪽 상단에 있는 셀을 기준으로 다른 셀을 덮어쓰고 큰 셀이라고 합니다
  • 반대로 칸을 분할한 후 이 큰 칸의 값을 원래의 왼쪽 상단 위치로 되돌려줍니다
  • 
    #  ,  
    sheet.merge_cells('B1:G1') #  
    sheet.merge_cells('A1:C3') #  
  • 합병 후 왼쪽 상단에만 데이터를 쓸 수 있다. 즉, 구간 중: 왼쪽 좌표..
  • 병합할 칸에 데이터가 있으면 왼쪽 상단의 데이터만 보존하고 나머지는 버려진다.다시 말하면 병합 전에 왼쪽 상단에 데이터를 쓰지 않았다면, 병합 후 칸에 데이터가 없을 것이다
  • 다음은 칸을 분할하는 코드입니다.분할하면 값이 A1 위치로 돌아갑니다
  • 
    sheet.unmerge_cells('A1:C3')

    마지막으로 예를 들겠습니다.

    
    import datetime
    from random import choice
    from time import time
    from openpyxl import load_workbook
    from openpyxl.utils import get_column_letter
    
    #   mingc
    addr = "openpyxl.xlsx"
    #  
    wb = load_workbook(addr)
    #  
    ws = wb.create_sheet()
    #  
    ws.append(['TIME', 'TITLE', 'A-Z'])
    
    #  (500 )
    for i in range(500):
     TIME = datetime.datetime.now().strftime("%H:%M:%S")
     TITLE = str(time())
     A_Z = get_column_letter(choice(range(1, 50)))
     ws.append([TIME, TITLE, A_Z])
    
    #  
    row_max = ws.max_row
    #  
    con_max = ws.max_column
    #  
    for j in ws.rows: # we.rows  
     for n in j:
      print(n.value, end="\t") # n.value  
     print()
    #  ,save( ( )  py  ,  xlsx  )
    wb.save(addr)
    이상은pythonopenpyxl모듈의 사용에 대한 상세한 내용입니다. 더 많은pythonopenpyxl모듈에 대한 자료는 저희 다른 관련 글을 주목해 주십시오!

    좋은 웹페이지 즐겨찾기