エクセルファイルのデータが表としてまとまっている場合は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_column、ws.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日目', '天気']
コメント