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)

猜你喜欢

转载自blog.csdn.net/qq_35328369/article/details/81588708