如何在 Python 中获取 Excel 单元格属性
Posted
技术标签:
【中文标题】如何在 Python 中获取 Excel 单元格属性【英文标题】:How to get Excel cell properties in Python 【发布时间】:2012-09-14 11:39:33 【问题描述】:其实我用的是xlrd模块0.8版本,但是不知道怎么读取单元格属性,比如背景颜色,字体,单元格是否被锁定。
我尝试使用
import xlrd
wb = xlrd.open_workbook(...)
sh = wb.sheet_by_index(...)
sh.sh._cell_xf_indexes(2, 2)
在读取wb
时会出现错误提示需要设置格式信息,但如果我有该参数,则表明它仍未实现。
是否有其他模块或如何使该模块本身读取单元格属性?
【问题讨论】:
见***.com/questions/7991209/… 【参考方案1】:以下对我有用,使用 xlrd 版本 0.7.6:
from xlrd import open_workbook
wb = open_workbook('tmp.xls', formatting_info=True)
sheet = wb.sheet_by_name("1")
cell = sheet.cell(6, 0)
print "cell.xf_index is", cell.xf_index
fmt = wb.xf_list[cell.xf_index]
print "type(fmt) is", type(fmt)
print
print "fmt.dump():"
fmt.dump()
fmt
是 XF 类的一个实例;见https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#formatting.XF-class
dump()
方法打印有关格式的所有信息。这是上面代码的输出:
cell.xf_index is 497
type(fmt) is <class 'xlrd.formatting.XF'>
fmt.dump():
_alignment_flag: 1
_background_flag: 1
_border_flag: 1
_font_flag: 1
_format_flag: 0
_protection_flag: 0
alignment (XFAlignment object):
hor_align: 1
indent_level: 0
rotation: 0
shrink_to_fit: 0
text_direction: 0
text_wrapped: 0
vert_align: 2
background (XFBackground object):
background_colour_index: 64
fill_pattern: 1
pattern_colour_index: 17
border (XFBorder object):
bottom_colour_index: 0
bottom_line_style: 0
diag_colour_index: 0
diag_down: 0
diag_line_style: 0
diag_up: 0
left_colour_index: 0
left_line_style: 0
right_colour_index: 0
right_line_style: 0
top_colour_index: 56
top_line_style: 1
font_index: 72
format_key: 0
is_style: 0
lotus_123_prefix: 0
parent_style_index: 0
protection (XFProtection object):
cell_locked: 1
formula_hidden: 0
xf_index: 497
其中一些值是工作簿wb
上列表的索引。例如,fmt.font_index
是 72,wb.font_list[72]
是 Font
类的一个实例 (https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#formatting .字体类)。
【讨论】:
如果您使用的是 xlsx 文件怎么办? format_info 未实现 @Boosted_d16,如果此问答与使用 xlsx 文件的情况无关,那么您可以提出一个新的 *** 问题。 谢谢,成功了!注意formatting_info=True
仅适用于 xls 类型(参考link)。
类似的事情可以用openpyxl做吗?以上是关于如何在 Python 中获取 Excel 单元格属性的主要内容,如果未能解决你的问题,请参考以下文章
Python - Win32Com - 如何从 Excel 电子表格单元格中提取超链接?
使用 python xlrd 从 Excel 单元格中获取公式