文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【openpyxl】python处理excel——删除指定行

2023-09-30 16:12

关注

本文给出了用openpyxl删除excel满足指定条件的行或列的正确示范,同时给出了一些网络资料的常见错误供读者参考

1.正确示范✔

from openpyxl import Workbook, load_workbookexcel_path = 'xxxx.xsl'wb = load_workbook(excel_path)ws=wb.activemax_row_num = ws.max_row #最大行数i = 0#以下例子的功能为删除第五列为 xxx 的行,使用时需自行按照需求自行更改行列值和判断条件row_n = 1 #起始行col_n = 5 #目标列while i < max_row_num:    if ws.cell(row=row_n,column=col_n).value == 'xxx':        ws.delete_rows(row_n)    else:        # print(ws.cell(row=row_n,column=5).value,row_n,sep='\t')        row_n+=1    i+=1wb.save(filename='xxxx.xlsx')wb.close    

思路二:

from openpyxl import load_workbook# 基于ws删除一些行和一些列,注意没有备份,def del_ws_rows_cols(ws, rowd, cold):  # 删除一些行和一些列,此程序不含保存操作。    """基于ws删除一些行和一些列    要删的行序数放在rowd表格中,要删的列序数放在cold表格中    本程序的关键是删除的行或列序数都必须是从大的开始删除,这样才不会乱序"""    # wb = load_workbook(flname)    # ws = wb[sheetname]       rowd = sorted(rowd, reverse=True)  # 确保大的行数首先删除    cold = sorted(cold, reverse=True)  # 确保大的列数首先删除    for r in rowd:                     # rowd格式如:[1,3,5],表示要删除第1、3、5共三行。        ws.delete_rows(r)    for c in cold:                     # cold格式如:[2,6,10],表示要删除第2、6、10共三列        ws.delete_cols(c)    wb.save(flname)  # 记得要保存。# 基于文件名和表格名删除一些行和一些列,注意没有备份。# flsh是指文件名flname和表格名sheetnamedef del_flsh_rows_cols(flname, sheetname, rowd, cold):  # 基于文件名和表格名删除一些行和一些列    """基于文件名和表格名删除一些行和一些列    要删的行序数放在rowd表格中,要删的列序数放在cold表格中    本程序的关键是删除的行或列序数都必须是从大的开始删除,这样才不会乱序"""    wb = load_workbook(flname)    ws = wb[sheetname]    rowd = sorted(rowd, reverse=True)    cold = sorted(cold, reverse=True)    for r in rowd:        ws.delete_rows(r)    for c in cold:        ws.delete_cols(c)    wb.save(flname)  # 记得要保存。

2.错误示范❌

错误示范一:

#coding:utf-8import openpyxlwb=openpyxl.load_workbook(filename='xxxxxx.xlsx')ws=wb.activefor i in range(1,ws.max_row,1): #从第一行开始到最后一行逐行进行    if ws.cell(row=i,column=1).value=='序号': #如果该行第一列值为‘序号’        ws.delete_rows(i) #则删除该行        print('删除第-',i,'-行成功!')wb.save(filename='yyyyyyy.xlsx')

错误示范二:

#coding:utf-8import openpyxlwb=openpyxl.load_workbook(filename='xxxxxx.xlsx')ws=wb.activerow_number=0for row in ws.iter_rows():#迭代遍历每行    if row[1].value=='序号':#给定的条件,读者可根据自身需求自定义        row_number=row[1].row#关键步骤!获得当前行的行号!        ws.delete_rows(row_number)wb.save(filename='yyyyyyy.xlsx')wb.close

这两种错误示范都是用了for循环,在遍历的过程中因为删除导致行号改变了,而遍历的行号仍然按照原始数据的行号,导致有部分数据被跳过

来源地址:https://blog.csdn.net/weixin_44493291/article/details/128617507

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯