工作中要求收集每个人的信息并合并到一个excel文件里。
发出来的模板表格都是xls格式的,所以收集到的模板也都是xls格式的。
简简单单的工具,没有做什么优化和容错处理,仅仅实现了我要的功能而已。
思路:选择文件夹,合并文件夹里所有文件到新文件里,删除不需要的行。
主函数包括2个函数:合并文件,删除行
1.通过合并文件的函数MergeXlsFile获取dirPath
2.传给删除行的函数del_rows
python">if __name__ == "__main__":
dirPath=MergeXlsFile.MergeFile()
del_rows.delRows(dirPath)
合并文件MergeXlsFile函数:
1.通过对话框选择文件夹
2.创建新文件保存合并后的结果
3.遍历文件夹,逐个读取文件
4.追加到新文件里并保存
5.返回dirPath供删除行函数使用
python"># 功能:选择文件夹路径,合并文件夹下所有xls文件
import tkinter
from tkinter import filedialog
import os
import openpyxl
import pandas
def MergeFile():
# 创建窗口,初始化
root = tkinter.Tk()
# 打开文件夹选择的对话框
root.withdraw()
# 弹出对话框选择文件夹
dirPath = filedialog.askdirectory()
# 创建新文件用于保存合并后的结果
wb = openpyxl.Workbook()
# 合并到新exce第一个sheet页(活动页)
ws = wb.active
# 遍历文件夹,读取文件,追加到新文件中
for file in os.listdir(dirPath):
dfs = pandas.read_excel(dirPath + "\\" + file, sheet_name=0)
# dataframe转化为列表
for df in dfs.values.tolist():
ws.append(df)
wb.save(dirPath + r"\汇总.xlsx")
return dirPath
删除行del_rows函数:
1.通过传递的dirPath找到刚刚合并后的表格,【汇总】表
2.找到【汇总】你需要操作的那个sheet页
3.遍历这个【汇总】表,删除空白行以及原表格中的表头那行
4.【汇总】表保存
python"># 功能:删除多余的行(空白行和一些不需要的行)
import openpyxl
def delRows(dirPath):
# 获取一个Sheet表,找到最大行
wb=openpyxl.load_workbook(dirPath+r"\汇总.xlsx")
sheet=wb["Sheet"]
rows=sheet.max_row
# 遍历所有行,找到不符合要求的,删除改行并保存
for row in range(rows,0,-1):
data1=sheet.cell(row,1)
if data1.value ==None or data1.value=="姓名":
sheet.delete_rows(row)
wb.save(dirPath+r"\汇总.xlsx")