如何在Python中获取Excel单元格属性

实际上,我使用的是xlrd模块0.8版本,但我不知道如何读取单元格属性,例如背景色,字体以及单元格是否被锁定。

我尝试使用

import xlrd

wb = xlrd.open_workbook(...)

sh = wb.sheet_by_index(...)

sh.sh._cell_xf_indexes(2, 2)

它引发一个错误,指出在读取时需要设置格式化信息wb,但是如果我有该参数,则表明它仍未实现。

是否有另一个模块,或者该模块本身如何读取单元格属性?

回答:

以下内容使用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.Font-class)。

以上是 如何在Python中获取Excel单元格属性 的全部内容, 来源链接: utcz.com/qa/428894.html

回到顶部