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とか

Pythonのeasy_installを試す

■ 環境
WindowsXP + python2.7

最近Pythonをがんばろうかなぁと思いつつ全然できていないのですが、ちょっといじくる機会があったのでメモ。
PerlにおけるCPAN、PHPにおけるPEARのように、pythonにはeasy_installなるものがあるらしい。

下記URLからsetuptoolsのexeをダウンロードしてインストールするとOK
http://pypi.python.org/pypi/setuptools

ファイル名中の「py2.x」がPythonのバージョンと合うものをダウンロードする模様。
setuptools-X.XcXX.win32-py2.X.exe

コマンドラインから必要なパッケージをインストールするには以下のようにする。
C:\> easy_install [パッケージ名]


Linux版だとeasy_installのセットアップは下記スクリプトを叩けばOKということだがWin版の方法がすぐ見つからなかったのでメモです。
http://peak.telecommunity.com/dist/ez_setup.py


タグ:Python
posted by まきすけ at 17:08 | Comment(0) | TrackBack(0) | Linuxとか