用openpyxl分析xlsx文件的合并单元格

2020年7月8日 / 202次阅读 / Last Modified 2020年7月9日
excel表格

一般xlsx文件都有合并单元格,这些格子的内容一样,就没有必要让相同的数据多次出现,而且合并之后也更好看。openpyxl提供了一些接口,可以供我们分析xlsx文件的合并单元格,在自动化处理表格的过程中很有用。

merge的基础知识

xlsx文件合并单元格的时候,如果多个格子都有数据,只会保留左上角的格子数据作为合并之后单元格的数据。

合并单元格只保留左上角的数据
合并单元格只保留左上角的数据

因此,使用openpyxl读取合并单元格的数据时,除了左上角的格子有数据,其它被合并的格子都没有数据!比如从A1到C1合并了,A1有数据,B1和C1是None。

如果对已经merged的区域做unmerge操作,还是只有左上角的格子有数据,其它格子都是None

ws.merged_cells.ranges

openpyxl的这个接口ws.merged_cells.ranges可以获取整个sheet中,所有merged cells。

>>> ws.merged_cells.ranges
[, ]
>>> ws.merged_cells.ranges[0]
<CellRange B1:C1>
>>> ws.merged_cells.ranges[1]
<CellRange E1:F1>
>>> ws.merged_cells.ranges[0].left
[(1, 2)]
>>> ws.merged_cells.ranges[0].right
[(1, 3)]
>>> ws.merged_cells.ranges[0].max_col
3
>>> ws.merged_cells.ranges[0].min_col
2
>>> ws.merged_cells.ranges[0].max_row
1
>>> ws.merged_cells.ranges[0].min_row
1
>>> ws.merged_cells.ranges[0].size
{'columns': 2, 'rows': 1}

以上这些数据,都可以被我们利用来判断某个具体的cell,是否在一个merged区域里面,然后我们就知道,它的值与这个区域左上角的cell value一样。

另外,openpyxl还可以可以通过编程实现merge和unmerge的功能,接口分别是ws.merge_cells和ws.unmerge_cells。

-- EOF --

本文链接:https://www.pynote.net/archives/2185

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top