2012-04-15 26 views
2

私はいくつかのPythonを学ぼうとしており、Pythonがwin32モジュールを使用してExcelと相互作用することを望んでいました。私はwiki hereでオンラインの基本的な例を見つけました。pythonとexcelの間のPython com

ただし、動作しません。 これは私が得るエラーです。

Traceback (most recent call last): 
    File "C:/Users/Greg/Desktop/python programming/excel2.py", line 8, in <module> 
    sheet.Range("A2").Value = str(Application.SIFilter(None, c.siObjectFilter)) 
NameError: name 'Application' is not defined 

私の質問は、この行が正確に何であり、エラーが発生するのですか?

sheet.Range( "A2")。値= STR(Application.SIFilter(なし、c.siObjectFilter))

import win32com.client 
from win32com.client import constants as c 

excel = win32com.client.Dispatch("Excel.Application") 
book = excel.Workbooks.Add() 
sheet = book.Worksheets(1) 
sheet.Range("A1").Value = "Hello World!" 
sheet.Range("A2").Value = str(Application.SIFilter(None, c.siObjectFilter)) 
book.SaveAs("c:\simple_example.xls") 

sheet = None 
book = None 
excel.Quit() 
excel = None 

おかげで申し訳ありません私は場合は、スーパーのnoob ....

+0

コマンドラインまたはSoftimageから実行していますか? 'Application'オブジェクトは、後者を行うときだけ存在します。 – kindall

答えて

3

リンク先のコードは、this blogからまっすぐに引き出されているようです。その音から、あなたはSoftimageと統合しようとしていません。あなたはそのラインを外に出したいと思うでしょう。

また、Excel 2007以降で作業している場合は、ファイルに書き込む必要があります。これはExcel.Applicationがあなたのために作成するファイルだからです。

これらの変更で変更された同じサンプルコードを次に示します。

この行で
import win32com.client 

excel = win32com.client.Dispatch("Excel.Application") 
book = excel.Workbooks.Add() 
sheet = book.Worksheets(1) 
sheet.Range("A1").Value = "Hello World!" 
book.SaveAs("c:\simple_example.xlsx") # or .xls depending on version 

sheet = None 
book = None 
excel.Quit() 
excel = None 
0

sheet.Range("A2").Value = str(Application.SIFilter(None, c.siObjectFilter)) 

あなたは、文字列にしてApplication.SIFilter(None, c.siObjectFilter)をオンにしようとしています。 Applicationというオブジェクトを定義していません。私はコードを実行しませんでしたが、あなたがexcel.SIFilter(None, c.siObjectFilter)と書くとうまくいくと思います。あなたが勉強しようとしているだけなら、何か他のものを書くと、あなたはExcelファイルを得るでしょう。