我有一個程序,通過訪問其「文本」成員來讀取電子表格中的單元格的值(通過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,所以我想我會試試看。除了閱讀公式單元格的值之外,它主要起作用。 –