python与execl的读写

[code=python]
#复制execl中的部分数据到另一份execl中的相同位置
import xlrd
import xlwt
import xlutils.copy
path1="E:\\测试\\系统1.xlsx"
path2="E:\\测试\\系统2.xlsx"
workbook1 = xlrd.open_workbook(path1)
workbook2 = xlrd.open_workbook(path2)

print(workbook1.sheet_names())
sheet1 = workbook1.sheet_by_name('应用层安全') # 根据sheet索引或者名称获取sheet内容
print (sheet1.name,sheet1.nrows,sheet1.ncols) # sheet的名称,行数,列数
cols0 = sheet1.col_values(0) # 获取第1列内容,用例编号
cols9 = sheet1.col_values(9) # 获取第9列内容,产品状态
cols10 = sheet1.col_values(10) # 获取第10列内容,举证说明 记得需要打开所有隐藏才能正确看到
a=[]
for x,y,z in zip(cols0,cols9,cols10):
	print(x,y,z)
	a.append([x,y,z])
	
workbook2 = xlrd.open_workbook(path2)
sheet2 = workbook2.sheet_by_name('Sheet1')
cols02 = sheet2.col_values(0) # 获取第1列内容,用例编号
cols92 = sheet2.col_values(14) # 获取第9列内容,产品状态
cols102 = sheet2.col_values(15) # 获取第10列内容,举证说明 记得需要打开所有隐藏才能正确看到
b=[]
for x,y,z in zip(cols02,cols92,cols102):
	print(x,y,z)
	b.append([x,y,z])
#以上已经获取了对应的两份文件的数据信息,下面将第一列的数据相同的对应上,不同的暂时不管	
#原始数据	
print(b)	
e=[]
f=[]
for x,y,z in a:
	e.append(x)
	
for x,y,z in b:
	f.append(x)
#查找对应位置上的数据
for x,y in enumerate(e):
        if e[x] in f:
                q=f.index(e[x]) #源数据在目标数据中的索引位置
                b[q][1]=a[x][1]	
                b[q][2]=a[x][2]
#修改后的数据
print(b)
#将修改后的数据写入到目标文件的对应位置,由于Python版本问题,写入需要把目标文件降到2003版本xls	
path3="E:\\测试\\系统3.xls"	
workbook3 = xlrd.open_workbook(path3,formatting_info=True)
workbook4 = xlutils.copy.copy(workbook3)
wd = workbook4.get_sheet(0)
		
for x in range(len(b)):
	wd.write(x, 14, b[x][1])
	wd.write(x, 15, b[x][2])	
			
workbook4.save(path3)

[/code]

  

posted @ 2016-09-05 23:40  从零开始的程序员生活  阅读(370)  评论(0编辑  收藏  举报