陈新龙
推荐用openpyxl库处理Excel表
在现今的数据驱动时代,Excel 表格成为各行各业中最常用的数据存储和处理工具之一。然而,对于大量数据或需要自动化处理的任务来说,手动操作Excel 显然是低效而繁琐的。
小陈老师在工作中就碰到了一个任务需求:定时检查邮箱中是否存在对应主题的邮件,若存在对应主题的邮件,需要将邮件中的附件Excel 下载到本地,根据相应的规则对邮件进行解析,检查修改填充相应的数据内容,最终将处理完的Excel 文件返回给发件人。
本来接到这个需求想通过Java 来实现,奈何对方电脑上没有配置Java 的环境变量,所以在交付使用的环节可能会出现问题,后来决定通过Python 解决。
通过本例,将教大家如何使用Python 来处理Excel 文件,并且将其打包成可执行文件(EXE),让您可以在没有Python 环境的计算机上也能轻松运行您的数据处理任务。
在处理Excel 文件的时候推荐大家两个强大的库Pandas和openpyxl。它们为Excel 数据处理带来了崭新的解决方案。openpyxl 允许我们直接访问和修改Excel 文件的单元格、样式和图表等内容。相比于其他库,openpyxl 的优势在于它可以完全控制Excel 文件的结构和外观,让我们能够实现更加细致和定制化的操作。
要使用openpyxl, 我们需要先安装相应的模块:pipinstallopenpyxl。
建立Excel文件
下面通过建立和修改Excel 文件的实例来了解一下openpyxl 的用法。
新建一个Excel 文件, 向Excel 文件中添加三行数据, 分别是姓名、年龄、城市。首先我们导入相关的函数Workbook。Workbook 相当于创建一个wb 对象,一个空白的Excel 文件,然后通过wb.active() 获取到当前活动工作表,也就是我们常说的Sheet 页面。其次可以准备我们需要的数据了,这里我们通过双重列表的形式展现,内层嵌套了三条不同的数据信息【Name、Age、City】,大家也可以根据自己的数据进行替换,然后通过循环的方式,读取双重列表,将列表的数据通过append 方法填充到我们的Excel 已经激活的Sheet 工作表中。添加完成后不要忘记将我们的Excel 保存到指定的路径中。这样运行Python 代码大家就会发现我们的Excel 文件中已经填充了三行数据,这三行数据就是我们代码中所写的(图1)。
修改Excel文件
完成新建并填充Excel 数据内容后,接下来就是修改Excel中的数据内容。我们需要导入相关的函数load_workbook,顾名思义也就是打开加载我们的Excel 文件,这里打开加载文件需要使用Excel 文件的全路径,否则会出现文件找不到的情况。然后通过wb.active() 获取到当前活动工作表,获取到对应的工作表我们便可以对Excel 表中的数据进行修改了,修改数据的方式有两种,一种直接通过横纵坐标的方式修改,比如我想将C2 中的NewYork 修改为China,直接通过ws[‘C2’] = 替换的内容即可,也可以指定第几行第几列的方式来决定(cell 表示行,column 表示列,value 代表替换的内容)。替换完成后不要忘记将文件进行保存。再次打开更新后的文件我们会发现Excel 数据已经完成替换。
使用openpyxl 需要注意的一点是目前只支持.xlsx 类型的Excel文件,若是.xls 类型的文件只能使用xlrd 和xlrw 两个模块(图2)。
打包Python代码
最后我们将自己写完的程序打包成EXE 可执行文件,那么别人拿到后便可以双击直接运行了,首先我们需要安装一个模块PyInstaller,安装完成后我们打开代码所在的目录,通过一句简单的命令即可打包完成,还可以选择自定义程序图标,代码有两种格式:
不选择图标:pyinstaller -F -w < 文件名>.py
选择图标:pyinstaller -F -i .ico <文件名>.py当看到BuildingExE……successfully 的时候表示程序已经打包完成,在当前目录下的dist 文件夹中生成一个名为your_script.exe 的可执行文件,其中your_script 是我们脚本的文件名。这个EXE 文件就是我们的Python 脚本的可执行版本,默认图标是一个Python 的蛇图案。
无论是处理大量数据还是进行复杂数据操作,Pandas 和openpyxl 的组合将为您提供强大的数据处理能力,让您的Excel文件处理更上一层楼。当然本期文章我们只讲述了openpyxl 的使用方法,并教大家如何将我们编写的代码进行打包使用。后续会分享Pandas 更加高效的数据处理的内容,也期待和大家一起进步一起学习。
……
关注读览天下微信,
100万篇深度好文,
等你来看……