通过python复制excel行

我基本上有一个Excel文件,在特定的表中有以下条目

row[0][0]=hello row[1][0]=bye row[2][0]=hi 

我想将这三行复制到原始表单中存在的行数,以便修改后的表单具有以下内容。

 row[0][0]=hello row[1][0]=bye row[2][0]=hi row[3][0]=hello row[4][0]=bye row[5][0]=hi row[6][0]=hello row[7][0]=bye row[8][0]=hi 

我的代码如下。

 from xlutils.copy import copy from xlrd import open_workbook import xlwt book=open_workbook("/Users/tusharbakaya/Desktop/test.xlsx") book1=copy(book) sheet=book.sheet_by_name('Sheet1') sheet1=book1.get_sheet(0) totalrows=sheet.nrows print totalrows for j in range(0,totalrows): for i in range(0,totalrows): row=sheet.cell_value(i,0) sheet1.write(j+totalrows,0,row) i+=1 j+=totalrows book1.save("/Users/tusharbakaya/Desktop/test1.xls") 

但是,我得到以下输出

 row[0][0]=hello row[1][0]=bye row[2][0]=hi row[3][0]=hello row[4][0]=hello row[5][0]=hello row[6][0]=hello 

不知道为什么发生这种情况。

问题是,即使你改变循环内部的循环variablesj ,这个变化也会被range()函数中的下一个值覆盖。

显示这个的一个例子 –

 >>> for i in range(10): ... print(i) ... i = 1000 ... 0 1 2 3 4 5 6 7 8 9 

但是你的代码是依赖于这种情况发生的,而应该尝试设置为i + j * totalrows(每次)并从1开始j。 而且内部循环内部的逻辑也有点错误,您还应该依赖于ivariables来设置新工作簿中的值。

所以代码会变成 –

 from xlutils.copy import copy from xlrd import open_workbook import xlwt book=open_workbook("/Users/tusharbakaya/Desktop/test.xlsx") book1=copy(book) sheet=book.sheet_by_name('Sheet1') sheet1=book1.get_sheet(0) totalrows=sheet.nrows print totalrows for j in range(0,totalrows): for i in range(0,totalrows): row=sheet.cell_value(i,0) sheet1.write(i+(j*totalrows),0,row) book1.save("/Users/tusharbakaya/Desktop/test1.xls") 

或者你可以使用while循环而不是循环和

while循环的示例 –

 from xlutils.copy import copy from xlrd import open_workbook import xlwt book=open_workbook("/Users/tusharbakaya/Desktop/test.xlsx") book1=copy(book) sheet=book.sheet_by_name('Sheet1') sheet1=book1.get_sheet(0) totalrows=sheet.nrows print totalrows j,k = 0, 0 while k < totalrows for i in range(0,totalrows): row=sheet.cell_value(i,0) sheet1.write(i+j,0,row) j+=totalrows k += 1 book1.save("/Users/tusharbakaya/Desktop/test1.xls")