使用XLRD模块和Python确定单元格字体样式(斜体或不斜体)

时间:2011-07-18 16:06:18

标签: python xlrd

我正在尝试使用XLRD解析excel电子表格中的数据,以确定哪些单元格值是斜体。此信息将用于设置关于值是估计值还是报告值的标记。以下是数据示例:

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 个答案:

答案 0 :(得分:0)

我的解决方案基于'timmorgan'编写的课程,可以找到here。该课程要求您希望采取行动的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

答案 1 :(得分:0)

使用xlrd(单独使用,而不是使用pyexcel):

这是link to a topic to the python-excel google-group。它是关于获取字体颜色,但它可以让你99%的方式。