openpyxl平移excel,直到没有空列

问题遇到的现象和发生背景

目前在用python写一个消除excel空列的脚本,

img

比如这个excel的F、I、P列

用代码块功能插入代码,请勿粘贴截图
def removeEmptyCol(path):
  # print(path)
  wb = load_workbook(path)
  sheet = wb.active
  patColChar = r"([A-Z])+\d+"
  patColChar = re.compile(patColChar)
  colIdxL = patColChar.findall(sheet.dimensions)[0]
  colIdxR = patColChar.findall(sheet.dimensions)[1]
  patRowNum=r"[A-Z]+(\d+)"
  patRowNum=re.compile(patRowNum)
  rowIdTop=patRowNum.findall(sheet.dimensions) [0]
  rowIdBottom=patRowNum.findall(sheet.dimensions) [1]
  # print(rowIdTop,type(rowIdBottom))
  # print(column_index_from_string(colIdxL),column_index_from_string(colIdxR))
  listData = []
  for col in sheet.columns:
    # print(col[0])
    colIdx =column_index_from_string(patColChar.findall(str(col[0]))[0]) 
    # print(colIdx)
    listCol = []
    for cell in col:
      # print(cell)
      if cell.value == None:
        listCol.append('')
    # 判断是否为空列
    if len(listCol) == int(rowIdBottom):
      # print(colIdx,get_column_letter(colIdx+1))
      moveRange = get_column_letter(colIdx+1) + rowIdTop + ':'+colIdxR+rowIdBottom
      sheet.move_range(cell_range=moveRange,rows=0,cols=-1)
      wb.save(path)
      removeEmptyCol(path)
运行结果及报错内容

img

我的解答思路和尝试过的方法

由于每个excel的空列数量以及位置不定,所以我的思路是先判断哪些是空列,然后将该空列右面的区域向左平移一格,以达到删除空列的目的,
我试图写一个递归算法,然而越写越混乱

我想要达到的结果

希望可以删除所有空列,达到

img


这个效果

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。

Python利用openpyxl处理Excel文件(单元格及行列具体操作)
https://blog.csdn.net/u012874140/article/details/102398207

参考一下

参考一下呢