目前在用python写一个消除excel空列的脚本,
比如这个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)
由于每个excel的空列数量以及位置不定,所以我的思路是先判断哪些是空列,然后将该空列右面的区域向左平移一格,以达到删除空列的目的,
我试图写一个递归算法,然而越写越混乱
希望可以删除所有空列,达到
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。
Python利用openpyxl处理Excel文件(单元格及行列具体操作)
https://blog.csdn.net/u012874140/article/details/102398207