不吃天鹅肉 2021-06-03 14:24 采纳率: 100%
浏览 219
已采纳

openpyxl删除合并单元格所在列

wb = openpyxl.load_workbook(u'/Users/edz/Desktop/工作簿1.xlsx')
    ws = wb['Sheet1']
    try:
        # hdl_utils.excel_style(ws=ws, delete_column=(3, 1), )
        # for me in ws.merged_cells:
        #     print(me)
        ws.merged_cells(start_row=1, end_row=3, start_column=3, end_column=3)
        delete_column = (3, 1)
        if delete_column:
            ws.delete_cols(delete_column[0], delete_column[1])
            for merge_col in ws.merged_cells:
                # 暂时只支持删除一列,多余行会有bug,有需要的话可以反复调用来实现
                if delete_column[0] < merge_col.min_col:
                    merge_col.shift(col_shift=-delete_column[1])
                elif delete_column[0] <= merge_col.max_col:
                    if merge_col.min_col < merge_col.max_col:
                        merge_col.shrink(right=delete_column[1])
                    else:
                        ws.unmerge_cells(str(merge_col))
        wb.save(u'/Users/edz/Desktop/工作簿1.xlsx')
    finally:
        wb.close()

假如我把excel的第三列合并,然后我又删除了第三列,则新的第三列(原来第四列)变成了合并的,然而我并不想让他合并。。有没有什么好办法?

       我目前是这么写的,可这会有一个问题就是原来第四列每个单元格都有值,这么操作一下就只剩下第一个单元格有值了,因为相当于给他进行了一步合并取消合并的操作,有没有什么好办法能解除这个问题呢,

  • 写回答

1条回答 默认 最新

  • 不吃天鹅肉 2021-06-03 14:55
    关注

    好吧,我自己解决了,代码如下

        if delete_column:
            for merge_col_ in ws.merged_cells:
                if merge_col_.min_col == merge_col_.max_col == delete_column[0]:
                    ws.unmerge_cells(str(merge_col_))
            ws.delete_cols(delete_column[0], delete_column[1])
            for merge_col in ws.merged_cells:
                # 暂时只支持删除一列,多余行会有bug,有需要的话可以反复调用来实现
                if delete_column[0] < merge_col.min_col:
                    merge_col.shift(col_shift=-delete_column[1])
                elif delete_column[0] <= merge_col.max_col:
                    merge_col.shrink(right=delete_column[1])

    就是在删除之前先判断一下,如果有最小列和最大列都等于删除列的合并单元格,就先取消合并在删除

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装
  • ¥40 复杂的限制性的商函数处理