编程语言 Python 现如今如日中天,之所以如此繁荣,除了易学易学的特点之外,应用场景更广也是主要因素之一。除 Web 开发,科学计算,AI 人工智能外,日常办公也有 Python 的用武之地,今天我们来学习 Python 操作 Excel。 Python 用于操作 Excel 的库有很多,如:xlwings、pandas、xlsxwriter 等,今天我们用到的是很受欢迎的 openpyxl,官档地址:https://openpyxl./en/latest/ ,该库可以读写 Excel xlsx/xlsm/xltx/xltm。 编程初学者在学习一个新库或框架时,往往会觉得要记的东西比较多,面对满屏的函数、方法、属性不知所措,觉得需要死记的东西太多,导致学习效率很低!有这种现象的一个主要原因是未深入理解面向对象编程,今天我们以 openpyxl 学习为例,换种思维方式,融入OOP 理念,你会发现编程其实很简单。 面向对象编程思想一个主要特点即是以人的思维习惯去分析、分解问题,简单来讲,可以将事物抽象为类,将对象所具备的特征和行为抽象为方法,代码的定义抽象都是为描述、抽象现实中事物交互行为而服务的。 openpyxl 第三方功能库,而非标准库内置,因而使用前先安装到当前 Python 环境,操作系统命令行下 `pip install openpyxl `即可安装,目前最新版本为 2.6.3 作为对比学习,我们打开 MS Office Excel 套件(本例为 Office 2016),看下基本界面: Office Excel 基本界面及术语 先抛开代码,从非开发人员角度,我们可以总结发现几个对象:
接下来,同样以非开发人员即普通办公人员角度想象一下创建一个表格的几个步骤:
前述以普通用户角度分解了操作对象及过程,若以面向对象编程思想来分析,便可以将前面的对象和过程作以下归纳:
不论哪种编程语言,符合面向对象编程思想的代码通常总是定义一组相关的类,用于抽象相关的对象,并将该对象具有的特征和行为抽象为属性和方法。openpyxl 即符合这个机制和原则,理解这一点,有助于深入理解代码组织形式,启发思维。 接下来我们以程序的角度来分析分解前述创建工作簿、切换到指定工作表,并在特定单元格填充内容,最终命名保存。原本由原来的 Office Excel 完成的工作,现在有 Python openpyxl 编程实现(内存中操作)。 步骤: 1、内存创建工作簿对象: 创建 工作簿 openpyxl.Workbook 类抽象工作簿对象,wb 作为在内存中的对象引用 此时,相当于 Excel 软件创建一个空的工作簿 相当于 Excel 执行结果 2、 找到工作簿当前激活的工作表 对应工作表操作 此时相当于定位切换至默认的工作表 “Sheet1” 对应 Excel 操作结果 此时可以修改内存工作簿工作表 Sheet1 的标题名称 修改工作表标题属性 相当于 Excel 双击改变工作表标签文字 对应 Excel 操作结果 3. 操作单元格 定位行列单元格(由 Cell 类抽象) 定位获取单元格对象引用 在单元格内填充值 获取或设置单元格 value 值 Cell.value 表示该单元格值, ws.rows 包含有数据的行集合 此时,相当于 Excel 结果: 对应 Excel 结果 如果我们有批量的数据,可以计算好行列索引,以批量写入单元格 计算好行列索引,批量写入单元格内容 此时,相当于 Excel 结果: 对应 Excel 结果 4. 保存工作簿至文档 截止目前,所有的操作均映射在内存中,wb.save('名称.xlsx') 可以保存文档至当前位置 wb.save() 保存工作簿 使用 Excel 打开程序保存的 scores.xlsx 文件,我们发现最终生成的文档与期望结果保持一致 最终保存的 Excel 文档结果 本文以面向对象编程思维方式介绍了 openpyxl 库的 Excel 基本操作处理,更多操作如:批量单元格处理、图片插入、加载文档等,小伙伴们可以使用同样的思维方式思考对应功能在库中可能会有什么样的对象类来抽象,以及什么样的属性方法分别映射特征和行为!理解这一样,即使对查询帮助也有更清晰的认识! 关于面向对象编程方法的特点、步骤以及更多实践,可以参考我的专栏课程: 专栏 Python零基础到实战 【基础篇】 作者:编码客 ¥49 84人已购 查看 |
|