Использование модуля XLRD и Python для определения стиля шрифта ячейки (курсив или нет)
Я пытаюсь проанализировать данные в таблице Excel с помощью XLRD, чтобы определить, какие значения ячеек выделены курсивом. Эта информация будет использоваться для установки флага относительно того, является ли значение оценочным или отчетным значением. Ниже приведен пример данных:
owner_name year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
Alachua, city of 1978 17.4 15.7 16.7 18.3 18.9 18.9 19.2 17.4 19.5 19.8 17.1 16.4
Archer, city of 1978 5.6 3.6 4.3 4.5 4.7 4.8 5.3 5.3 5.4 5.6 3.9 2.8
Я не использовал XLRD в какой-то степени, кроме как поиграться с некоторыми из основных функций, чтобы понять, как извлечь данные из электронной таблицы. Теперь мне нужно добавить этот дополнительный бит функциональности, чтобы определить курсивные значения ячеек.
Заранее спасибо за помощь...
РЕДАКТИРОВАТЬ: XLRD предоставил мне необходимую функциональность; спасибо John Machin за ответ. Вот кодез:
import xlrd
book = xlrd.open_workbook('fl_data.xls',formatting_info=True)
sh = book.sheet_by_index(0)
for row in range(0,sh.nrows):
font = book.font_list
cell_val = sh.cell_value(row,1)
cell_xf = book.xf_list[sh.cell_xf_index(row,1)]
print cell_val,font[cell_xf.font_index].italic
2 ответа
Использование xlrd (само по себе, а не с pyexcel):
Вот ссылка на тему в гугл-группе python-excel. Речь идет о получении цвета шрифта, но это дает вам 99% пути.
Мое решение здесь было основано на классе, написанном 'timmorgan', который можно найти здесь. Класс требует, чтобы документ Excel, на который вы хотите действовать, был открыт. Затем вы создаете объект документа Excel и затем вызываете метод get_range, который возвращает объект диапазона. Этот объект диапазона можно затем использовать для получения свойств шрифта указанной ячейки.
#--Requires excel document to be open
import pyexcel
book = pyexcel.ExcelDocument(visible=True) #--keeps excel open
cell = 'r171'
r = book.get_range(cell)
val = book.get_value(cell)
print val, r.font.italic, r.font.name