1

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

さらに複雑なことに、私はAutomateIT!というツールを使用しています。Calc を Excel のように扱えるようにするには、Calc ではなくそれが問題を引き起こしている可能性があります。

私のプログラムは 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

...

empty() で「Value」を使用すると、「Text」と同じ値が得られます。

4

1 に答える 1