Created
October 4, 2011 01:29
-
-
Save seraphy/1260708 to your computer and use it in GitHub Desktop.
pyExcelerator test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
import pyExcelerator | |
# スタイルのキャッシュ | |
styles = {}; | |
# パターン番号からスタイルを生成しキャッシュする. | |
# 同じスタイルとなる場合は生成済みのものを使用する. | |
# (Excel97-2003形式で使えるスタイル数は4000個までのため | |
# 同じスタイルの場合は新しいスタイルを作らないことで節約する.) | |
# http://office.microsoft.com/ja-jp/excel-help/HA010077823.aspx | |
def findOrCreateStyle(cnt): | |
# パターン番号から、カラーと罫線の組み合わせキーを作成する. | |
# (見た目が段違いになるように端数がでるようにしておく.) | |
color = cnt % 9 | |
border = cnt % 3 | |
key = (color, border) | |
# キーに対するスタイルが未作成の場合のみスタイルを作成する. | |
if key not in styles: | |
style = pyExcelerator.XFStyle() | |
style.num_format_str = "@" # 文字列フォーマット | |
# セルの水平・垂直揃えを中央にする | |
alignment = pyExcelerator.Formatting.Alignment() | |
alignment.horz = pyExcelerator.Formatting.Alignment.HORZ_CENTER | |
alignment.vert = pyExcelerator.Formatting.Alignment.VERT_CENTER | |
style.alignment = alignment | |
# 罫線をつける | |
if border in (1, 2): | |
borders = pyExcelerator.Formatting.Borders() | |
if border == 1: | |
borders.bottom = pyExcelerator.Formatting.Borders.MEDIUM | |
if border == 2: | |
borders.left = pyExcelerator.Formatting.Borders.THIN | |
style.borders = borders | |
font = pyExcelerator.Formatting.Font() | |
# 定義色: 0黒 1白 2赤 3緑 4青 5黄 6マゼンダ 7シアン | |
# 詳細はBIFFRecords.py 参照 | |
font.colour_index = color % 8 | |
font.bold = True # 太字 | |
font.height = 16 * 20 # 16pt (1/20pt単位で指定する) | |
style.font = font | |
# スタイルの保存 | |
styles[key] = style | |
# 作成済みスタイルを返す. | |
return styles[key] | |
def main(): | |
# 新しいブックをメモリ上に作成する | |
workbook = pyExcelerator.Workbook() | |
cnt = 0 | |
# 新しいシートを作成する。 | |
for sheetNo in range(0, 10): | |
# UNICODEでシートタイトル指定 | |
worksheet = workbook.add_sheet(u"シート%d" % sheetNo) | |
# 行 x 列 でセルを埋める | |
for row in range(0, 10): # 1行目は0 | |
for col in range(0, 20): # A列は0 | |
# スタイルを設定 | |
style = findOrCreateStyle(cnt) | |
cnt += 1 | |
# セルに書き込み | |
worksheet.write(row, col, | |
label = u"%d表%d行%d列" % (sheetNo, row, col), | |
style = style) | |
# 列幅を設定する | |
for col in range(0, 20): | |
# 15文字幅 (デフォルトのフォントで文字「0」の1/256を単位とする) | |
worksheet.col(col).width = 256 * 15 | |
# ブックをファイルに保存する。(暗黙で上書き保存) | |
workbook.save(u"テスト1.xls") | |
# 実行 | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment