Python让Excel飞起来:使用Python xlwings实现Excel自动化

学习Excel技术,关注微信公众号:
excelperfect
标签: Python与Excel,xlwings
本文将向你展示如何使用Python xlwings库自动化Excel。毋庸置疑,Excel是一款非常棒的软件,具有简单直观的用户界面,而Python是一种强大的编程语言,在数据分析方面非常高效。xlwings就像胶水一样,将两者连接到一起,让我们能够同时拥有两者最好的一面。
你可以使用xlwings+Python执行下列任务:
1.使用Python自动化Excel,例如生成报告。
2.使用Python编写宏,并通过单击按钮从Excel运行。
3.使用Python编写用户定义的函数,并像调用任何Excel内置函数一样从Excel中调用这些函数。
听起来很刺激?让我们开始吧!
第一部分:安装xlwings
安装xlwings有两个部分:Python库和Excel加载项。
先安装Python库:
pip install xlwings
然后从xlwings的官方Github存储库下载这个Excel加载项,即页面上的xlwings.xlam文件。(或者,你可以到知识星球中的完美Excel社群下载)
将xlwings.xlam文件放入Excel加载项文件夹,该文件夹所在位置为:
C:\用户\xxxx\AppData\Roaming\Microsoft\AddIns
xxxx是计算机上自己的用户名。
然后,打开Excel,选择“文件->选项->加载项”。单击“管理:Excel加载项”旁边的“转到”按钮,如下图1所示。

图1
在“加载宏”对话框中,选取Xlwings前的复选框,如下图2所示,单击“确定”按钮。

图2
现在,Excel功能区中将出现一个名为“xlwings”的选项卡,如下图3所示。

图3
至此,设置已完成,我们可以使用用Python自动化Excel了!
第二部分:自动化Excel
运行以下Python脚本,它将打开一个新的Excel实例。
import xlwings as xw
wb = xw.Book()
将数据写入Excel
这里,wb引用新的(且打开的)Excel文件,同时它也是一个Python对象,这意味着我们可以在Python中操作它(Excel文件)。尝试下面的代码,它将允许你将值从Python输入到Excel。
sheet = wb.sheets['Sheet1']
sheet.range('A1').value ="Hi,Excel,我来自Python"

图4
我们也可以使用.range((x,y))表示法来引用Excel中的单个单元格,其中x表示行,y表示列。因此,.range((3,2))表示单元格B3。
sheet.range((3,2)).value = 'x轴'
sheet.range((3,3)).value = 'y轴'
for i in range(5):
sheet.range((i+4,2)).value = i

图5
也可以使用Python在Excel中编写公式。基本上,我们是在向单元格中写入字符串。这里,我们要在另一列中计算x轴的指数值。在下面的代码中,我们使用了“f-string”,这是从Python 3.6开始的一种改进的字符串格式语法。
for i in range(5):
sheet.range((i+4,3)).value = f'=exp(B{i+4})'

图6
从Excel中读取数据
从Excel读取数据同样简单,下面的代码将Excel数据作为列表读取到Python中。
data = sheet.range('B3:C8').value

图7
如果要将Excel数据作为pandas数据框架读入Python,代码如下。
import pandas as pd
df = xw.Range('B3').expand().options(pd.DataFrame).value
df.reset_index(inplace=True)
.expand()自动检测数据的维度,.options()指定我们需要pandas数据框架。我们在末尾重置了索引,因此x轴将被视为列,而不是数据框架索引。

图8