使用使用 Python 合并多个格式一致的合并多个格式一致的 Excel 文件文件(推荐推荐)
主要介绍了使用 Python 合并多个格式一致的 Excel 文件,本文给大家介绍的非常详细,具有一定的参考借鉴价
值,需要的朋友可以参考下
一一 问题描述问题描述
最近朋友在工作中遇到这样一个问题,她每天都要处理如下一批 Excel 表格:每个表格的都只有一个 sheet,表格的前两行为
表格标题及表头,表格的最后一行是相关人员签字。最终目标是将每个表格的内容合并到一个 Excel 表格中,使之成为一张表
格。在她未咨询我之前,每天复制粘贴这一类操作占用了她绝大部分时间。表格样式如下:
二二 需求分析需求分析
根据她的描述,最终需求应该是这样的:在这一批表格中选取任意一个表格的前两行作为新表格的标题与表头,将这两行内容
以嵌套列表的形式插入一个名为 data 空列表中。取每张表格的第3至倒数第二行,剔除空白行的内容。并将所有表格的内容
以子列表的方式依次插入 data 列表中。任取一表格的最后一行以子列表的方式插入 data 列表中。最后将 data 列表的内容写
入一个新的 Excel 表格中。
三三 查阅资料查阅资料
通过几分钟的上网查询,得出以下结论:
3.1 通过 xlrd 和 xlsxwriter 模块即可解决次需求;
3.2 之所以使用 xlrd 和 xlsxwriter 是因为: xlrd擅长读取 Excel 文件,不适合写入,用 xlsxwriter 来进行大规模写入 Excel 表格
不会出现报错。
四四 编码编码
一切以解决当前问题为向导,说干就干。 coding … …
# -*- coding:utf-8 -*-
import os, xlrd, xlsxwriter
source_dir = r'input'
new_execl = "All in one.xlsx"
raw_excels = os.listdir(source_dir)
keyword = "油站经理" # 除包括此关键字的行均插入
data = []
filename = os.path.join(source_dir, raw_excels[0])
wb = xlrd.open_workbook(filename)
sheet = wb.sheets()[0]
data.append(sheet.row_values(0))
data.append(sheet.row_values(1))
for excel in raw_excels:
filename = os.path.join(source_dir, excel)
wb = xlrd.open_workbook(filename)
sheet = wb.sheets()[0]
for row_num in range(2, sheet.nrows):
row_values = [str(i) for i in sheet.row_values(row_num)]
if len(''.join(row_values)) and (keyword not in ''.join(row_values)):
data.append(sheet.row_values(row_num))
data.append(sheet.row_values(sheet.nrows-1))
new_wb = xlsxwriter.Workbook(new_execl)
worksheet = new_wb.add_worksheet()
font = new_wb.add_format({"font_size":11})
for i in range(len(data)):
for j in range(len(data[i])):
worksheet.write(i, j, data[i][j], font)
new_wb.close()