2012年10月01日

Python de Excel

■ 環境
Windows XP + Python2.7 + xlwt

■ 参考リンク
Python Excel(xlrt,xlwt,xlutilsのサイト)
Enajet Python: EXCELファイル読み書き
Python-izm Excel書き込み (xlwt)

詳細はまた後で書きたいと思いますが、PythonでExcelを生成するためのパッケージxlwtを使った際の困ったこと。

● 印刷時にヘッダーとフッターを非表示にできない
worksheetに print_headers というプロパティーがあるのだが、これはいわゆるヘッダー・フッターのことではなくてシートの行列番号(A,B,Cとか)を印字するかどうかのオプションでした。

ヘッダー・フッターは空白をセットするしかないみたい?
from xlwt import *
wb = Workbook()
ws = wb.add_sheet("sample_sheet")
ws.header_str = u"ヘッダー"
ws.footer_str = u"フッター"
wb.save("sample_book.xls")


● 行の高さの指定がうまくいかない
ワークシートの行の高さを指定してもさっぱり高さが変わらないので何でかなーと思っていたら、height_mismatch に 1 をセットしないとダメらしい。
デフォルトだとheight_mismatchが0で、フォントサイズにあわせて自動で行の高さが変わる模様。
ws0.row(0).height_mismatch = 1
ws0.row(0).height = 300


● 後からセルのスタイルを変更できない?
一度セルへ値をセットした後にセルの書式(網掛けとか)を変更しようと思ったがそれらしき設定が見当たらず。

● 複数のセルをまとめて変更できない?
複数のセルをまとめて書式変更したりしたいとき、それらしきコマンドが無い。

● セルのスタイルを条件ごとに変更する
例えば日曜日のセルはピンクにしたい、とかいうときはif文を使ってスタイルの切替をするわけだが、スタイルを変数として格納する際には、格納用の変数を先に宣言しておかないとダメだった。
styleX = XFStyle() # スタイル格納用変数を宣言
# スタイルを設定
style1 = easyxf(
'font: name Arial;'
)
styleSun = easyxf(
'font: name Arial;'
'pattern:pattern solid, fore_colour rose;'
)
# 変数 youbi が"日"だった場合はピンク網掛けのスタイルを使う
if youbi == u"日":
styleX = styleSun
else:
styleX = style1
# 実際にセルへ書き込む
ws0.write(0, 0, youbi, style)
※上記ソースはあくまでサンプルなのでそのままでは動きません



タグ:Python EXCEL

posted by まきすけ at 17:40 | Comment(0) | TrackBack(0) | Linuxとか
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/295012857
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック