Как прочитать отображаемое значение ячейки электронной таблицы, а не формулу? - PullRequest
1 голос
/ 14 ноября 2011

У меня есть программа, которая считывает значение ячейки в электронной таблице (через 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

...

Использование «Value» в empty () дает то же значение, что и «Text».

1 Ответ

0 голосов
/ 14 ноября 2011

Почему бы просто не сохранить файл как CVS в Excel, а затем использовать модуль csv для извлечения данных из файла?Это даст вам данные ячейки, а не формулы.

...