IronPython を使って Excel ファイルの指定セルの値を取得

IronPython を使って、既存 Excel ファイルの指定セルの値を取得するサンプルを作成する。

事前準備

Microsoft Office 2003 がインストールされていれば、以下のように clr を import し、office と Excel の .NETアセンブリを AddReference するだけでよい。(Office 2003 では、GAC に Office 用の .NETアセンブリがインストールされる)

・・・
import clr
clr.AddReference("office")
clr.AddReference("Microsoft.Office.Interop.Excel")

from Microsoft.Office.Core import *
from Microsoft.Office.Interop.Excel import *
・・・

Worksheet オブジェクトの取得

  • Workbook.Worksheets[シート名]
Worksheet オブジェクト取得スクリプト例
sheet = book.Worksheets["Sheet1"]

Range オブジェクトの取得

セルや範囲を表す Range オブジェクトは、WorkSheet オブジェクトから以下のようにして取得する。

  • WorkSheet.Cells[行, 列]
  • WorkSheet.Range[セル範囲]

Range オブジェクトからセルの値を取得するには Value プロパティに XlRangeValueDataType 列挙型の値を指定する

セル C7 の値を取得するスクリプト例
・・・
#既定の形式でセルの値を出力
print sheet.Cells[7, 3].Value[XlRangeValueDataType.xlRangeValueDefault]

#XMLレコードセット形式でセルの値を出力
print sheet.Range["C7"].Value[XlRangeValueDataType.xlRangeValueMSPersistXML]
・・・
XlRangeValueDataType 列挙型の値
  • xlRangeValueDefault = 既定の形式
  • xlRangeValueMSPersistXML = XMLレコードセット形式
  • xlRangeValueXMLSpreadsheet = XMLスプレッドシート形式(書式や数式等も含む)

セルの値を出力するスクリプト例(全体)

# coding: utf-8
#
# Excel の指定のセルの値を出力するサンプル

import sys

if len(sys.argv) < 2:
    print ">ipy %s [input file name]" % sys.argv[0]
    sys.exit()

from System import *
from System.IO import *

import clr
clr.AddReference("office")
clr.AddReference("Microsoft.Office.Interop.Excel")

from Microsoft.Office.Core import *
from Microsoft.Office.Interop.Excel import *

app = ApplicationClass()
app.Visible = MsoTriState.msoFalse

book = app.Workbooks.Open(FileInfo(sys.argv[1]).FullName)

sheet = book.Worksheets["Sheet1"]

#セル A10 の値を出力
print sheet.Range["A10"].Value[XlRangeValueDataType.xlRangeValueDefault]

book.Close(False)

app.Quit()