前言
在学习或工作中,我们有时需要将多个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表