2011-11-14 7 views
1

私は、 'Text'メンバーにアクセスしてスプレッドシート(​​COM経由)のセルの値を読み取るプログラムを持っています。 Excel 2003を使用しているとき、私のプログラムは正しくセルの表示値を返しました。今ではOpenOffice Calcを使用していますが、代わりにセルの数式を戻しています( '= SUM(F8:F10)')。数式ではなくスプレッドシートのセルの表示値を読み取る方法は?

問題を複雑にするには、AutomateIT!というツールを使用して、CalcをExcelのように扱うようにしています.Calではなく問題の原因になっている可能性があります。

私のプログラムはPythonで書かれており、私はwin32com.clientライブラリを使ってCOMディスパッチャを作成しています。 これはPythonコードの本質である(「空の」関数は常に数式を含むセルに対してfalseを返す):

from win32com.client import Dispatch 

def empty(cell): 
    """Returns false if the specified cell has a non-zero value in it""" 
    val = sheet.Range(cell).Text 
    return val == 0.0 or val == '' or val == None 

xlApp = Dispatch('Excel.Application') # Actually opens OpenOffice Calc, thanks to AutomateIT! 

xlApp.Workbooks.Open('myfile.ods') 

sheet = xlApp.Workbooks(1).Sheets(1) 

if empty('F12'): 
    sheet.Range('C2').Value = 'X' # Never get here because F12 is a formula cell 

... 

「テキスト」と同じ値を与える)(空の[値]を使用します。

+3

慈悲は、多くの技術であり、ちょうど分冊表から価値を得ることです。 –

+0

OpenOffice Calcに切り替えたときに、odsファイルの使用を開始しましたか、またはxls/xlsxを使用しましたか? –

+0

最初は、Python/win32comを使ってExcelを開いていました。私の雇用主がOpenOfficeへの移行を決めたので、私はもはやExcelを持っていません。 AutomateIT! CalcがExcelのように見えるようにする必要があるので、私はそれを試してみると思いました。そして、数式セルの値を読むことを除いて、ほとんどの場合動作します。 –

答えて

0

ファイルをExcelでCVSとして保存し、csvモジュールを使用してファイルからデータを取得するだけではどうですか。それは数式ではなくセルのデータを与えます。

+0

私は彼が数式を保ちたいと思います。 –

+0

私のフォールバックの位置は、ファイルを手で開いて編集することです。しかし、私は、私が望んでいたモードを実行するためにPythonスクリプトを実行することができていましたが、それが可能であればそれを続けていきたいと思います。 –

関連する問題