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

时间:2011-11-14 17:28:12

标签: python excel win32com openoffice-calc

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

1 个答案:

答案 0 :(得分:0)

为什么不将文件保存为Excel中的CVS,然后使用csv模块从文件中提取数据?这将为您提供单元格的数据,而不是公式。