在Python中使用xlrd和xlwt(如何复制整行)
理想情况下,我想从另一个Excel工作表中复制整行数据。但是,我的问题是,当我把这一行数据放到一个列表里后,怎么把它放到另一个Excel工作表中呢?我希望它看起来一模一样。我的目标是把任意一种数据格式放到一个空的Excel工作表里,比如说放到第一行。我希望这个过程能快一点,因为我打算扩展到1万行。
数据可以有两种格式:
data = [number:6842.0, xldate:41771.0, xldate:0.005555555555555556,
text:u'Hello World']
data = [6842.0, 41771.0, 0.005555555555555556, u'Hello World']
我的代码:
import xlwt
wb = xlwt.Workbook()
data = [6842.0, 41771.0, 0.005555555555555556, u'Hello World'] #either format
sheet1 = wb.add_sheet("MyData")
sheet1.write(1,0,data)
wb.save('C:\\Python27\\helloworld.xls')
这是我从Excel文件中获取数据的方式:
from xlrd import *
import xlwt
book = open_workbook(filename= 'C:\Users\ssheikh\Desktop\CopyFile.xls')
sh = book.sheet_by_index(0)
workbook = xlwt.Workbook()
sheet = workbook.add_sheet("MyData")
b = xldate.xldate_from_date_tuple((2014,5,12), 0)
c = xldate.xldate_from_date_tuple((2014,5,13), 0)
mylist = []
listc = []
listd = []
for i in xrange(0,sh.nrows):
if sh.cell_value(rowx=i, colx =1) == b:
mylist.append(i)
listd.append(sh.row_values(i))
print 'the number', b ,'was found in row=', i, 'and column =0'
if sh.cell_value(rowx=i,colx =1) == c:
listc.append(i)
listd.append(sh.row(i))
#mylist[0] #upper limit of my rows
#listc[-1] #lower limit of my rows
listd # this has all of my rows that i want to put in a new excel file
1 个回答
3
我在xlwt里没有找到像xlrd中的row_values
那样的write_row
方法。这里只有sheet.write
这个工作表对象的方法,或者如果需要的话可以用write_rich_text
。
for row_index, row in enumerate(listd):
for col_index, cell_value in enumerate(row):
sheet.write(row_index, col_index, cell_value)
workbook.save("myData.xls")
如果你需要使用特殊的样式,可以在write
方法中使用可选的style
参数。