SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

PythonとDjangoでExcelファイルを作成

WebアプリケーションでExcelファイルを提供する

PythonによるExcelスプレッドシートの作成

 Excelのフォーマットは(言うまでもありませんが)プロプライエタリです。ただし、オープンにしようと最善を尽くしてはいるようです。コンマ区切りのファイルをExcelで開き、Excelのスプレッドシートとして操作することは簡単にできます。また、コンマ区切りのファイルをPythonで作成することもいたって簡単です。PythonとExcelはcsvファイルを共通言語とする、最高に相性の良い組み合わせです。

 Pythonの標準ライブラリには、優れたcsv出力クラスが付属しています。次の短い例で、その使い方を紹介します。

import csv
w = csv.writer(open('output.csv','w'))
for i in range(10):
   w.writerow(range(10))
編集部注
 Windows環境で上記コードを実行した場合、改行コードが複数出力される現象が確認されています。
 この場合は、2行目の記述を以下のようにすれば問題を回避できます。
   w = csv.writer(open('output.csv','w'),lineterminator="\n")

 output.csvの内容は以下のようになります。

0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9

 このファイルをExcelで開くと、区切り文字をたずねるダイアログが表示されます。コンマを選択すればそれで完了です。

 そうは言っても、csvファイルを開く際のこの一手間が、エンドユーザーのお気に召さないこともあります。そのような場合は、Roman Kiseliovが作成した、ExcelのバイナリファイルをPythonで作成するための素晴らしいライブラリを利用しましょう。これはpyExceleratorというライブラリで、Sourceforgeのプロジェクトページから入手可能です。このライブラリはWindowsやExcelを必要としないので、もっと簡単に実行できます。

 前回のcsvの例と同じく、10行×10列の表をpyExceleratorで作成してみましょう。

from pyExcelerator import *
wb = Workbook()
ws0 = wb.add_sheet('0')

for x in range(10):
   for y in range(10):
      # writing to a specific x,y
      ws0.write(x,y,"this is cell %s, %s" % (x,y))

wb.save('output.xls')

 先ほどとスクリプトは似ていますが、いくつか重要な違いがあります。pyExceleratorではWorkbookオブジェクトを明示的に作成し、そこにWorksheetオブジェクトを追加する必要があります。Worksheetにデータを書き込むときは、書き込み先の位置をx,yで指定します。この方法は柔軟性に優れていますが、書き込む際に表を頭に思い浮かべることが必要になります。

 pyExceleratorの方が少し手間がかかりますが、機能という点でははるかに上です。簡単な表データの作成に加え、セルの書式設定や、Excelの式の挿入など、Excelでよく使われる機能はひととおり網羅しています。csv出力クラスでは、簡単な表を作成することしかできません。

次のページ
DjangoからのExcelファイルのダウンロード

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Chris McAvoy(Chris McAvoy)

PSC Group LLC(イリノイ州シカゴ)の開発者。PythonおよびRubyのWebアプリケーションが専門。ブログはhttp://weblog.lonelylion.com

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2423 2008/04/30 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー