不是专业码农。
朋友课题遇到一个问题:调研了90个人,有14个sheet的数据(每个人的数据在14个sheet里面都有),位置也相同,比如张三的数据,在14个sheet里面都是在18行。
需要把其中16个人的数据拿出来,还是这14个sheet都要求抽出同样行的数据(类似问题,另一个同事拿来了另外80个人同类型数据,要合并到一个表里)。
类似下图,

pip install xlwings 安装不多说了。
下面是代码,也实现了跳行复制。
#给了两个函数,一个是不跳行复制,一个跳行复制
import xlwings as xw
oldpath=r'liwo\hebing\old.xlsx' #需要复制的表
newpath=r'liwo\hebing\new.xlsx' #要复制到的新表
wbold=xw.Book(oldpath) #打开旧表
wbnew=xw.Book(newpath)
def copy0(start,end,startrow,sheetnum):
#(要复制的起始行,终止行,粘贴到新表的起始行,循环多少个sheet)
for j in range(start,end):
i = 0
while i <= sheetnum:
info = wbold.sheets[i].used_range
nrows = info.last_cell.row
ncols = info.last_cell.column
a1=wbold.sheets[i].range((j,1),(j,ncols)).value
wbnew=xw.Book(newpath)
wbnew.sheets[i].range((startrow,1),(startrow,ncols)).value=a1
i +=1
startrow +=1
#copy0(4,14,4,13) #(复制旧表4-14行的数据,粘贴到新表第4行开始粘贴,循环14个sheet)
def copy1(startrow,sheetnum): #(新表第几行开始粘贴,几个sheet表要做这个事)
for j in [3,4,5,6,7]: #要复制哪几行,复制第3,4,5,6,7行
i = 0
while i < sheetnum:
info = wbold.sheets[i].used_range
nrows = info.last_cell.row
ncols = info.last_cell.column
a1=wbold.sheets[i].range((j,1),(j,ncols)).value
wbnew=xw.Book(newpath)
wbnew.sheets[i].range((startrow,1),(startrow,ncols)).value=a1
i +=1
startrow +=1
copy1(4,13) #新表第4行开始粘贴,循环14个sheet
找了一天教程,大家都是从头讲起.....头大 。
希望能解决有次问题的,没有代码基础的同学们。

7159

被折叠的 条评论
为什么被折叠?



