首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Excel表格中检测合并的单元格?

如何在Excel表格中检测合并的单元格?
EN

Stack Overflow用户
提问于 2016-09-19 21:55:55
回答 5查看 23K关注 0票数 17

我正在尝试从包含合并单元格的Excel工作表中读取数据。当使用openpyxl读取合并的单元格时,第一个合并的单元格包含该值,其余的单元格为空。

我想知道每个单元格是否合并,以及合并了多少个单元格,但我找不到任何这样做的函数。工作表中有空的其他单元格,所以我不能使用它。

EN

回答 5

Stack Overflow用户

发布于 2017-03-16 08:45:26

您可以在工作表上使用merged_cells.ranges (merged_cell_ranges2.5.0-b1 (2017-10-19)版本中已弃用,已更改为merged_cells.ranges) (似乎找不到每行),如下所示:

代码语言:javascript
复制
from openpyxl import load_workbook
wb = load_workbook(filename='a file name')
sheet_ranges = wb['Sheet1']

print(sheet_ranges.merged_cells.ranges)
票数 25
EN

Stack Overflow用户

发布于 2019-07-31 22:47:15

要测试单个单元格是否合并,可以检查类(名称):

代码语言:javascript
复制
cell = sheet.cell(row=15, column=14)
if type(cell).__name__ == 'MergedCell':
  print("Oh no, the cell is merged!")
else:
  print("This cell is not merged.")

要“取消合并”所有单元格,可以使用函数unmerge_cells

代码语言:javascript
复制
for items in sorted(sheet.merged_cell_ranges):
  print(items)
  sheet.unmerge_cells(str(items))
票数 5
EN

Stack Overflow用户

发布于 2019-08-16 21:50:12

为了测试是否合并了单个单元格,我像@A.Liu建议的那样循环遍历sheet.merged_cells.ranges。不幸的是,检查像@0x4a6f4672这样的单元格类型不再起作用。

下面是一个函数,它向您展示了如何做到这一点。

代码语言:javascript
复制
def testMerge(row, column):
    cell = sheet.cell(row, column)
    for mergedCell in sheet.merged_cells.ranges:
        if (cell.coordinate in mergedCell):
            return True
    return False
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39574991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档