程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(1)

python实现多个excel(含多个sheet)合并的代码

发布于2019-08-17 21:37     阅读(943)     评论(0)     点赞(2)     收藏(0)


import xlrd
import xlwt
import xlsxwriter
#打开excel表格
def openexcel(fname):
    fh=xlrd.open_workbook(fname)
    return fh
#获取excel中所有的sheet
def getSheet(fh):
    return fh.sheets()
#获取sheet数
def getSheetNum(fh):
    res=0
    sh=fh.sheets()
    for sheet in sh:
        res+=1
    return res
#获取每个sheet的行数
def getNrow(fh,i):
    table=fh.sheets()[i]
    return table.nrows
#获取每行的元素
def getncols(fh,i):
    table=fh.sheets()[i]
    num=table.nrows
    data=[]
    for i in range(num):
        rdata=table.row_values(i)
        data.append(rdata)
    return data
if __name__=='__main__':
#表头数组(根据具体情况选择是否使用)
    excelhead=["学号","姓名","成绩"]
# 表格所在位置
    filelocation="/Users/apple/Desktop/python/Excel/"
#表格的后缀即形式
    fileform="xlsx"
#合并后的表格存放的位置
    filedestination="/Users/apple/Desktop/python/Excel/result.xlsx"
#从文件夹中读取有多少个文件需要合并
#首先查找默认文件夹下有多少文档需要整合
    import os
    filearray1=os.listdir(filelocation)
    print(filearray1)
    fileNumber=len(filearray1)-1
    filearray=[]
    for i in range(0,fileNumber):
        fway=filelocation+filearray1[i+1]
        filearray.append(fway)
    print("在"+filelocation+"中有"+str(fileNumber)+"个"+fileform+"文件")
#读取数据:rvalue第一重为文件名,第二重为sheet,第三重为行元素,第四重为每个单元格元素
    rvalue = [None]*fileNumber
    for k in range(fileNumber):
        fh=openexcel(filearray[k])
        num=getSheetNum(fh)
        rvalue[k]=["sheet"]*num
        for i in range(0,num):
            rvalue[k][i]=getncols(fh,i)
#存储数据:四层for循环赋值,由内到外:单元格->行->文件->sheet
    import xlrd
    import xlwt
    import xlsxwriter
    res=xlsxwriter.Workbook(filedestination)
    fh=openexcel(filearray[0])  
    for w in range(getSheetNum(fh)):
        ws=res.add_worksheet("sheet"+str(w+1))
        q=-1
        for k in range(fileNumber):
            for i in range(len(rvalue[k][w])):
                q+=1
                for j in range(len(rvalue[k][w][i])):
                    if rvalue[k][w][i][j]:
                        x=rvalue[k][w][i][j]
                        ws.write(q,j,x)                    
    res.close()
    print("合并成功,合并后的文件所在位置:"+filedestination)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76


所属网站分类: 技术文章 > 博客

作者:胡龙茶

链接:https://www.pythonheidong.com/blog/article/48474/4bddaeeb6a34603c80fa/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

2 0
收藏该文
已收藏

评论内容:(最多支持255个字符)