PythonのOpenPyXLライブラリを使用してExcelのデータを操作する際、空白のセルの取り扱いは重要な課題となります。特に、空白のセルを読み込むと、その値はNone
となります。
空白セルの取り扱い
OpenPyXLでは、空白のセル(値、フォント、境界線などがないセル)は保存されません。ワークシートからセルを取得すると、新しい空のセルが動的に作成され、その値はNone
になります。
from openpyxl import load_workbook
# Excelファイルのロード
excel_path='C:/sample/sample.xlsm'
workbook = load_workbook(filename=excel_path, read_only=True)
# シートのロード
sheet = workbook['フレンズたち']
# セルの値取得
cell_3_6_value = sheet.cell(column=3, row=6).value
cell_4_6_value = sheet.cell(column=4, row=6).value
# 取得した値の表示
print('(3, 6)', cell_3_6_value) # 'サーバル'
print('(4, 6)', cell_4_6_value) # None
# ロードしたExcelファイルを閉じる
workbook.close()
上記のコードでは、cell_3_6_value
は'サーバル'
という値を持つ一方で、cell_4_6_value
はNone
となります。これは、C6とD6が結合セルであり、値はC6側にのみ入っているためです。
空白セル(None)の置換
空白セルの値がNone
となる問題を解決する一つの方法は、None
を別の値に置換することです。以下のコードは、セルの値がNone
の場合に空文字列に置換する例です。
message = ''
for row in ws["A1:C4"]:
for col in row:
if col.value is None:
message += '\n'
else:
message += f'{col.value}\n'
このコードでは、None
の値を持つセルは改行文字に置換され、その他のセルはその値がそのまま使用されます。
以上がPythonとOpenPyXLを使用してExcelの空白セル(None)の取り扱いについての基本的な情報です。この情報がPythonとOpenPyXLを使用してExcelのデータを操作する際の参考になれば幸いです。