【PYTHONメモ】エクセルファイル 特定列の読み込み

PYTHON

エクセルファイルのデータが表としてまとまっている場合はpandasでデータフレームとして正常に読み込まれますが、メモ書きのようなデータの並びの場合、pandasで正確に読み込めません。なので、直にシートの列を読み込んでいくという方法を取らないといけません。今回は特定の列の読み込みを行う方法の備忘録です。

使用するシート

Sheet1のデータの並びです。A列のみを読み取ります。

サンプルコード

from openpyxl import load_workbook

filename = "C:/Labo/sheetfile4.xlsx"

wb = load_workbook(filename)

ws = wb.worksheets[0]
print(ws.max_column)
print(ws.max_row)

clms=[]
for cell in ws['A']:
    clms.append(cell.value)

print(clms)

シートを指定する場合、シート名の場合は wb[‘Sheet1’] 、シートの並びの順番であればwb[0] という記述になります。

ws.max_columnws.max_row はそれぞれシート内の最大列数最大行数になります。この場合

2
16

clms=[] は列を挿入するリストになります。appendで追加していきます。

出力結果は以下になります。

[datetime.datetime(2023, 1, 1, 0, 0), 'あけましておめでとう', '天気', None, None, None, None, datetime.datetime(2023, 1, 2, 0, 0), '正月明け', '天気', None, None, None, datetime.datetime(2023, 1, 3, 0, 0), '3日目', '天気']

日付のセルの時間の型を文字列で表記する場合

日付のセルが datetime.datetime(2023, 1, 1, 0, 0) となっています。この場合、文字列として読み込む場合は str を使用します。

for cell in ws['A']:
    clms.append(str(cell.value))

出力結果は以下のようになります。

['2023-01-01 00:00:00', 'あけましておめでとう', '天気', 'None', 'None', 'None', 'None', '2023-01-02 00:00:00', '正月明け', '天気', 'None', 'None', 'None', '2023-01-03 00:00:00', 
'3日目', '天気']

 

PYTHON
スポンサーリンク
シェアする
フォローする

コメント

タイトルとURLをコピーしました