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

1 投票
1 回答
2390 浏览
提问于 2025-04-17 06:18

我有一个程序,它通过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模块从这个文件中提取数据呢?这样你得到的就是单元格里的数据,而不是公式。

撰写回答