Python 对Excel文件操作删除指定行的内容

前言:在上一次的博客中,我学习到了对Excel文件的读、写、改操作。那么如何实现对Excel文件操作删除指定行的内容呢?

假设:我们可以先将Excel文件中的内容读取到定义好的组合数据变量中,然后将组合数据变量中的指定数据删除,然后写到原文件中。

首先,我们将Excel文件中的内容读到以文件第一列key,文件的每行为value的字典dic中。

def read_excel(self,bookname, sheetname):
    #打开Excel文件
        wb = xlrd.open_workbook(bookname)
        sheet = wb.sheet_by_name(sheetname)
        dic={}
        for i in range(sheet.nrows-1):
            lis=[]
            for j in range(sheet.ncols):
                lis.append(sheet.cell(i+1,j).value)
            dic[sheet.cell(i+1,0).value]=lis
        return dic

删除指定行内容。

def remove_order(self,num, dic4, dic2, bookname, sheetname):
        flag = False
        sum = 0
        for i in dic4.keys():
            if num == i and dic2[num][9]=='已退款':    #判定指定属性,确定删除行            
                sum += 1
                dic2.pop(num)
                self.updateExcle(dic2,'D:\pythoncode\order.xls','Sheet1',sum)
                flag = True
                break
        return flag

删除后写入到原表中,因为我们删除了一条记录,所以再写入到原表中时,不能够再把最后一行数据进行覆盖。因此我们需要写入一行全空的数据到组合数据中,然后再写入到原表中,这样就可以完成了!

def updateExcle(self,dic,bookname,sheetname,sum=0):
        wb=xlrd.open_workbook(bookname)
        sheet=wb.sheet_by_name(sheetname)
        new_wb=copy(wb)  #将原有的Excel,拷贝一个新的副本
        new_sheet=new_wb.get_sheet(0)
        m=0
        for i in dic.keys():
            m+=1
            n=0
            for j in dic[i]:
                new_sheet.write(m,n,j)
                n+=1
        for h in range(m+1,m+1+sum):
            m+=1
            n = 0
            for k in dic[i]:
                new_sheet.write(m,n,'')
                n+=1
        new_wb.save(bookname)

 

  • 8
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值