1

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

4

1 回答 1

0

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

于 2011-11-14T17:59:46.487 回答