Использование модуля 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
Другие вопросы по тегам