使用XLRD模块和Python判断单元格字体样式(斜体与否)

8 投票
2 回答
9258 浏览
提问于 2025-04-16 21:46

我正在尝试使用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 个回答

1

我这里的解决方案是基于一个叫'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
1

使用xlrd(单独使用,不和pyexcel一起):

这里有一个链接,指向python-excel的谷歌讨论组。这个话题是关于获取字体颜色的,不过这对你来说已经足够了,能解决99%的问题。

撰写回答