2017-05-12 3 views
0

Ich versuche, nur bestimmte Zeilen von einer Excel-Datei zu einer anderen mit Python zu kopieren. temp_list hat die Zeilennummern, die ich nur kopieren möchte. Aber es scheint, als würde es alle Zeilen kopieren. Was mache ich hier falsch?Python-Programm zum Kopieren nur bestimmter Zeilen aus Excel-Datei Kopieren aller Zeilen

import xlrd 
book = xlrd.open_workbook("file.xlsx") 
sheet = book.sheet_by_index(0) 
temp_list = [1,4,5,6,7,8,9,10,15,19,26] 
book1 = copy(book) 
sheet1=book1.get_sheet(0) 
totalcols=sheet.ncols 
k=0 

for j in temp_list: #for rows 
    for i in range(0,totalcols): 
     try: 
      value=sheet.cell_value(j,i) 

      sheet1.write(k,i,value) 
     except IndexError: 
      continue 
    k=k+1 
book1.save("Gibberish_Removed.xls") 
+0

Sie kopieren das Buch nach book1. Möchten Sie kein neues leeres Buch erstellen, anstatt "copy (book)" aufzurufen? – MaxNoe

Antwort

0

Das Problem scheint in

book1 = copy(book) 
sheet1 = book1.get_sheet(0) 

und dann

sheet1.write(chosen_values) #chosen value is value at index, (k,i) 

Dies wird nur überschreiben Sie den gewählten Wert (k, i) zu sein, aber da Sie kopiert sheet1 aus Buch, wird es auch andere Zeilen haben. Sie müssen mit einem leeren Blatt beginnen1.

0

Ich denke, Sie sollten "xlwt" -Paket für Ihr Schreiben verwenden.

import xlrd 
from xlwt import Workbook 

book = xlrd.open_workbook("file.xlsx") 
sheet = book.sheet_by_index(0) 
temp_list = [1, 4, 5, 6, 7, 8, 9, 10, 15, 19, 26] 
book1 = Workbook() 
sheet1 = book1.add_sheet('test', cell_overwrite_ok=True) 
total_cols = sheet.ncols 
k = 0 
for j in temp_list: #for rows 
    for i in range(0, total_cols): 
     value = sheet.cell_value(j-1,i) 
     sheet1.write(k, i, value) 
    k += 1 
book1.save("Gibberish_Removed.xls") 
Verwandte Themen