私は、 '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
...
「テキスト」と同じ値を与える)(空の[値]を使用します。
慈悲は、多くの技術であり、ちょうど分冊表から価値を得ることです。 –
OpenOffice Calcに切り替えたときに、odsファイルの使用を開始しましたか、またはxls/xlsxを使用しましたか? –
最初は、Python/win32comを使ってExcelを開いていました。私の雇用主がOpenOfficeへの移行を決めたので、私はもはやExcelを持っていません。 AutomateIT! CalcがExcelのように見えるようにする必要があるので、私はそれを試してみると思いました。そして、数式セルの値を読むことを除いて、ほとんどの場合動作します。 –