嘿, 各位好呀~紧接着上一篇, , 也就是那第三篇提到学会了Excel分批全部行读取, 今儿个咱要学办公自动化堪称神奇的技能, 啥技能? Excel批量合并!
不论你拥有十个表格, 还是一百个表格, 亦或是一千个表格, 代码都能够一键自动将它们合并成为一个汇总表格, 自此告别手动开展复制粘贴操作, 效率提升至原来的一百倍!
一、这节课能够实现些什么呢? 第二、前期准备(必须要做)文件夹: C:\excel\test放进所有准备合并的Excel(格式必定得一样: 姓名、成绩等等)。
3、库已安装(上一篇已装,不用重复)
三、关键想法(新手轻松明白), 创建一个空白的总的表格, 先写入表格头部(姓名、成绩等等), 循环遍历读取每一个 Excel, 将每一个 Excel 的全部数据, 逐行依次添加到总的表格里, 保存最终的总的表格, 四、完整的代码(复制之后直接运行, 不会报错)
import os from openpyxl import Workbook, load_workbook # ====================== 【必须改这里】 ====================== path = "C://excel//test//" # 你的表格路径 # ============================================================ # 1. 创建一个新的总表 wb_total = Workbook() ws_total = wb_total.active ws_total.title = "合并总表" # 2. 写入表头(只写一次) ws_total["A1"] = "姓名" ws_total["B1"] = "成绩" current_row = 2 # 从第2行开始放数据 # 3. 遍历所有Excel文件 for file_name in os.listdir(path): if file_name.endswith(".xlsx"): print(f"正在合并:{file_name}") full_path = path + file_name wb = load_workbook(full_path) ws = wb.active # 4. 读取这个表格里的【所有行】 for row in range(2, ws.max_row + 1): name = ws[f"A{row}"].value score = ws[f"B{row}"].value # 5. 写入总表 ws_total[f"A{current_row}"] = name ws_total[f"B{current_row}"] = score current_row += 1 # 往下一行 # 6. 保存最终合并后的总表 wb_total.save("已合并总表.xlsx") print("========================================") print(" 全部合并完成!生成:已合并总表.xlsx")五、运行效果
六、代码关键点明确指出(小白务必要看), 等于2意味着数据是从第2行开始进行书写的情况当中(这里需要清楚第1行是作为表头的), 对于每一行而言是在范围从2开始直到ws的值加上1这个区间来进行读取的, 去读取每个表格里的所有数据行, 并且在每写一条数据之后, 会自动向下移动进一行, 还有七、常见问题。
1、合并后数据错位
克服: 全部 Excel 的栏都得相同(A 栏为姓名, B 栏是成绩)。
2、表头重复出现
解决:表头只在总表里写一次,不要循环
3、只合并了部分文件
解决:路径正确,文件必须是 .xlsx
本篇所作的合并总结, 是要读取所有的 Excel 文件, 这其中还包括读取所有的行, 之后要写入总表, 几百个表格能够一键合并, 不会出现复制情况, 也不会出现粘贴情况, 并保证不出错, 这属于办公自动化里最常用的核心技能!