本代码处理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()
运行后弹出
点击更新
点击继续
点击最小化,这步很重要,极大提高代码运行效率
运行结果:
带删除线部分的文字已经被删除,运行速度还蛮快的