Skip to content

Instantly share code, notes, and snippets.

@seraphy
Created October 4, 2011 01:29
Show Gist options
  • Save seraphy/1260708 to your computer and use it in GitHub Desktop.
Save seraphy/1260708 to your computer and use it in GitHub Desktop.
pyExcelerator test
#!/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