Opennyxlの基本的な使い方


PythonにはExcelを扱うためのパッケージがたくさんありますが、うちの会社ではopenpyxlを使用しています.
リファレンス

ブックの作成

  • ワークブック=1つのEXCELファイル(.xlsx)、合計
  • ワークブックには
  • 個のワークシート(表1、表2、、、)

    新しいワークブックの作成


    使用するにはimport openpyxlが必要です.
    import openpyxl
    
    wb = openpyxl.Workbook()	# 워크북 생성시 자동으로 워크시트 1개 생성
    ws = wb.active 			# 워크시트 활성화
    
    # 우리회사에서는 openpyxl 생략하고 아래와 같이 작성후 사용
    ws = Workbook().active
    # or
    wb = Workbook()
    ws = wb.active

    既存のワークブックを読み込む


    active

    # 기존 엑셀 파일 load_workbook()으로 불러옴(openpyxl 생략)
    wb = load_workbook(filename='filename.xlsx')
    # 활성화 된 워크 시트
    ws = wb.active		# <Worksheet "Sheet1">
    # 필요한 시트
    ws = wb['시트명']		
    

    sheet_name


    ファイル内のすべての図面名のリストは、get_sheet_names()によって取得することができる.
    wb = load_workbook(filename='filename.xlsx')
    sheet = wb.get_sheet_names('Sheet4') 	# # <Worksheet "Sheet4">
    
    

    シートの作成

    wb.create_sheet('새 시트명', 0) # 0 ->0번째(맨 왼쪽)에 시트 위치
    

    Excelデータの使用


    セル自体と読み込み値を区別して確認する必要があります.

    ユニットアクセスほう


    方法は二つある

    ws[coordinate('B5')]

    print(f'ws["B5"] : {ws["B5"]}') # B5 셀
    print(f'ws["B5"].value : {ws["B5"].value}') # B5 셀의 값
    -------------------------------------------------------
    # ws["B5"] : <Cell Sheet1.B5>
    # ws["B5"].value : 202009

    ws.cell(row=@ , column=@ )

    print(f'ws.cell(row=5, column=2) : {ws.cell(row=5, column=2)}')  # 세로로 5번째, 가로로 2번째 셀
    ----------------------------------------------------------------
    # ws.cell(row=5, column=2) :<Cell Sheet1.B5>
    # ws.cell(row=5, column=2).value : 202009
    
    ¥1列目は整数1ではなく0

    複数ユニットアクセス

    print(f'ws["B"] : {ws["B"]}') 
    ------------------------------------------------------
    ws["B"] : (<Cell Sheet1.B1>, <Cell Sheet1.B2>, <Cell Sheet1.B3>,
    ......<Cell Sheet1.B29>, <Cell Sheet1.B30>)
    複数の細胞をスリーブの形で縛って戻します.
    print(ws['B5':'C7'])
    ------------------------------------------------------
    ((<Cell Sheet1.B5>, <Cell Sheet1.C5>), (<Cell Sheet1.B6>, <Cell Sheet1.C6>), (<Cell Sheet1.B7>, <Cell Sheet1.C7>))
    
    #-----------------------------------------------------
    
    for row in ws['B5':'C7']:
    	print(row)
    ------------------------------------------------------
    (<Cell Sheet1.B5>, <Cell Sheet1.C5>)
    (<Cell Sheet1.B6>, <Cell Sheet1.C6>)
    (<Cell Sheet1.B7>, <Cell Sheet1.C7>)
    
    #------------------------------------------------------
    
    for row in ws['B5':'C7']:
        for cell in row:
        	print(cell)  	# 여기서 cell.value 찍으면 값 출력
    ------------------------------------------------------
    <Cell Sheet1.B5>
    <Cell Sheet1.C5>
    <Cell Sheet1.B6>
    <Cell Sheet1.C6>
    <Cell Sheet1.B7>
    <Cell Sheet1.C7>
    ws['B5':'C7']は、B 5からC 7までの全ての細胞を含む.複数の細胞をws['B5':'C7']でメタグループとして返し、for文を用いて各細胞にアクセスすることができる.
    tupleは行->列の順に戻る