返回介绍

12.9 公式

发布于 2024-01-22 21:44:06 字数 1710 浏览 0 评论 0 收藏 0

公式以一个等号开始,可以配置单元格,让它包含通过其他单元格计算得到的值。在本节中,你将利用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文