Python入門から応用までの学習サイト


Excel書き込み (xlwt)

パッケージ「xlwt」は下記リンクよりダウンロードしてください。 インストール設定は全てデフォルトで構いません。


http://pypi.python.org/pypi/xlwt



まずはブックを作成・保存をしてみましょう。 ブック内に最低1つはシートが必要となりますので注意してください。

# -*- coding: utf-8 -*- 

import xlwt

book = xlwt.Workbook()
book.add_sheet('NewSheet_1')
book.save('sample.xls')

「xlwt」モジュールをインポート後、「Workbook」クラスを生成します。 「Workbook」へ「NewSheet_1」という名前のシートを追加し、「save」でブックを保存します。


次はセル値の設定です。シートから直接設定する方法と、行を取得してから設定する方法があります。

# -*- coding: utf-8 -*- 

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')

8行目の「write」で値を設定しています。引数は(行, 列, 値)の順番です。 10行目から15行目のような設定方法は、1つの行に沢山の値を設定するケースで便利でしょう。


列幅の設定も可能です。先程のソースコードに少し追加してみましょう。

# -*- coding: utf-8 -*- 

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')

17行目で対象の列を取得し、18行目で幅を設定しています。 保存されたファイルを開いてみると「C」の列幅が大きくなっている事を確認出来ると思います。


セルのフォント設定は下記の通りです。「write」の引数に「XFStyle」を設定します。

# -*- coding: utf-8 -*- 

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」クラスを利用しましょう。

# -*- coding: utf-8 -*- 

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」クラスで設定可能です。

# -*- coding: utf-8 -*- 

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」クラスを利用し、セル内文字列の寄せ方を指定します。

# -*- coding: utf-8 -*- 

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関数である「SUM」関数を埋め込んでみましょう。

# -*- coding: utf-8 -*- 

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」へ表示されます。



Python
スタートブック


入門 Python 3


Effective
Python


退屈なことは
Pythonにやらせよう

 
 
 



確かな力が身につく
Python「超」入門




P  R