本节将介绍openpyxl包,使用openpyxl包可对Excel数据进行各类操作,达到自动化处理Excel数据的目的。
使用pip工具、easy_install工具可以安装openpyxl包。Anaconda默认安装了openpyxl包,在编写代码时可直接使用。
如果正确安装了openpyxl包,在导入使用时不会报错,否则会出现“NameError:name'openpyxl'is not defined error”错误提示。
Python中的Faker包可用于构建各种测试数据,在填充数据库、创建数据文档、数据压力测试等场景下都可以使用。读者可参考本书代码素材文件“3-11-faker-demo.ipynb”进行学习。
1.安装Faker包
对于官方版本的Python,可使用pip工具进行安装。
对于Anaconda,可在Anaconda Navigator中搜索Faker包然后安装,或是在Anaconda Powershell中使用conda工具安装。
2.使用Faker包
以下代码演示了Faker包的基础使用方法,Faker包中提供了各类数据的Provider,可用于生成各种不同的测试数据。
3.生成金融测试数据
介绍了Faker包的基础使用方法后,下面通过Faker包构建一份银行信用卡相关的测试数据,并写入Excel文件中。读者可参考本书代码素材文件“3-12-faker-data.ipynb”进行学习。
最终生成的Excel文件中的数据如图3-32所示,通过Faker、openxlpy包可以生成各类业务场景的测试数据,并可以将数据保存到Excel中,对于方案验证、测试有很大的帮助。
图3-32 通过Faker包构造测试数据
前文中介绍Faker包时,已经演示了使用openpyxl包向Excel文件写入数据的操作,本小节将进行更加详细的说明,读者可参考本书代码素材文件“3-13-openpyxl.ipynb”进行学习。
1.openpyxl类结构
Excel的基础操作流程是:新建或打开已有的工作簿→选择工作表→操作数据单元格。使用openpyxl处理Excel文件也是按这个流程对相关对象进行处理,表3-11所示为openpyxl包中的类和模块与对应的Excel对象的说明。
表3-11 openpyxl包中的类和模块与对应的Excel对象
2.Excel工作簿的操作
通过load_workbook函数读取Excel文件,返回Workbook类对象,然后通过Workbook对象创建和查看工作表。
(1)打开Excel工作簿查看现有工作表。
Workbook对象可调用remove_sheet方法删除工作表,remove_sheet方法中的参数需要为Worksheet对象,所有修改操作在调用save()方法后生效。
(2)使用create_sheet方法创建新的Excel工作表。
Workbook对象可调用create_sheet方法新建工作表,create_sheet方法中的title参数指定新建工作表的名称,index参数指定新建工作表的位置。
3.Excel中行和列的相关操作
在Excel中可以通过工作表区分不同的数据,使用openpyxl包中的工作表类Worksheet,可以对工作表中的行和列进行操作。
(1)定位查找工作表。
(2)对工作表中的行、列、数据单元格对象进行操作。
(3)向工作表中插入数据。
执行完对工作表的操作后,工作表的样式如图3-33所示。使用delete_rows、delete_cols方法可以删除工作表中的行和列。
图3-33 工作表操作演示
4.Excel中单元格的相关操作
Excel中单元格是最基本的数据单元,使用openpyxl包中的工作表类Worksheet可以对单元格进行操作。
(1)操作单元格中的数据。
(2)单元格格式的设置。
使用Excel时经常需要对单元格的格式进行设置,在Pythone中可通过openpyxl包中styles包中的样式类对单元格格式进行设置。
图3-34所示为设置单元格格式后的效果,通过styles包中的样式类设置单元格格式可以达到和手动设置Excel单元格格式一样的效果。
图3-34 设置单元格格式后的效果
学习了openpyxl包的相关知识后,接下来介绍利用Python自动化处理Excel的方法。假设有以下场景:有一个商品供应商,需要将各门店手动记录的Excel数据进行汇总。如果每次都通过人工手动合并数据会造成人力资源的浪费,也容易出错。通过以下代码可以自动完成合并3个门店的Excel数据的工作。读者可参考本书代码素材文件“3-14-openpyxl_auto.ipynb”进行学习。
(1)Excel数据样式。
3家门店的Excel数据文件名分别为“门店1.xlsx”“门店2.xlsx”“门店3.xlsx”,数据示例如图3-35所示。
图3-35 Excel数据示例
(2)合并3个文件的内容。
将上面的代码保存到文件中,然后配置操作系统的调度任务进行调用,即可实现自动化的数据处理。