- 内容提要
- 作者简介
- 技术评审者简介
- 致谢
- 译者序 会编程的人不一样
- 前言
- 本书的读者对象
- 编码规范
- 什么是编程
- 本书简介
- 下载和安装 Python
- 启动 IDLE
- 如何寻求帮助
- 聪明地提出编程问题
- 小结
- 第一部分 Python 编程基础
- 第1章 Python 基础
- 第2章 控制流
- 第3章 函数
- 第4章 列表
- 第5章 字典和结构化数据
- 第6章 字符串操作
- 第二部分 自动化任务
- 第7章 模式匹配与正则表达式
- 第8章 读写文件
- 第9章 组织文件
- 第10章 调试
- 第11章 从 Web 抓取信息
- 第12章 处理 Excel 电子表格
- 第13章 处理 PDF 和 Word 文档
- 第14章 处理 CSV 文件和 JSON 数据
- 第15章 保持时间、计划任务和启动程序
- 第16章 发送电子邮件和短信
- 第17章 操作图像
- 第18章 用 GUI 自动化控制键盘和鼠标
- 附录A 安装第三方模块
- 附录B 运行程序
- 附录C 习题答案
12.9 公式
公式以一个等号开始,可以配置单元格,让它包含通过其他单元格计算得到的值。在本节中,你将利用openpyxl模块,用编程的方式在单元格中添加公式,就像添加普通的值一样。例如:
>>> sheet['B9'] = '=SUM(B1:B8)'
这将=SUM(B1:B8)作为单元格B9的值。这将B9单元格设置为一个公式,计算单元格B1到B8的和。图12-5展示了它的效果。
图12-5 单元格B9包含了一个公式,计算单元格B1到B8的和
为单元格设置公式就像设置其他文本值一样。在交互式环境中输入以下代码:
>>> import openpyxl >>> wb = openpyxl.Workbook() >>> sheet = wb.get_active_sheet() >>> sheet['A1'] = 200 >>> sheet['A2'] = 300 >>> sheet['A3'] = '=SUM(A1:A2)' >>> wb.save('writeFormula.xlsx')
单元格A1和A2分别设置为200和300。单元格A3设置为一个公式,求出A1和A2的和。如果在Excel中打开这个电子表格,A3的值将显示为500。
也可以读取单元格中的公式,就像其他值一样。但是,如果你希望看到该公式的计算结果,而不是原来的公式,就必须将load_workbook()的data_only关键字参数设置为True。这意味着Workbook对象要么显示公式,要么显示公式的结果,不能兼得(但是针对一个电子表格文件,可以加载多个Workbook对象)。在交互式环境中输入以下代码,看看有无data_only关键字参数时,加载工作簿的区别:
>>> import openpyxl >>> wbFormulas = openpyxl.load_workbook('writeFormula.xlsx') >>> sheet = wbFormulas.get_active_sheet() >>> sheet['A3'].value '=SUM(A1:A2)' >>> wbDataOnly = openpyxl.load_workbook('writeFormula.xlsx', data_only=True) >>> sheet = wbDataOnly.get_active_sheet() >>> sheet['A3'].value 500
这里,如果调用load_workbook()时带有data_only=True,A3单元格就显示为500,即公式的结果,而不是公式的文本。
Excel公式为电子表格提供了一定程度的编程能力,但对于复杂的任务,很快就会失去控制。例如,即使你非常熟悉Excel的公式,要想弄清楚=IFERROR (TRIM(IF(LEN(VLOOKUP(F7,Sheet2!$A$1:$B$10000,2,FALSE))>0,SUBSTITUTE (VLOOKUP (F7, Sheet2!$A$1:$B$10000, 2, FALSE), " ", ""),"")), "")实际上做了什么,也是一件非常头痛的事。Python代码的可读性要好得多。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论