🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 快速开始 本指南假设您已安装xlwings。 如果不是这样,请转到[安装](installation.md). ## 1\. 脚本: 从Python与Excel进行自动化交互 建立与工作簿的连接: ~~~ >>> import xlwings as xw >>> wb = xw.Book() # 这将创建一个新的工作簿 >>> wb = xw.Book('FileName.xlsx') # 连接到当前工作目录中的现有文件 >>> wb = xw.Book(r'C:\path\to\file.xlsx') # 在Windows上:使用原始字符串来转义反斜杠 ~~~ 如果您在两个Excel实例中打开了相同的文件,则需要完全限定它并包含应用程序实例。 您将通过`xw.apps.keys()`找到您的应用实例密钥(PID): ~~~ >>> xw.apps[10559].books['FileName.xlsx'] ~~~ 实例化工作表对象: ~~~ >>> sht = wb.sheets['Sheet1'] ~~~ 在Range内读取/写入值非常简单: ~~~ >>> sht.range('A1').value = 'Foo 1' >>> sht.range('A1').value 'Foo 1' ~~~ 有许多**便利功能**,例如 Range扩大: ~~~ >>> sht.range('A1').value = [['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]] >>> sht.range('A1').expand().value [['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]] ~~~ **功能强大的转换器**处理大多数感兴趣的数据类型,包括Numpy数组和Pandas DataFrames两个方向: ~~~ >>> import pandas as pd >>> df = pd.DataFrame([[1,2], [3,4]], columns=['a', 'b']) >>> sht.range('A1').value = df >>> sht.range('A1').options(pd.DataFrame, expand='table').value a b 0.0 1.0 2.0 1.0 3.0 4.0 ~~~ **Matplotlib**数字可以在Excel中显示为图片: ~~~ >>> import matplotlib.pyplot as plt >>> fig = plt.figure() >>> plt.plot([1, 2, 3, 4, 5]) [<matplotlib.lines.Line2D at 0x1071706a0>] >>> sht.pictures.add(fig, name='MyPlot', update=True) <Picture 'MyPlot' in <Sheet [Workbook4]Sheet1>> ~~~ 活动工作表的**捷径** : `xw.Range` 如果要快速与活动工作簿中的活动工作表通信,则不需要实例化工作簿和工作表对象,可以简单地执行: ~~~ >>> import xlwings as xw >>> xw.Range('A1').value = 'Foo' >>> xw.Range('A1').value 'Foo' ~~~ **注意**:在与Excel交互时,您应该只使用`xw.Range`。 在脚本中,您应该始终通过工作簿和工作表对象,如上所示。 ## 2\. 宏: 从Excel调用Python 您可以使用`RunPython`函数从VBA调用Python函数: ~~~ Sub HelloWorld() RunPython ("import hello; hello.world()") End Sub ~~~ 默认情况下,`RunPython`在Excel文件所在的目录中需要`hello.py`。 请参阅使用`xw.Book.caller`调用Excel工作簿: ~~~ # hello.py import numpy as np import xlwings as xw def world(): wb = xw.Book.caller() wb.sheets[0].range('A1').value = 'Hello World!' ~~~ 要进行此运行,您需要安装xlwings加载项。 设置所有内容的最简单方法是从Windows上的命令提示符或Mac上的终端使用xlwings命令行客户端:`xlwings quickstart myproject`。 有关加载项的详细信息,请参阅[加载项](addin.md)。 ## 3\. UDFs: 用户定义的功能(仅限Windows) 在Python中编写UDF非常简单: ~~~ import xlwings as xw @xw.func def hello(name): return 'Hello {0}'.format(name) ~~~ 转换器也可以与UDF一起使用。 再举个Pandas DataFrame例子: ~~~ import xlwings as xw import pandas as pd @xw.func @xw.arg('x', pd.DataFrame) def correl2(x): # x arrives as DataFrame return x.corr() ~~~ 通过单击xlwings加载项的导入按钮将此函数导入Excel:有关更多详细信息,请参阅[VBA:用户定义函数UDFs](udfs.md)