Fast python batch merge excel file

Brief introduction

If there are many excel files need to be merged into an Excel file, use the copy and paste operations to be very painful, then you can use Python to automate batch.

The need to merge the Excel file into the same folder.

Install the required libraries

python environment Python3

pip3 install xlrd
pip3 install xlsxwriter
Code
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Aiker Zhao
# @Date  : 2019/5/4 9:34 AM
# @File  : megerexcel.py
# @Desc  : 
import xlrd
import xlsxwriter
import os

path = "/Users/Aiker/Documents/xzexcel/1-6/"

def get_allxls():  # 获取excel文件列表
    all_xls = []
    for f in os.listdir(path):
        f_name = path + f
        all_xls.append(f_name)
    return all_xls

def open_xls(file):  # 打开一个excel
    fh = xlrd.open_workbook(file)
    return fh

def getsheet(fh):  # 获取excel表中的所有sheet
    return fh.sheets()

def getnrows(fh, sheet):  # 获取sheet表中的行数
    table = fh.sheets()[sheet]
    return table.nrows

def getFilect(file, shnum):  # 读取文件内容并返回内容
    fh = open_xls(file)
    table = fh.sheets()[shnum]
    num = table.nrows
    for row in range(num):
        rdata = table.row_values(row)
        datavalue.append(rdata)
    return datavalue

def getshnum(fh):  # 获取sheet表的个数
    x = 0
    sh = getsheet(fh)
    for sheet in sh:
        x += 1
    return x

if __name__ == '__main__':
    allxls = get_allxls()  # 定义要合并的excel文件列表
    datavalue = []
    for fl in allxls:  # 存储所有读取的结果
        fh = open_xls(fl)
        x = getshnum(fh)
        for shnum in range(x):
            print("正在读取文件:" + str(fl) + "的第" + str(shnum) + "个sheet表的内容...")
            rvalue = getFilect(fl, shnum)
    endfile = "/Users/Aiker/Documents/xzexcel/行政工作统计19-6.xls"  # 合并后的文件
    wb1 = xlsxwriter.Workbook(endfile)

    ws = wb1.add_worksheet()
    for a in range(len(rvalue)):
        for b in range(len(rvalue[a])):
            c = rvalue[a][b]
            ws.write(a, b, c)
    wb1.close()
    print("excel合并完成")

Run the script:

python3 megerexcel.py

Guess you like

Origin blog.51cto.com/m51cto/2426134
Recommended