python删除excel单元格内带删除线的文字(适用较大excel)

本代码处理excel中所有sheet的d列,其他列同理,自己改就好,运行效率较高

import xlwings as xw

def dispose_sheetD(sheet):
    # 一次性获取整个范围的值
    range_values = sheet.range('D4').expand('down').value
    
    # 获取范围的实际单元格对象
    range_cells = sheet.range('D4').expand('down')
    
    for idx, cell_value in enumerate(range_values):
        # 获取当前单元格的位置信息
        cell = range_cells[idx]
        cell_coord = str(cell.address.replace('$', ''))
        print('Cell: ' + cell_coord)
        
        # 判断单元格是否有删除线
        st = cell.font.impl.xl.Strikethrough
        
        if st:
            # 清除单元格内容
            cell.clear()
            
        elif st is None:
            num_chars = len(cell_value)
            
            # 创建一个新字符串,不包括带有删除线的字符
            new_value = []
            char_position = 0
            
            while char_position < num_chars:
                char_is_st_font = cell.characters[char_position].font.impl.xl.Strikethrough

                if not char_is_st_font:
                    # 如果没有删除线,将字符添加到新字符串中
                    cur_text_value = cell.characters[char_position].text
                    
                    new_value.append(cur_text_value)

                char_position += 1
            
            # 更新单元格的值
            cell.value = ''.join(new_value)
            

wb = xw.Book('1.xlsx')

for sheet in wb.sheets:
    print(sheet)
    #dispose_sheetA(sheet)
    dispose_sheetD(sheet)
    #dispose_sheetF(sheet)   

wb.save('modified_file.xlsx')
wb.close()


运行后弹出

点击更新

点击继续

点击最小化,这步很重要,极大提高代码运行效率

运行结果:

带删除线部分的文字已经被删除,运行速度还蛮快的

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值