1. 介绍 xlwings
xlwings 是一个强大的 Python 库,能够用于 Excel 自动化操作。除了基本的数据读写和格式设置,xlwings 还支持写入 Excel 公式、调用内置函数以及创建自定义函数,使得 Python 与 Excel 之间的交互更加灵活。
2. 在单元格中使用 Excel 公式
xlwings 允许我们直接在 Excel 单元格中写入 Excel 公式,与手动输入公式的效果相同。例如:
写入简单公式
import xlwings as xw
wb = xw.Book()
sht = wb.sheets[0]
# 在 A1 单元格写入求和公式
sht.range("A1").value = "=SUM(B1:B5)"
此代码将在 Excel 的 A1 单元格中写入 =SUM(B1:B5)
公式,使其计算 B1 到 B5 之间的数值和。
动态引用单元格
可以使用 Python 格式化字符串动态生成 Excel 公式。
row = 10
sht.range("C1").value = f"=SUM(A1:A{row})"
上述代码将 =SUM(A1:A10)
公式写入 C1 单元格。
3. 调用 Excel 内置函数
除了直接写入公式,我们还可以使用 xlwings 调用 Excel 内置函数,并获取计算结果。
计算最大值
sht.range("A1").value = [10, 20, 30, 40, 50]
max_value = sht.range("B1").formula = "=MAX(A1:A5)"
print(sht.range("B1").value) # 输出 50
这里 formula
将 =MAX(A1:A5)
公式写入 B1,并立即计算得到最大值 50。
调用日期相关函数
sht.range("D1").value = "=TODAY()"
print(sht.range("D1").value) # 输出当前日期
这将在 D1 单元格插入 =TODAY()
公式,并返回当前系统日期。
4. 使用 xlwings 自定义函数
xlwings 允许 Python 代码作为 Excel 用户定义函数(UDF, User Defined Function)。这意味着我们可以使用 Python 编写自定义 Excel 公式,并在 Excel 中像使用普通公式一样调用它们。
启用 xlwings UDF
首先,确保 Excel 启用了 xlwings 加载项,并使用 @xw.func
装饰器定义 Python UDF。
定义 Python 自定义函数
import xlwings as xw
@xw.func # 将此函数注册为 Excel 公式
def add_numbers(x, y):
return x + y
在 Excel 中输入:
=add_numbers(10, 20)
将返回 30
。
自定义平方根函数
import math
@xw.func
def sqrt_number(x):
return math.sqrt(x)
然后在 Excel 中输入:
=sqrt_number(25)
将返回 5.0
。
UDF 调用外部 API
我们甚至可以让 Excel 通过 Python 调用 Web API,例如获取当前汇率。
import requests
@xw.func
def get_exchange_rate(currency):
url = f"https://api.exchangerate-api.com/v4/latest/{currency}"
response = requests.get(url).json()
return response['rates']['USD']
在 Excel 中输入:
=get_exchange_rate("EUR")
即可获得当前 1 欧元兑美元的汇率。
5. 结论
使用 xlwings,可以轻松在 Excel 中写入公式、调用 Excel 内置函数,并通过 UDF 创建自定义函数,将 Python 的强大功能引入 Excel,实现更高效的数据处理与计算。