【Python】Excelファイルの操作_読み込み

Python

Excelファイルの操作_読み込み


openpyxlを使用したExcelファイルの読み込み

テストデータの内容

行\列 A B C
1 HEAD_A HEAD_B HEAD_C
2 AA BB CC
3 AAA BBB CCC

基本的な読み込み処理

import openpyxl

# Excelファイルを読み込む
workbook = openpyxl.load_workbook('test.xlsx')

# シートを取得する
sheet = workbook['Sheet1']

# セルの値を取得する
cell_value = sheet['A1'].value

# 行を取得する
row = sheet[1]

# 列を取得する
column = sheet['A']

# 範囲を指定してセルを取得する
cells = sheet['A1:C3']

# 全てのセルを取得する
all_cells = sheet.values

# ファイルを閉じる
workbook.close()

行ごと、列ごとの処理

行ごと、列ごとに値を読み込む

import openpyxl

workbook = openpyxl.load_workbook('test.xlsx')
sheet = workbook['Sheet1']
cell_value = sheet['A1'].value
row = sheet[1]
column = sheet['A']

# 1行ずつ読み込んで表示する
for row in sheet.rows:
    print('----------')
    for cell in row:
        print(cell.value)

# 1列ずつ読み込んで表示する
for column in sheet.columns:
    print('----------')
    for cell in column:
        print(cell.value)

workbook.close()

実行結果

----------
HEAD_A
HEAD_B
HEAD_C
----------
AA
BB
CC
----------
AAA
BBB
CCC

----------
HEAD_A
AA
AAA
----------
HEAD_B
BB
BBB
----------
HEAD_C
CC
CCC

特定の列の値を読み込む

import openpyxl

workbook = openpyxl.load_workbook('test.xlsx')
sheet = workbook['Sheet1']

# 列の値を格納するリスト
column_values = []
# 取得したい列の番号
column_number = 1

for row in sheet.iter_rows(values_only=True):
    column_values.append(row[column_number - 1])

# 結果の表示
for value in column_values:
    print(value)

workbook.close()

実行結果

HEAD_A
AA
AAA

ヘッダを読み飛ばす場合

  • enumerate()関数を使用してrow_indexを取得する
import openpyxl

workbook = openpyxl.load_workbook('test.xlsx')
sheet = workbook['Sheet1']

column_values = []
column_number = 1

for row_index, row in enumerate(sheet.iter_rows(values_only=True), start=1):
    if row_index == 1:
        continue
    column_values.append(row[column_number - 1])

# 結果の表示
for value in column_values:
    print(value)

workbook.close()

実行結果

AA
AAA

Python

Posted by junichi