OfficeをPythonで(8)Excelのヘッダーやフッターを設定できるようにしてみた

どもです。

気が付けば、今年(2023年)になってから、初の投稿になります…。

これまで、「OfficeをPythonで」のシリーズの中で、Excelの「ページ設定」ダイアログ内の設定をPythonから操作する内容を紹介してきました。

詳しくは、以下の投稿を確認してください。

今回は、これらのエントリで紹介した内容を踏まえて、エクセルのヘッダー/フッターに、別ファイルで指定された内容を設定するPythonコードを作成してみたので、それを紹介します。

0. 公開しています。

今回のエントリで紹介するコードは、GitHubで公開しています。適宜、参照してみてください。

1.何ができる?

作成したコードは、

別ファイル(csv形式)で設定された内容を、ヘッダー/フッターに設定

ができます。

この設定も、エクセルファイル単位ではなく、ファイル内のシート単位で設定できます。

また、

ヘッダー/フッターの設定内容を、別ファイル(csv形式)に出力する

ことができます。

即ち、任意のエクセルファイルのシート情報、ヘッダー/フッターの情報を過不足なく取得できます。これにより、設定が漏れた、シート名が間違っていて、設定ができなかった、などの問題を回避できます。

2.やってみよう

というわけで、実際に動かしてみます。

2.1.ヘッダーの内容を取得

まず、任意のエクセルのヘッダーの内容を取得します。ヘッダーの取得には、GitHubで公開しているPythonコードのうち、「ReadExcelFileHeader.py」を使用します。これを使用することで、前述の通り、設定内容をcsv形式で取得できます。試しに、「HeaderSample_001.xlsx」ファイルのヘッダーの内容を、「HeaderSample_001.csv」に出力してみます。実行するコードは以下!

python ReadExcelFileHeader.py HeaderSample_001.csv HeaderSample_001.xlsx

出力ファイルへのパスを第1引数に、入力ファイルへのパスを第2引数にそれぞれ指定します。

実行後に出力されたcsvファイルの内容を確認すると、以下のようになっています。



各行の左から「シート名」、「左側のヘッダー」「中央のヘッダー」、「右側のヘッダー」の順番で並んでいます。

2.2.csvファイルの内容を編集

取得したcsvファイルの内容を編集して、ヘッダーの設定を変更する準備をします。csvファイルの編集は、任意のエディタを使用してください。今回は、csvファイルを以下のように設定します。



“sample_sheet1″の設定を「sample_sheet1_xxx」に変更、"sample_sheet2″の設定は全て削除、sample_sheet3は、中央のヘッダーを削除しています。編集したらファイルを保存して、設定は完了です。

2.3.ヘッダーの内容を変更

csvファイルで設定した内容を、任意のエクセルのヘッダーに設定します。ヘッダーの設定は、GitHubで公開しているPythonコードのうち、「WriteExcelFileHeader.py」を使用します。今回は、取得元である「Headersample_001.xlsx」に、変更した内容を反映してみます。実行するコードは以下!

python WriteExcelFileHeader.py HeaderSample_001.csv HeaderSample_001.xlsx

実行後の「HeaderSample_001.xlsx」の各シートのヘッダーの設定を確認してみます。「sample_sheet1」、「sample_sheet2」、「sample_sheet3」の順番で確認します。







確認結果から分かるように、csvファイルで設定した内容が、そのまま対応するシートのヘッダーに設定されていることが分かります。特にsample_sheet2では、ヘッダーの内容が全て削除されていることが分かります。

2.4.フッターを編集してみよう

次に、フッターの編集方法です。と言っても、書くことは殆どありません。内容の取得、変更を行う際に使用するPythonコードを、それぞれ「ReadExcelFileFooter.py」、「WriteExcelFileFooter.py」に変更すればOKです。具体的には、以下のようにコードを実行します。

python ReadExcelFileFooter.py HeaderSample_001.csv HeaderSample_001.xlsx	#フッターの読出し
python WriteExcelFileFooter.py HeaderSample_001.csv HeaderSample_001.xlsx	#フッターの書込み

3.まとめ

今回は、PythonでExcelのヘッダー/フッターを取得、設定する方法について書きました。過去のエントリで紹介した方法では、前1シートのヘッダー/フッターに対して同じ内容のみ設定可能でした。しかし今回紹介した方法は、シートごとに個別にヘッダー/フッターを指定可能です。

取得、編集、設定、という手順が必要になるため、シート数が少ない場合は手動で設定した方が時間がかからないかもしれません。今回紹介した方法は、シート数、設定する内容が多くなった場合に、より効果的だと思います。

この記事の内容が、誰かの助けになれば幸いです。

ではっ!