Python Excelファイル操作指定行の内容を削除

1843 ワード

前言:前回のブログで、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

削除して元のテーブルに書き込むと、レコードが1つ削除されるので、元のテーブルに書き込むと、最後の行のデータを上書きすることはできません.そのため、完全に空のデータを組み合わせたデータに書き込み、元のテーブルに書き込む必要があります.これで完了します.
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)