
OpenPyXLでセルの書式設定を変更
OpenPyXLはPythonからExcelを操作するパッケージですが、今回はOpenPyXLでセルの書式設定を変更する方法を紹介します。 例えばExcelで「01」という値をセルに入力すると、デフォルトのセルの書式設定では数値として認識され「1」となってしまいます。 これをそのまま「01」と入力したければ、セルの書式設定を文字列にしておく必要があります。 このほか数値の小数点以下の桁数を指定したり、パーセンテージの書式に変更したい場合もあるでしょう。 このようにデフォルトの書式設定以外を使いたいければ明示的にセルに書式設定が必要です。これはPythonのOpenPyXLを使った場合も同じです。 セルの書式を文字列に設定する OpenPyXLからセルに書式設定するのは簡単です。次のようにOpenPyXLのCellオブジェクトのnumber_formatプロパティに表示形式を表す文字列を代入するだけです。 <Cellオブジェクト>.number_format = <表示形式文字列> セルの書式を文字列に設定する例でこれをみてみましょう。次のコードを実行すると、A1セルの書式が文字列に設定されます。 import openpyxl wb =openpyxl.Workbook() ws = wb.active cell = ws["A1"] cell.number_format = openpyxl.styles.numbers.FORMAT_TEXT wb.save('セルの書式を文字列に設定.xlsx') コードを実行した後にA1セルの書式設定を確認すると、文字列に設定されていることがわかります。 この例でセルに書式設定を変更しているコードは次の行です。 cell.number_format = openpyxl.styles.numbers.FORMAT_TEXT このようにCellオブジェクトのnumber_formatプロパティに表示形式を表す文字列を代入するだけです。 ここではopenpyxl.styles.numbersモジュールにあらかじめ定義された定数FORMAT_TEXTを代入しています。この定数の値は単なる「'@'」という文字列です。 代入できる値はあらかじめ定義された定数に限られません。number_formatプロパティにはExcelの表示形式を表す文字列を自由に設定できます。 表示形式を表す文字列とは、Excelの「表示形式」の「ユーザー定義」などに設定する文字列のことです。以下の図を参照してください。 例えば次のようにnumber_formatプロパティに設定すると、数値を小数点1桁まで表示します。 import openpyxl wb =openpyxl.Workbook() ws = wb.active cell = ws["A1"] cell.number_format = "0.0" cell.value = 123.456 wb.save('セルの書式を数値に設定.xlsx') 上記のコードを実行するとA1セルは「123.5」と表示されます。 Excelの書式記号の意味 Cellオブジェクトのnumber_formatプロパティに設定するときの、Excelの書式記号が使えることは前述しましたが、その書式記号のいくつかをここでて簡単に説明します。 […]