PythonのライブラリであるPandasであれば柔軟にExcelファイルの読み込みと書き込みができます。
こちらの記事では、Pandasを利用してExcelファイルの読み込み方法と書き込み方法を紹介します。
1. 読み込み
Excelファイルの読み込みはpd.read_excel
を使用します。
細かい読み込み方法の指定はオプションで指定します。
1.1. 指定のシートのみ読み込み
引数のsheet_name
に、読み込みたいシート名を指定します。
この際に、0から始める数字かシート名を記述します。
# インデック番号で指定 df_sheet = pd.read_excel('sample.xlsx', sheet_name=0) print(df_sheet)
# Output A B C 0 1 5 9 1 2 6 10 2 3 7 11 3 4 8 12
# シート名で指定 df_sheet = pd.read_excel('sample.xlsx', sheet_name='Sheet1') print(df_sheet)
# Output # Output A B C 0 1 5 9 1 2 6 10 2 3 7 11 3 4 8 12
1.2. 指定した複数のシートの読み込み
複数のシートを読み込むときは、リスト形式で読み込むシート名を指定します。
リストの中に指定する内容は、0から始まる番号またはシート名を記述します。
戻り値には、読み込み時に指定したリスト内容の名称がキーで、値がDataFrameのdict
が返されます。
df_sheet = pd.read_excel('sample.xlsx', sheet_name=[0, 'Sheet2']) print(df_sheet)
# Output {0: A B C 0 1 5 9 1 2 6 10 2 3 7 11 3 4 8 12, 'Sheet2': A B C 0 11 15 19 1 12 16 20 2 13 17 21 3 14 18 22}
1.3. すべてのシートの読み込み
すべてのシートを読み込む時は、sheet_nameにNone
を指定します。
戻り値には、シート名がキーで値がDataFrameのdictが返されます。
df_sheet = pd.read_excel('sample.xlsx', sheet_name=None) print(df_sheet)
# Output {'Sheet1': A B C 0 1 5 9 1 2 6 10 2 3 7 11 3 4 8 12, 'Sheet2': A B C 0 11 15 19 1 12 16 20 2 13 17 21 3 14 18 22}
2. 書き込み
ExcelファイルへのDataFrameの書き込みはpd.DataFrame.to_excel
で行います。
注意点として、pd.DataFrame.to_excel
だと新規作成または上書き保存ということです。
もし既存のExcelファイルにシートを追記するのであれば、pd.ExcelWriter
を使用します。
2.1. DataFrameの書き込み (新規作成 or 上書き)
DataFrameのExcelファイルの書き込みはpd.DataFrame.to_excel
を使用します。
このときは、新規作成または上書き保存となります。
df = pd.DataFrame({ 'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8], 'C': [9, 10, 11, 12] }) df.to_excel('./sample_write.xlsx', sheet_name='NewSheet')
2.2. 複数のDataFrameの書き込み (新規作成 or 上書き)
複数のDataFrameを一度に書き込む場合は、pd.ExcelWriter
を使用します。
この設定は新規作成または上書き保存となります。
df_1 = pd.DataFrame({ 'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8], 'C': [9, 10, 11, 12] }) df_2 = pd.DataFrame({ 'A': [11, 12, 13, 14], 'B': [15, 16, 17, 18], 'C': [19, 20, 21, 22] }) with pd.ExcelWriter('./sample_write.xlsx') as writer: df_1.to_excel(writer, sheet_name='NewSheet1') df_2.to_excel(writer, sheet_name='NewSheet2')
2.3. 既存のExcelファイルに書き込み (追記)
既存のExcelファイルに追記する場合は、pd.ExcelWriter
を使用します。
また、mode='a'
を指定する必要があります。
# Excelファイルを作成しておく df_1 = pd.DataFrame({ 'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8], 'C': [9, 10, 11, 12] }) df_1.to_excel('./sample_write.xlsx', sheet_name='NewSheet1') # DataFrameを既存のExcelファイルに追記する df_2 = pd.DataFrame({ 'A': [11, 12, 13, 14], 'B': [15, 16, 17, 18], 'C': [19, 20, 21, 22] }) with pd.ExcelWriter('./sample_write.xlsx', mode='a') as writer: df_2.to_excel(writer, sheet_name='NewSheet2')