python下复制excel某行数据,xlwings

不是专业码农。

朋友课题遇到一个问题:调研了90个人,有14个sheet的数据(每个人的数据在14个sheet里面都有),位置也相同,比如张三的数据,在14个sheet里面都是在18行。

python下复制excel某行数据,xlwings_第1张图片需要把其中16个人的数据拿出来,还是这14个sheet都要求抽出同样行的数据(类似问题,另一个同事拿来了另外80个人同类型数据,要合并到一个表里)。

类似下图,

python下复制excel某行数据,xlwings_第2张图片

 

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

找了一天教程,大家都是从头讲起.....头大 。

希望能解决有次问题的,没有代码基础的同学们。

你可能感兴趣的:(python,python,开发语言,xlwings)