有2个表格,一个是全部数据all.xls,一个是从全部数据里面抽出的部分数据bufen.xls,工作簿都是“sheet1”.现在把修改后的部分数据覆盖到全部数据的表格里面。
表格的结构如下:
代码如下:
import xlrd
from xlutils.copy import copy
wb=xlrd.open_workbook('all.xls') #打开文件,只能读取
wb2=xlrd.open_workbook('bufen.xls') #打开文件,只能读取
ws=wb.sheet_by_name('sheet1') #打开all.xls 工作表sheet1,只读方式
ws2=wb2.sheet_by_name('sheet1') #打开bufen.xls 工作表sheet1,只读方式
row_num=ws.nrows #all.xls 工作表的行数
row2_num=ws2.nrows #bufeng.xls 工作表的行数
nwb=copy(wb) #all.xls 为下面复制拷贝一个文件
nws=nwb.get_sheet('sheet1') #得到拷贝文件的工作表,为了修改
for i in range(1,row2_num): #行号从第二行开始到最后一行
for j in range(1,row_num):
if ws2.cell(i,4).value==ws.cell(j,4).value:
k=ws2.cell(i,10).value
l=ws2.cell(i,11).value
m=ws2.cell(i,12).value
n=ws2.cell(i,13).value
o=ws2.cell(i,14).value
p=ws2.cell(i,15).value
q=ws2.cell(i,16).value
r=ws2.cell(i,17).value
s=ws2.cell(i,18).value
t=ws2.cell(i,19).value
u=ws2.cell(i,20).value
v=ws2.cell(i,21).value
nws.write(j,10,k)
nws.write(j,11,l)
nws.write(j,12,m)
nws.write(j,13,n)
nws.write(j,14,o)
nws.write(j,15,p)
nws.write(j,16,q)
nws.write(j,17,r)
nws.write(j,18,s)
nws.write(j,19,t)
nws.write(j,20,u)
nws.write(j,21,v)
nwb.save("all2.xls")
print("运算完成,请打开all2.xls")