安装



pip install xlwings



或者



conda install xlwings



或者为了安装最新版本



conda install -c conda-forge xlwings



1.脚本:通过Python与Excel交互

建立与工作簿的连接:



>>> import xlwings as xw
>>> wb = xw.Book()  # 这将创造一个新的工作簿
>>> wb = xw.Book('FileName.xlsx')  # 连接到当前工作目录中的现有文件
>>> wb = xw.Book(r'C:pathtofile.xlsx')  # 在Windows上:使用r进行转义



如果您在两个Excel实例中打开了相同的文件,则需要完全限定它并且包含应用程序实例。 您可以通过xw.apps.keys()找到您的应用程序实例密钥(PID):



>>> xw.apps[10559].books['FileName.xlsx']



实例化工作表对象:



>>> sht = wb.sheets['Sheet1']



这样从表格读取/写入值就很容易了:



>>> sht.range('A1').value = 'Foo 1'
>>> sht.range('A1').value
'Foo 1'



我们还可使用有许多便利功能,例如 表格范围扩大:



>>> 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]]



还可以与Pandas、Numpy一起用



>>> 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



还可以在excel表格内使用matplot绘制图



>>> 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

你可以通过单击外接程序中的“运行”按钮(v0.16中的新增功能)或使用RunPython函数从VBA调用Python函数:“运行”按钮在Python模块中需要一个名为main的函数,该函数与您的工作簿同名。

这种方法的优点在于,您不需要工作簿启用宏,而可以将其保存为xlsx。

如果要调用任何Python函数,无论它位于哪个模块中或具有什么名称,请使用RunPython:



Sub HelloWorld()
    RunPython ("import hello; hello.world()")
End Sub



默认情况下,RunPython需要hello.py与Excel文件位于同一目录中,但是您可以通过config进行更改。 通过使用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。

有关加载项的详细信息,请参见加载项:


Add-in - xlwings dev documentationdocs.xlwings.org


python使用一个xlsx格式刷另一个xlsx_Python


3. UDF:用户定义的功能(仅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:用户定义的功能(UDF):


VBA: User Defined Functions (UDFs)docs.xlwings.org

python使用一个xlsx格式刷另一个xlsx_VBA_02