我有一个程序通过访问其“文本”成员来读取电子表格中单元格的值(通过 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' 相同的值。