如何读取电子表格单元格的显示值,而不是公式?

我有一个程序,通过访问它的“文本”成员来读取电子表格中的单元格的值(通过COM)。 当我使用Excel 2003时,我的程序正确地返回了单元格的显示值。 现在我正在使用OpenOffice Calc,取而代之,我正在取回单元格中的公式('= SUM(F8:F10)')。

使问题复杂化,我正在使用一个名为AutomateIT的工具! 让我把Calc看作是Excel,所以可能是因为这个问题而不是Calc。

我的程序是在Python中,我使用win32com.client库来创buildCOM调度程序。 这是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'相同的值。

为什么不把文件保存为Excel中的CVS,然后使用csv模块从文件中提取数据? 这将给你的细胞,而不是公式的数据。