如何读取电子表格单元格的显示值,而不是公式?
我有一个程序,它通过COM接口读取电子表格中一个单元格的值,具体是通过访问它的'Text'属性来实现的。在我使用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'一样的值。
1 个回答
0
为什么不直接把文件保存为Excel中的CSV格式,然后用csv模块从这个文件中提取数据呢?这样你得到的就是单元格里的数据,而不是公式。