python openpyxl删除excel中列值所在的行

删除excel中列为特定值的所有行

# 导入需要用到的相关包
import os
import openpyxl

#定义删除函数

def delete_row(filename, sheet_name, exc_string, column_num):
    # 载入工作簿
    wb = openpyxl.load_workbook(filename)
    print('excel have been opened')

    # open the sheet
    ws = wb[sheet_name]
    print('use the sheet')

    for i in range(1, ws.max_row, 1): #从第一行开始到最后一行逐行进行
        # print("go the for")
        # print(ws.max_row)
        # print(ws.cell(row=i, column=column_num).value)
        if ws.cell(row=i, column=column_num).value == exc_string: #如果该行第column_num列值为'exc_string'
            print(i)
            ws.delete_rows(i,1) #则删除该行
            print('删除第-',i,'-行成功!')
    wb.save(filename='Update.xlsx')


path = os.getcwd()
filename = 'Result1.xlsx'
sheet_name = 'FinalData'
exc_string = 'Sheet3'
column_num = 2

delete_row(filename, sheet_name, exc_string, column_num)
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是可以删除指定并保持下方单元格数据和格式的代码: ```python import openpyxl from openpyxl.utils import range_boundaries # 打开工作簿 wb = openpyxl.load_workbook('example.xlsx') # 选择工作表 sheet = wb['Sheet1'] # 定义要删除号 delete_row = 2 # 遍历每一个合并单元格 for merged_cell in sheet.merged_cells: # 获取合并单元格的起始和结束 start_row, start_col, end_row, end_col = range_boundaries(merged_cell.coord) # 判断是否需要删除合并单元格所在的 if start_row <= delete_row <= end_row: # 如果是删除合并单元格所在的,则取消合并单元格 sheet.unmerge_cells(merged_cell.coord) elif delete_row < start_row: # 如果是删除号小于合并单元格所在的,则将合并单元格移动到新的位置 new_merged_cell = openpyxl.worksheet.cell_range.CellRange( start_row=end_row-1, start_column=start_col, end_row=end_row-1, end_column=end_col ) sheet.merge_cells(new_merged_cell.coord) # 遍历每一 for row in sheet.iter_rows(): # 如果号等于要删除号,则跳过该 if row[0].row == delete_row: continue # 遍历每一个单元格 for cell in row: # 如果单元格是合并单元格,则获取合并单元格的值 if cell.coordinate in sheet.merged_cells: cell_value = sheet.cell(row=cell.start_row, column=cell.start_column).value else: cell_value = cell.value # 获取单元格的格式 cell_format = cell.number_format # 将单元格上移一 sheet.cell(row=cell.row-1, column=cell.column, value=cell_value) # 复制单元格的格式 sheet.cell(row=cell.row-1, column=cell.column)._style = cell._style sheet.cell(row=cell.row-1, column=cell.column).number_format = cell_format # 删除最后一 sheet.delete_rows(sheet.max_row) # 保存工作簿 wb.save('example.xlsx') ``` 在这个代码中,我们首先遍历每一个合并单元格,判断要删除是否在合并单元格所在的范围内。如果是,则取消合并单元格;如果不是,则将合并单元格移动到新的位置。然后遍历每一,如果号等于要删除号,则跳过该;否则,遍历每一个单元格,获取单元格的值和格式,并将单元格上移一。最后删除最后一,保存工作簿即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值