200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python利用公式计算_Python利用openpyxl处理Excel文件(公式实例)

python利用公式计算_Python利用openpyxl处理Excel文件(公式实例)

时间:2022-02-18 17:02:22

相关推荐

python利用公式计算_Python利用openpyxl处理Excel文件(公式实例)

前面我们学习了Python使用openpyxl模块处理Excel文件的大部分内容,今天,我们通过一个例子来学习Python使用Excel公式的方法,引出今天的主题利用openpyxl处理Excel公式。

一、使用openpyxl模块处理Excel公式的方法

先构造一个应用Excel文件

# -*- coding: utf-8 -*-

from openpyxl import Workbook

from openpyxl import load_workbook

wb = load_workbook('example.xlsx')

ws=wb.active

ws["A1"]=1000

ws["A2"]=2000

ws["A3"]=3000

直接将公式内容写入响应的Cell实例(单元格)中即可,为单元格设置公式就像设置其他文本值一样。

ws["A4"] = "=SUM(1, 1)"

ws["A5"] = "=SUM(A1:A4)"

print(ws["A4"].value) # 默认只打印公式内容,不打印结果

print(ws["A5"].value) # 同上

# 保存文件

wb.save("example.xlsx")

Excel单元格中插入公式

插入公式后打印单元格内容

打开Excel表格后显示效果(默认不设置任何参数的时候显示公式计算后的数值),如下图所示。

默认情况下Excel显示效果

如果你希望看到该公式的计算结果,而不是原来的公式,就必须将load_workbook()的data_only关键字参数设置为True。这意味着Workbook对象要么显示公式,要么显示公式的结果,不能兼得(但是针对一个电子表格文件,可以加载多个Workbook对象)。

在交互式环境中输入以下代码,看看有无data_only关键字参数时,加载工作簿的区别。

(一)使用data_only参数

# -*- coding: utf-8 -*-

from openpyxl import Workbook

from openpyxl import load_workbook

wb = load_workbook('example.xlsx', data_only=True)

ws=wb.active

print(ws[‘A4’].value)

print(ws[‘A5’].value)

data_only为True时打印效果

在这里必须说明的是,当使用data_only=True时,虽然你能看到公式及显示的结果,除非你再次将Excel打开并保存一下,否则,公式是不会应用到Excel表格中,虽然你执行了wb.save(‘example.xlsx’)操作。这是和不设置参数是不一样的。

(二)使用data_only参数

# -*- coding: utf-8 -*-

from openpyxl import Workbook

from openpyxl import load_workbook

wb = load_workbook('example.xlsx')

ws=wb.active

print(ws[‘A4’].value)

print(ws[‘A5’].value)

默认不设置data_only时的效果

上面演示了data_only参数设置效果,当data_only=True请牢记上面的“坑”。

二、实例演示

我们以前面的“population.xlsx”为原始表格,统计“20XX年X国人口统计”表格的人口总数。将统计结果放在“人口数量”列的最后一行,并将该行前三个单元格进行合并(样式自己定义哦)。

不赘述直接上代码

import openpyxl

wb = openpyxl.load_workbook("population.xlsx")

ws = wb.get_sheet_by_name(wb.get_sheet_names()[0])

row = ws.max_row

ws.merge_cells("A{0}:C{0}".format(row + 1))

ws['A{0}'.format(row+1)].value = "总计"

ws.cell(row = row + 1, column = 4).value = "=SUM(D3:D{0})".format(row)

# 保存

wb.save("population.xlsx")

程序运行效果图

三、实例分析

Excel公式赋予电子表格一定程度的编程能力,但对于复杂的任务,很快就会失去控制。例如,即使你非常熟悉Excel的公式,要想弄清楚=IFERROR(TRIM(IF(LEN(VLOOKUP(F7,Sheet3!$C$1:$D$10000,2,FALSE))>0,SUBSTITUTE(VLOOKUP(F8, Sheet2!$B$3:$A$30000, 1, FALSE), " ", ""),"")), "")实际上做了什么,也是一件非常头痛的事。Python代码的可读性要好得多。因此,利用Python对打开的数据对象进行复杂的条件判断,这个过程中使用的是Python语法,而非公式,这样可以大大提高代码的可读性和处理具体问题的效率。上面的例子只是简单的对求和公式进行了例举,这个例子只起了个抛砖引玉的效果,如果涉及更多复杂的条件筛选单元格,使用Python进行处理是不错的选择,我们将在以后的梳理过程中逐渐增加这部分内容。对于Excel函数不怎么感冒的同学,可以试试使用Python进行处理。

可爱的python

未完待续!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。