如何将多个Execl表格中的数据汇总到一个表中?


前言

在学习或工作中,我们有时需要将多个Execl表格的数据需要汇总到一个Execl表中,小编在学习中也遇到了这个需求,需要将一个文件夹下所有Execl表汇总到一个表中,下面看看如何实现?


提示:前提是所有表的数据格式是一样的。

一、如何将多个Execl表格中的数据汇总到一个表中?

首先:将要汇总的所有Execl表格放入同一个文件夹下

二、使用步骤

1.全部代码

代码如下(示例):

# encoding: utf-8

'''
本代码的作用是将多个表格合并为一个表格。
'''

import os
import xlrd
import xlwt
import logging
import pandas as pd
import datetime
# 设置logging.basicConfig()方法的参数和配置logging.basicConfig函数
FORMAT = '[%(funcName)s: %(lineno)d]: %(message)s'
LEVEL = logging.INFO
logging.basicConfig(level = LEVEL, format=FORMAT)

excel_content = []
output_file = 'test/huizong.xls'  #输出汇总表路径

# 打开文件夹,获取表格信息
def get_obj_list(dir_name):
    filelist = os.listdir(dir_name)
    for item in filelist :
        item = dir_name + item
        if os.path.isfile(item) and (item[-4:] == '.xls' or item[-5:] == '.xlsx' or item[-5:] == '.xlsm'):
            if item.find("$") != -1:
                continue
            merge_excel(item)
        elif os.path.isdir(item):
            item = item + '/'
            get_obj_list(item)

# 获取单个表格的信息
def merge_excel(excelName):
    excelfd = xlrd.open_workbook(excelName)
    for sheet in excelfd.sheet_names():
        if sheet == '同行网站关键词':
            print (excelName)
            sheet_content = excelfd.sheet_by_name(sheet)
            header = sheet_content.cell(0, 0).value
            if header == u'关键词':   # 去掉标题行
                row = 1
            else:
                row = 0
            while row < sheet_content.nrows:
                keywords    = sheet_content.cell(row, 0).value #这里是3列表格数据,行数不限制,想要读取多列可增加变量数。
                pc  = sheet_content.cell(row, 1).value
                num = sheet_content.cell(row, 2).value
                item = [keywords, pc, num]
                excel_content.append(item)
                row += 1


# 将获取到的表格信息保存到一个表格中
def save_info():
    workbook = xlwt.Workbook(encoding = 'ascii')
    worksheet = workbook.add_sheet('同行网站关键词')
    style = xlwt.XFStyle() # 初始化样式
    font = xlwt.Font() # 为样式创建字体
    font.name = 'Arial'
    #font.bold = True # 黑体
    font.underline = True # 下划线
    font.italic = True # 斜体字
    style.font = font # 设定样式
    worksheet.write(0, 0, '关键词')
    worksheet.write(0, 1, 'PC指数')
    worksheet.write(0, 2, '排名')

    for i, item in enumerate(excel_content):
        for j in range(3):  #3列,对应上面的列数
            worksheet.write(i+1, j, item[j])
    workbook.save(output_file) # 保存文件


def execl():
    if os.path.exists(output_file):
        os.remove(output_file)

    get_obj_list('./test/')
    save_info() #这里已经实现多个表格汇总成一个表
    stexcel = pd.read_excel('./test/huizong.xls') #读取汇总表
    stexcel = stexcel.drop_duplicates()		#对表中重复数据进行去重
    stexcel.sort_values(by='PC指数', inplace=True, ascending=False)  #按PC指数进行倒序排序
    filename = str(datetime.datetime.now().strftime('%Y%m%d-%H-%M-%S'))
    stexcel.to_excel("./同行网站关键词" + filename + ".xls")  # 最终生成execl表


if __name__ == "__main__":
     execl()

总结

这里对文章进行总结:
1.读取文件下所有execl表
2.进一步读取每个表中的数据
3.将所有表的数据进行汇总保存
4.对表进行去重并按照“PC指数”倒序排列
5.生成最终execl表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值