我有一个程序通过访问其“文本”成员来读取电子表格中的单元格的值(通过COM)。当我使用Excel 2003时,我的程序正确返回了单元格的显示值。现在我正在使用OpenOffice Calc,而是在单元格中找回公式('= SUM(F8:F10)')。
为了使问题复杂化,我使用一个名为AutomateIT!的工具让我将Calc视为Excel,因此可能导致问题而不是Calc。
我的程序是Python,我使用win32com.client库来创建COM调度程序。 这是Python代码的本质(对于包含公式的单元格,'empty'函数总是返回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'相同的值。
答案 0 :(得分:0)
为什么不将文件保存为Excel中的CVS,然后使用csv模块从文件中提取数据?这将为您提供单元格的数据,而不是公式。