xlwt 的 Worksheet.get_hier_level 函数
作用
Worksheet.get_hier_level
函数可以返回给定行的层级。如果单元格被合并,则它的 (rowx, colx)
取值应该是合并区域的左上角。如果单元格未被合并,则它的层级是 0。
使用方法
函数定义如下:
def get_hier_level(self, rowx):
"""
`Worksheet.get_hier_level`
Return the hierarchy level of row rowx.
Unrowed rows have a hierarchy of 0
It is an Error to call this method with a value less than 0 or greater than 65535.
:param rowx: int - row index
:return: int
"""
其中,参数 rowx
是需要获取层级的行。
在使用 Worksheet.get_hier_level
函数之前需要使用 xlwt.Workbook
.
下面是一个示例代码,使用Worksheet.get_hier_level
函数 获取WorkSheet中特定行的层级:
import xlwt
workbook = xlwt.Workbook(encoding = 'ascii')
worksheet = workbook.add_sheet('My Worksheet')
# 合并单元格
worksheet.write_merge(1, 3, 0, 2, 'MON')
worksheet.write_merge(4, 6, 0, 2, 'TUE')
#写入内容
worksheet.write(0, 0, 'Day')
worksheet.write(1, 0, 1)
worksheet.write(2, 0, 2)
worksheet.write(3, 0, 3)
worksheet.write(4, 0, 4)
worksheet.write(5, 0, 5)
worksheet.write(6, 0, 6)
#获取特定行的层级
print(worksheet.get_hier_level(0)) # 0
print(worksheet.get_hier_level(1)) # 1
print(worksheet.get_hier_level(2)) # 1
print(worksheet.get_hier_level(3)) # 1
print(worksheet.get_hier_level(4)) # 1
print(worksheet.get_hier_level(5)) # 1
print(worksheet.get_hier_level(6)) # 1
上述代码创建了一个简单的 Excel 工作表,并通过 write_merge
函数合并第 1 ~ 3
行和第 4 ~ 6
行。接下来先写入一列从 1 ~ 6 标号的数字,最后遍历一遍表格,获取第 0 ~ 6 行的层级,结果输出如下:
0
1
1
1
1
1
1
由结果可见,第 0 行没有被合并,因此其层级为 0,第 1 ~ 6 行被合并,因此其层级为 1。
再看一个例子:现假设上式表格程序输出的Excel表格为student.xlsx,读取表格并使用Worksheet.get_hier_level
函数获取特定行的层级。代码如下:
import xlrd
# 打开 student.xlsx 数据文件
workbook = xlrd.open_workbook('student.xlsx')
# 获取名字为 My Worksheet 的工作空间
worksheet = workbook.sheet_by_name('My Worksheet')
# 获取特定行的层级
print(worksheet.get_hier_level(0)) # 0
print(worksheet.get_hier_level(1)) # 1
print(worksheet.get_hier_level(2)) # 1
print(worksheet.get_hier_level(3)) # 1
print(worksheet.get_hier_level(4)) # 1
print(worksheet.get_hier_level(5)) # 1
print(worksheet.get_hier_level(6)) # 1
上述代码首先导入 xlrd
,打开指定的 Excel 文件并读取 My Worksheet
工作表,接下来输入要获取的行号,便可使用 get_hier_level
函数获取指定行的层级。
示例说明
例1:
worksheet.write_merge(1, 3, 0, 2, 'MON')
worksheet.write_merge(4, 6, 0, 2, 'TUE')
worksheet.write(0, 0, 'Day')
worksheet.write(1, 0, 1)
worksheet.write(2, 0, 2)
worksheet.write(3, 0, 3)
worksheet.write(4, 0, 4)
worksheet.write(5, 0, 5)
worksheet.write(6, 0, 6)
上述例1 程序创建了一个简单的 Excel 工作表,并通过 write_merge
函数合并第 1 ~ 3
行和第 4 ~ 6
行。接下来先写入一列从 1 ~ 6 标号的数字,最后遍历一遍表格,获取第 0 ~ 6 行的层级结果输出:
0
1
1
1
1
1
1
由结果可见,第 0 行没有被合并,因此其层级为 0,第 1 ~ 6 行被合并,因此其层级为 1。
例2:
#读取Excel文件中第一个工作表中的特定行的层级
workbook = xlrd.open_workbook('test.xls')
worksheet = workbook.sheet_by_index(0)
print(worksheet.get_hier_level(0))
print(worksheet.get_hier_level(1))
上述例2 程序读取Excel文件中第一个工作表,然后使用 Worksheet.get_hier_level
函数 获取该工作表中的两行的层级,结果输出:
0
0
由于该工作表中没有任何合并单元格,因此所有行的层级均为 0。
注意
- 运行
Worksheet.get_hier_level
函数之前,先使用xlwt.Workbook
创建Workbook
。 - 如果向
Worksheet.get_hier_level
输入值小于 0 或大于 65535,将引发错误。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解xlwt的 Worksheet.get_hier_level 函数:返回单元格的层级 - Python技术站