« DIY:冷蔵庫と流し台の隙間用に台を作成 | トップページ | java: JListのアイテムを矢印キーで巡回する方法 »

2011年3月 5日 (土)

Python: EXCELファイル読み書き

PythonでEXCELファイルを操作出来るようなので 試してみました。
日本語も問題なく処理できました。

EXCEL操作に使ったのはxlrd, xlwtというライブラリ。
xlrdはEXCELファイルの読み込み関連のライブラリで、
xlwtは書き込み関連のライブラリです。

http://www.python-excel.org/からダウンロードできます。

■実行環境
 ・OS    :Windows 7
 ・開発環境:Python Scripter Version 2.3.4.0
 ・Python  :Python 2.7.1  [MSC v.1500 32 bit (Intel)] on win32

 ・xlrd    :Ver 0.7.1 (Uploaded 2011-01-01)
 ・xlwt    :Ver 0.7.2 (Uploaded 2009-06-01)
   --> インストール方法

以下にサンプルを書きます。

■EXCELファイル読み込み
#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
事前に何らかのデータが入った、テスト.xlsというファイルを
C:\tempというフォルダの中に入れてから本プログラムを実行してください。
"""

from xlrd import open_workbook

wb = open_workbook(filename=u'C:\\temp\\テスト.xls')
for s in wb.sheets():
    print 'Sheet:',s.name
    for row in range(s.nrows):
        print 'row:',row,
        for col in range(s.ncols):
            print s.cell(row,col).value,
        print

■EXCELファイル書き込み
#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
実行前にC:\tempというフォルダを作成しておいて下さい
"""

import xlwt
import os
import subprocess


wb = xlwt.Workbook()
s = wb.add_sheet('sheet1') # シート追加
for row in range(10):
    for col in range(5):
        s.write(row, col, str(row)+' x '+str(col))
DistFile = 'C:\\temp\\hoge.xls'
if os.path.isfile(DistFile): os.remove(DistFile)
wb.save(DistFile)
subprocess.call(['cmd.exe', '/C', 'start', DistFile]) # EXCEL起動

■EXCELファイルのコピー(セルの値と列幅をコピー)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
事前に何らかのデータが入った、テスト.xlsというファイルを C:\tempというフォルダの中に入れてから本プログラムを実行してください。 """
imrom xlrd import open_workbook, XL_CELL_BLANK, XL_CELL_EMPTY
import xlwt
import os
import subprocess

SouceFile = u'C:\\temp\\テスト.xls'
#formatting_info=Trueとすることで列幅が得られる
wb1 = open_workbook(filename=SouceFile, formatting_info=True)
wb2 = xlwt.Workbook() for s1 in wb1.sheets():     print 'Sheet:',s1.name     s2 = wb2.add_sheet(s1.name) # シート追加     for col in range(s1.ncols):         s2.col(col).width = s1.computed_column_width(col) # 列幅を設定         for row in range(s1.nrows):             type = s1.cell_type(row, col)             value = s1.cell(row,col).value             if XL_CELL_BLANK != type and XL_CELL_EMPTY != type:                 s2.write(row, col, value) #セルに値設定 DistFile = 'C:\\temp\\hoge.xls' if os.path.isfile(DistFile): os.remove(DistFile) wb2.save(DistFile) subprocess.call(['cmd.exe', '/C', 'start', DistFile]) # EXCEL起動

 


 < Python 目次

« DIY:冷蔵庫と流し台の隙間用に台を作成 | トップページ | java: JListのアイテムを矢印キーで巡回する方法 »

パソコン・インターネット」カテゴリの記事