今回は、「openpyxl」を使った、Excelのセルの操作についてフォーカスを当てていきたいと思います。
具体的には、「セルに値を設定」、「セルのフォントの変更」、「セルの背景色の設定」、「コメントの追加」の4つです。サンプルソースを使いながら説明していきます。
対象レベル
Pythonの環境設定が整っており、Pythonの基本構文が理解出来ること。
詳しくは「【Python入門】〜初級編〜環境構築・基本構文まとめ」にまとめてあります。興味のある方はご覧ください。
サンプルソースを読むうえで理解しておきたいこと
サンプルソースを読むするうえで読んでおいたほうがいい項目に関して以下のリンクでまとめています。基本的に読み飛ばしてOKです。読んでみてわからなかったら参考にしてみてください。
インストール方法
前回の記事でも書きましたが「openpyxl」はインストールが必要なのでコマンドプロンプトで以下のインストールコマンドを叩いてください。
pip install openpyxl
セルに値を設定する方法
数値や文字列を設定する
それでは、初めにセルに値を入れてみましょう。サンプルソースを用意しました。こちらの処理は1シート目の「A1」に「1」を「B2」に「文字列」を設定する処理になっています。
各ステップごとに見ていきます。
まず初めに2行目で「openpyxl」をインポートします。
import openpyxl
4行目、5行目でシートのオブジェクトを取得します。
これで「sheet」変数に対して操作が出来るようになりました。
wb = openpyxl.Workbook()sheet = wb.worksheets[0]
シートのオブジェクトにセル名を指定することで値を設定できます。
7行目の場合は「A1」に「1」を「B2」に「文字列」を設定しています。
sheet['A1'] = 1sheet['B2'] = "文字列"
10行目、11行目でExcelファイルを保存します。
wb.save('Book1.xlsx')wb.close()
それでは、実際に動かしてみましょう。はじめに対象のブックが存在しないことを確認します。

プログラムを実行します。

「Book.xlsx」が作成されています。

「A1」に「1」、「B2」に「文字列」を設定されていますね。

数式を設定する
「openpyxl」は数式もそのまま設定することが出来ます。こちらがサンプルソースになります。
シートのオブジェクト取得方法と保存方法は同じなので省略します。
7行目、8行目では数式を設定します。9行目は「エクセル関数」を設定しています。うまく動いたら「2」+「20」なので「A3」に「22」が設定されているはずです。
sheet['A1'] = "= 1 + 1"sheet['A2'] = "= 10 + 10"sheet['A3'] = "=SUM(A1:A2)"
実行した結果がこちらになります。

「Book2.xlsx」が作成されています。

ファイルの中身はこちらになります。「=SUM(A1:A2)」と式が設定されています。

セルのフォントを変更する
フォントの設定も可能です。下のサンプルソースでは。
「フォント」、「サイズ」、「太文字」、「斜字」、「色」、「下線」を設定しています。
3行目で「Font」をインポートします。これを記述することによって、「openpyxl.styles.Font」といちいち書かないといけないところを「Font」で記述することが出来ます。
from openpyxl.styles import Font
フォントの指定
フォントは「name」で指定します。
sheet['A1'] = "フォント名"sheet['A1'].font = Font(name='Meiryo UI')
サイズの指定
サイズの指定は「size」で指定します。
sheet['A2'] = "サイズ"sheet['A2'].font = Font(size=20)
太字の指定
「bold」を「True」にすることで太字にすることが出来ます。
sheet['A3'] = "太字"sheet['A3'].font = Font(bold=True)
斜字の指定
斜字にしたい場合は「italic」を「True」にすることで指定が可能です。
sheet['A4'] = "斜字"sheet['A4'].font = Font(italic=True)
色の指定
色の指定は「color」です。今回は「赤」になりますほかの色を指定したい場合は色コードで検索してみてください。
スポンサーリンク
sheet['A5'] = "色"sheet['A5'].font = Font(color='FF0000')
下線の指定
下線の指定は1本線は「underline=’single’」、2本線は「underline=’double’」(そもそも、2本線なかあるの知らなかった。。。)を指定します。
sheet['A6'] = "下線(1本)"sheet['A6'].font = Font(underline='single')sheet['A7'] = "下線(2本)"sheet['A7'].font = Font(underline='double')
それでは、実際に動かしてみます。今回はボリュームもあるので実施コマンドとセルの中身だけお見せします。

こんな感じでフォントの設定も簡単にできます。

セルの背景色を設定する
セルの背景も指定可能です。
セルの指定は「PatternFill(patternType=’solid’, fgColor=’色コード’)」で指定できます。よく使うのは「グレー」と個人的に表を作るときにヘッダで使う「薄い青」を指定しています。
sheet['A1'] = "セル1"sheet['A1'].fill = PatternFill(patternType='solid', fgColor='d3d3d3')
こちらのソースも実行してみます。

ちゃんと背景色が設定されました。

セルにコメントを追加する
コメントを設定することも可能です。
コメントはコメントの内容とコメントの作者を設定することが出来ます。
sheet['A1'] = 'コメントだよ~'sheet['A1'].comment = Comment( 'コメントの内容', 'コメント作成者')
こちらも、実行コマンドとExcelの中身だけ載せておきます。

こちらも正しく設定されていますね、下のほうに「コメント作者」が表示されています。

まとめ
・「openpyxl」を使うことでExcelのセルの設定が可能
・シートのオブジェクトに対してセル名を指定することで、値の設定が可能(数式も設定可)。設定方法は「 シートのオブジェクト[‘セル名’] = 値 」
・フォントは「シートのオブジェクト[‘セル名’] .font = Font(フォントの各指定 」で設定可能
・同様に「fill」や「comment」を指定することで背景色やコメントも設定できる