时间:2021-05-23
最近朋友在工作中遇到这样一个问题,她每天都要处理如下一批 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, xlsxwritersource_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()半小时后,大功告成!
5.1 下载安装 Python3.X(具体安装步骤自己查一下);
5.2 安装 xlrd 和 xlsxwriter 模块,参考命令: pip install xlrd xlsxwriter。开始此步骤之前可能需要先升级pip,具体升级命令系统会提示,复制粘贴即可;
5.3 新建一个名为 input 的文件夹,将需要合并的文件复制到这个文件夹下;
5.4 把以上代码复制以 excels_merge.py 的文件名保存在与 input 文件夹同级别的文件夹中,双击鼠标稍后即可。如果没有关联打开方式,那么就在资源管理器的地址栏输入“cmd”,在打开的命令窗口输入:python excels_merge.py。生成的 All in one.xlsx 即为合并后的新 Excel 文件。
6.1 [str(i) for i in sheet.row_values(row_num)]这一部分代码实现了将列表内的元素统一转化为字符串,主要是为了下一行代码实现将列表转换为字符串;
6.3 此的脚本不对源 Excel 文件进行任何操作,可是放心使用;
6.4 以上脚本就是随手一写,都没有优化,以后如果数据量太大估计会考虑优化,希望大家多提意见或建议;
6.5 源代码可以访问我的同名 CSDN 博客及 GitHub 获取。
总结
以上所述是小编给大家介绍的使用 Python 合并多个格式一致的 Excel 文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
起因:有一批数据需要每个月进行分析,数据存储在excel中,行标题一致,需要横向合并进行分析。数据示意:具有多个代码:#-*-coding:utf-8-*-""
用C#导出来excel,打开时总是有个提示:您尝试打开的文件“test.xls”的格式与文件扩展名指定的格式不一致。打开文件前请验证文件
利用Python,将多个excel文件合并为一个文件思路利用pythonxlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将
这几天一直都弄这个文件都没事不知道怎么回事今天打开excel的时候弹出一个提示“A.xls”(我的文件名)的格式与文件扩展名指定的格式不一致。打开文件前请验证文
word合并邮件照片的方法: 1、首先要准备好图片,图片大小和分辨率应一致,并把图片文件全部放到数据源同一个文件夹下。 2、在数据源表格(一般为Excel表