【办公自动化】使用Python批量处理Excel文件并转为csv文件

简介: 【办公自动化】使用Python批量处理Excel文件并转为csv文件

前言


       今天一位正在国企实习的朋友突然私信找到我,说领导派了个离谱的活,大概就是需要将一个大文件夹里面的excel文件进行简单处理后再转为csv格式的文件,然后这个大文件里面有五个二级文件夹,这五个二级文件夹里面都有一个三级文件夹,然后每个三级文件夹里面都有14-18个四级文件夹,每个四级文件夹里面有31个excel文件和极少量csv文件夹。听起来层级是不是特别饶,而且加起来总共有2000多个excel文件。处理的话是将表格中的时间列格式进行转换,最后存储为csv文件。这要是人工一个一个文件弄,这得累死人,这种重复的工作当然是交给脚本啦!


一、Python处理Excel


  • Python处理Excel的好处


1.批量操作:当要处理众多Excel文件时,例如出现重复性的手工劳动,那么使用Python就可以实现批量扫描文件、自动化进行处理,利用代码代替手工重复劳动,实现自动化,是Python第一个比Excel强大的地方

2.大型文件,当Excel文件超过几十兆、甚至上百兆时,打开文件很慢、处理文件更加慢,这时候若使用Python,会发现处理几十兆、几百兆甚至几GB都是没有问题的

3.当使用Excel进行复杂的计算时,会使用VBA,但是VBA本身是过时并且复杂的语言,Python是当前最简单且容易实现的一门语言,用Python能够处理比VBA难度更高的业务逻辑

4.Python是通用语言,不仅可以处理Excel,使用Python就可以得到很多额外的功能,例如:爬虫、发布网页的Web服务、与数据库进行连接、同时结合word和PPT进行处理、加入定时任务处理、人工智能分析等,各种额外的功能,这是Excel和VBA所不具备的


  • Python处理Excel主要有三大类库


1.pandas:是Python领域非常重要的,用于数据分析和可视化的类库,在处理Excel中,90%可以利用pandas类库就可以搞掂,利用pandas就可以读取Excel、处理Excel和输出Excel,但是pandas也有缺点,就是无法做到格式类,例如Excel中合并单元、大量复杂的样式(看起来很精美)的时候,用pandas无法搞掂,此时,依然是使用pandas结合openyxl、xlwings来搞掂需求

2.openpyxl:若电脑上未安装office时,也可以使用openpyxl,这个类型可以运行在linux上,并且也可以实现操作大部分Excel格式和样式的功能,使用它配合pandas,也可以完成大部分场景的需求

3.xlwings:比openyxl更加强大,只能运行在Windows或者Mac系统,并且该系统中必须安装了office才能运行,xlwings的原理,就是基于当前系统已经安装好的office软件,来进行功能的拓展来操作Excel


  • 使用pandas的时候,经常会结合其他类库,来完成更加复杂的功能


requests, bs4:可以完成爬虫的功能

flask:可以做网页,把表格展示在网页上

Matplotlib:读取表格后,进行可视化

sklearn:进行复杂的数据分析时,也可以结合机器学习Sklearn把读取的Excel数据,进行数据分析和机器学习

Python-docx:也可以结合Python-docx类库,实现Excel和word的互通

smtplib:也可以使用smtplib,讲Excel数据发送邮件出去


  • 开发环境


操作系统:使用windows, mac都可以


Python版本:系统中需要安装Python3.6以上的版本,Python2已经过期不建议使用,Python3.6以前的版本功能相对弱,最好就是采用Python3.6以上的版本


开发工具:有两个可以选择,jupyter notebook,是个网页编辑器,可以运行Python,常常用于交互性、探索性的开发;pycharm,用于成熟脚本,或者web服务的一些开发;这两个工具可以随意选择。


二、批量处理Excel文件并转为csv文件


技术工具:


Python版本:3.9


代码编辑器:jupyter notebook


处理思路


写代码之前我们首先需要针对这个需求在脑子里做出一个流程图出来,大概就是使用os库层层遍历文件夹,当遍历到excel文件这一级路径时,我们使用pandas读取excel文件,将time时间列转为时间序列类型并符合要求格式,接着使用pandas将处理后的文件保存为csv文件并输出在同一路径下,最后再将原始excel文件进行删除即可。


处理过程


首先看一下文件夹路径结构


然后我写的脚本与sample_data在同一级


具体脚本代码如下:

import pandas as pd
import os
from datetime import datetime
# 基础文件夹路径
base_dir = './sample_data'
# 循环遍历到每一个excel文件并修改其文件类型为csv
for first_floor in os.listdir(base_dir):  # 遍历第一层
    second_floor_dir = base_dir+'/'+first_floor  # 获取第二层的文件路径
    for second_floor in os.listdir(second_floor_dir):  # 遍历第二层
        third_floor_dir = base_dir+'/'+first_floor+'/'+second_floor  # 获取第三层的文件路径
        for third_floor in os.listdir(third_floor_dir):  # 遍历第三层
            fourth_floor_dir = base_dir+'/'+first_floor+'/'+second_floor+'/'+third_floor  # 获取第四层的文件路径
            for file_dir in os.listdir(fourth_floor_dir):  # 遍历第四层
                file_name = file_dir.split('.')[0]  # 获取excel文件名称
                file_suffix = file_dir.split('.')[1]  # 获取excel文件后缀
                print(fourth_floor_dir)
                if file_suffix=='xlsx' or file_suffix=='xls': # 判断文件是否是excel文件
                    df = pd.read_excel(fourth_floor_dir+'/'+file_dir)  # 读取excel文件
                    df['Time'] = pd.to_datetime(df['Time'])
                    df['Time'] = df['Time'].apply(lambda x:datetime.strftime(x,'%Y-%m-%d %H:%M:%S'))
                    df.to_csv(fourth_floor_dir+'/'+file_name+'.csv',index=False)  # 将excel文件保存为csv文件
                    os.remove(fourth_floor_dir+'/'+file_dir)  # 删除原来的excel文件


首先定义基础文件夹路径,接着使用os.listdir()获取文件夹列表,嵌套四层循环即可到达excel文件的路径下,然后使用字符串切割获取文件名和后缀,判断后缀是否为excel文件,是的话就使用pandas读取数据,然后转换列类型并转为要求格式,最后保存为csv文件并删除原来excel文件。运行之后就大功告成啦!


       最后还得到了朋友的肯定,其实学Python并不一定要去做程序员,像这种办公软件(excel、PPT、word)在公司里都是必备技能,但是当要处理的文件太多或者都是一些重复性的工作,那此时你用Python写个自动化脚本来做,省时又省力,提高工作效率,同时还能获得领导的欣赏。


三、往期推荐


Python提取pdf中的表格数据(附实战案例)

使用Python自动发送邮件

Python操作ppt和pdf基础

Python操作word基础

Python操作excel基础

使用Python一键提取PDF中的表格到Excel

目录
相关文章
|
16天前
|
数据采集 JSON 测试技术
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
134 83
|
3月前
|
搜索推荐 Python
使用Python自动化生成物业通知单
本文介绍如何使用Python结合Pandas和python-docx库自动化生成物业通知单。通过读取Excel数据并填充至Word模板,实现高效准确的通知单批量制作。包括环境准备、代码解析及效果展示,适用于物业管理场景。
98 14
|
3月前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
256 61
|
9天前
|
存储 数据采集 数据格式
Python自动化Office文档处理全攻略
本文介绍如何使用Python自动化处理Word、Excel和PDF文档,提升办公效率。通过安装`python-docx`、`openpyxl`、`pandas`、`PyPDF2`和`pdfplumber`等库,可以轻松实现读取、修改、创建和批量处理这些文档。具体包括:自动化处理Word文档(如读取、修改内容、调整样式),Excel文档(如读取、清洗、汇总数据),以及PDF文档(如提取文本和表格数据)。结合代码示例和实战案例,帮助你掌握高效办公技巧,减少手动操作的错误率。
26 1
|
2月前
|
机器学习/深度学习 运维 数据可视化
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
99 16
Python时间序列分析:使用TSFresh进行自动化特征提取
|
15天前
|
机器学习/深度学习 存储 数据可视化
这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来
本书介绍了如何将Python与Excel结合使用,以提升数据分析和处理效率。内容涵盖Python入门、pandas库的使用、通过Python包操作Excel文件以及使用xlwings对Excel进行编程。书中详细讲解了Anaconda、Visual Studio Code和Jupyter笔记本等开发工具,并探讨了NumPy、DataFrame和Series等数据结构的应用。此外,还介绍了多个Python包(如OpenPyXL、XlsxWriter等)用于在无需安装Excel的情况下读写Excel文件,帮助用户实现自动化任务和数据处理。
|
3月前
|
存储 人工智能 人机交互
PC Agent:开源 AI 电脑智能体,自动收集人机交互数据,模拟认知过程实现办公自动化
PC Agent 是上海交通大学与 GAIR 实验室联合推出的智能 AI 系统,能够模拟人类认知过程,自动化执行复杂的数字任务,如组织研究材料、起草报告等,展现了卓越的数据效率和实际应用潜力。
257 1
PC Agent:开源 AI 电脑智能体,自动收集人机交互数据,模拟认知过程实现办公自动化
|
2月前
|
存储 安全 数据可视化
用Python实现简单的任务自动化
本文介绍如何使用Python实现任务自动化,提高效率和准确性。通过三个实用案例展示:1. 使用`smtplib`和`schedule`库自动发送邮件提醒;2. 利用`shutil`和`os`库自动备份文件;3. 借助`requests`库自动下载网页内容。每个案例包含详细代码和解释,并附带注意事项。掌握这些技能有助于个人和企业优化流程、节约成本。
84 3
|
3月前
|
JSON 数据可视化 测试技术
python+requests接口自动化框架的实现
通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。
132 7
|
3月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!