Использование 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 предоставил мне возможности мне нужно; спасибо Джон Мачин за ответ. Вот ТЭН codez:

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 google-group. Речь идет о получении цвета шрифта, но это дает вам 99% пути.


мое решение здесь было основано на классе, написанном "timmorgan", который можно найти здесь. Класс требует, чтобы документ excel, на который вы хотите действовать, был открыт. Затем вы создаете объект документа excel, а затем вызываете метод get_range, который возвращает объект 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