excel-pythonライブラリではExcelファイルの書き込みにxlwtパッケージを用います。
※ここではすべての例でxls形式での保存を行っています。拡張子をxlsxにして保存することもできますが、そのファイルはエラーが発生して開くことができません。xlsx形式での出力はOpenPyXL、やXlsxWriterを利用しましょう。
xlwtのインストール
下記コマンドを入力しxlwtをインストールしてください。
※これはpipがインストールされていることを前提としています。インストールしていない場合はpipの使い方とインストールを参照してください。
pip install xlwt
ブックの保存とシートの追加
まずはブックを作成・保存をしてみましょう。ブック内に最低1つはシートが必要となりますので注意してください。
import xlwt book = xlwt.Workbook() book.add_sheet('NewSheet_1') book.save('sample.xls')
xlwtモジュールをインポート後、Workbookクラスを生成します。WorkbookへNewSheet_1という名前のシートを追加し、saveでブックを保存します。
セル値の設定
次はセル値の設定です。シートから直接設定する方法と、行を取得してから設定する方法があります。
import xlwt book = xlwt.Workbook() newSheet_1 = book.add_sheet('NewSheet_1') newSheet_1.write(0, 0, 'A1') newSheet_1_row_1 = newSheet_1.row(1) newSheet_1_row_1.write(0, 'A2') newSheet_1_row_1.write(1, 'B2') newSheet_1_row_1.write(2, 'C2') newSheet_1_row_1.write(3, 'D2') newSheet_1_row_1.write(4, 'E2') book.save('sample.xls')
6行目のwriteで値を設定しています。引数は(行, 列, 値)の順番です。 8行目から13行目のような設定方法は、1つの行に沢山の値を設定するケースで便利でしょう。
列幅設定
列幅の設定も可能です。先程のソースコードに少し追加してみましょう。
import xlwt book = xlwt.Workbook() newSheet_1 = book.add_sheet('NewSheet_1') newSheet_1.write(0, 0, 'A1') newSheet_1_row_1 = newSheet_1.row(1) newSheet_1_row_1.write(0, 'A2') newSheet_1_row_1.write(1, 'B2') newSheet_1_row_1.write(2, 'C2') newSheet_1_row_1.write(3, 'D2') newSheet_1_row_1.write(4, 'E2') newSheet_1_column_1 = newSheet_1.col(2) newSheet_1_column_1.width = 5000 book.save('sample.xls')
15行目で対象の列を取得し、16行目で幅を設定しています。保存されたファイルを開いてみると「C」の列幅が大きくなっている事を確認出来ると思います。
フォント設定
セルのフォント設定は下記の通りです。writeの引数にXFStyleを設定します。
import xlwt book = xlwt.Workbook() newSheet_1 = book.add_sheet('NewSheet_1') c_font_1 = xlwt.Font() c_font_1.bold = True c_style_1 = xlwt.XFStyle() c_style_1.font = c_font_1 c_font_2 = xlwt.Font() c_font_2.name = 'Arial' c_style_2 = xlwt.XFStyle() c_style_2.font = c_font_2 newSheet_1.write(0, 0, 'Font-Bold', c_style_1) newSheet_1.write(1, 0, 'Font-Arial', c_style_2) book.save('sample.xls')
セル「A1」を太字設定、セル「A2」をArialフォントへ設定しています。
ボーダー設定
罫線を引く事も可能です。Bordersクラスを利用しましょう。
import xlwt book = xlwt.Workbook() newSheet_1 = book.add_sheet('NewSheet_1') c_border = xlwt.Borders() c_border.top = xlwt.Borders.THICK c_border.bottom = xlwt.Borders.THICK c_border.left = xlwt.Borders.THICK c_border.right = xlwt.Borders.THICK c_style = xlwt.XFStyle() c_style.borders = c_border newSheet_1.write(1, 1, 'Border' ,c_style) book.save('sample.xls')
セル「B2」に罫線を引いています。
カラー設定
それぞれのセルの配色を変更します。Patternクラスで設定可能です。
import xlwt book = xlwt.Workbook() newSheet_1 = book.add_sheet('NewSheet_1') pattern_1 = xlwt.Pattern() pattern_1.pattern = xlwt.Pattern.SOLID_PATTERN pattern_1.pattern_fore_colour = 0x0A c_style_1 = xlwt.XFStyle() c_style_1.pattern = pattern_1 pattern_2 = xlwt.Pattern() pattern_2.pattern = xlwt.Pattern.SOLID_PATTERN pattern_2.pattern_fore_colour = 0x11 c_style_2 = xlwt.XFStyle() c_style_2.pattern = pattern_2 pattern_3 = xlwt.Pattern() pattern_3.pattern = xlwt.Pattern.SOLID_PATTERN pattern_3.pattern_fore_colour = 0x0C c_style_3 = xlwt.XFStyle() c_style_3.pattern = pattern_3 newSheet_1.write(1, 1, 'Color-red', c_style_1) newSheet_1.write(2, 1, 'Color-green', c_style_2) newSheet_1.write(3, 1, 'Color-blue', c_style_3) book.save('sample.xls')
セル「B2」を赤、「B3」を緑、「B4」を青へ配色設定しています。
文字寄せ設定
Alignmentクラスを利用し、セル内文字列の寄せ方を指定します。
import xlwt book = xlwt.Workbook() newSheet_1 = book.add_sheet('NewSheet_1') alignment_1 = xlwt.Alignment() alignment_1.horz = 1 c_style_1 = xlwt.XFStyle() c_style_1.alignment = alignment_1 alignment_2 = xlwt.Alignment() alignment_2.horz = 2 c_style_2 = xlwt.XFStyle() c_style_2.alignment = alignment_2 alignment_3 = xlwt.Alignment() alignment_3.horz = 3 c_style_3 = xlwt.XFStyle() c_style_3.alignment = alignment_3 newSheet_1.write(1, 1, 'Align-left', c_style_1) newSheet_1.write(2, 1, 'Align-center', c_style_2) newSheet_1.write(3, 1, 'Align-right', c_style_3) book.save('sample.xls')
セル「B2」を左寄せ(デフォルト)、「B3」を中央寄せ、「B4」を右寄せに設定しています。
Excel関数の埋め込み
Excel関数の埋め込みも可能です。代表的なExcel関数であるSUM関数を埋め込んでみましょう。
import xlwt book = xlwt.Workbook() newSheet_1 = book.add_sheet('NewSheet_1') newSheet_1.write(1, 1, '1') newSheet_1.write(2, 1, '10') newSheet_1.write(3, 1, '100') newSheet_1.write(4, 1, xlwt.Formula('sum(B2,B3,B4)')) book.save('sample.xls')
セル「B2」「B3」「B4」の合計値が「B5」へ表示されます。