Python Excelファイル操作指定行の内容を削除
1843 ワード
前言:前回のブログで、Excelファイルの読み取り、書き込み、変更操作を学びました.では、Excelファイル操作で指定された行の内容を削除するにはどうすればいいのでしょうか.
仮定:Excelファイルの内容を定義した組合せデータ変数に読み込んでから、組合せデータ変数の指定データを削除し、元のファイルに書き込むことができます.
まず、Excelファイルの内容を、ファイルの最初の列key、ファイルの各動作valueの辞書dicに読みます.
指定した行の内容を削除します.
削除して元のテーブルに書き込むと、レコードが1つ削除されるので、元のテーブルに書き込むと、最後の行のデータを上書きすることはできません.そのため、完全に空のデータを組み合わせたデータに書き込み、元のテーブルに書き込む必要があります.これで完了します.
仮定: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)