У меня есть программа, которая считывает значение ячейки в электронной таблице (через COM), обращаясь к ее члену «Текст». Когда я использовал Excel 2003, моя программа правильно возвращала отображаемое значение ячейки. Теперь я использую OpenOffice Calc, и вместо этого я получаю формулу в ячейке ('=СУММ(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() дает то же значение, что и «Текст».
1 ответ
Почему бы просто не сохранить файл как CVS в Excel, а затем использовать модуль csv для извлечения данных из файла? Это даст вам данные ячейки, а не формулу.
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.