我有一个程序,通过访问其“文本”成员来读取电子表格中的单元格的值(通过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
...
在空使用“价值”()给出了相同的值“文本”。
慈悲,这是很多技术,只是为了从spreasheet中获得价值。 –
当你切换到OpenOffice Calc你开始使用ods文件还是你坚持使用xls/xlsx? –
最初我只是使用Python/win32com打开Excel。现在我的雇主决定迁移到OpenOffice,我不再拥有Excel了。 AutomateIT!应该让Calc看起来像Excel,所以我想我会试试看。除了阅读公式单元格的值之外,它主要起作用。 –