【发布时间】:2011-07-18 16:06:17
【问题描述】:
我正在尝试使用 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
【问题讨论】:
-
如果有更好的方法,我也愿意使用 win32com。我已经用 MakePy.py 构建了 Microsoft Excel 库。
-
您在编辑中的解决方案使用斜体,但它似乎不适用于粗体和下划线(分别在代码的最后一行替换
italic为bold和underlined)。知道为什么吗? -
好吧,看起来我应该使用
underline_type而不是下划线,而不是bold,我应该检查weight(正常文本是400,粗体是700)。至少,这是在 Xubuntu 上的 LibreOffice 中保存的.xls文件。print(font[cell_xf.font_index].__dict__)告诉设置什么。无论如何,这仍然无法解释为什么bold和underlined不会改变。