分享

快速开始 · xlwings中文文档 · 看云

 昵称2548375 2023-03-09 发布于河北

快速开始

本指南假设您已安装xlwings。 如果不是这样,请转到安装.

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

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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多