美文网首页Python量化
翻译:xlwings快速入门

翻译:xlwings快速入门

作者: mhye | 来源:发表于2016-11-28 00:21 被阅读3637次

    更新说明下,这篇文字不是原创,是翻译自:xlwings_Quickstart

    Quickstart

    假设你已经安装了xlwings,如果还没有的话

    pip install xlwings
    

    在交互模式下通过python控制Excel

    如果你在ipython/python交互模式下,同时你打开了一个Excel表格.可以简单地对当前活动进行操作,以及获取单元格信息.
    简单粗暴

    >>> import xlwings as xw
    #A1单元格输入"Foo 1"
    >>> xw.Range('A1').value = 'Foo 1'
    #获取A1单元格的值
    >>> xw.Range('A1').value
    'Foo 1'
    

    可以读取Numpy数组和Pandas的DataFrames数组,填充到单元格。同时也很容易从表格中按自己的方式读取数组

    >>> import pandas as pd
    >>> df = pd.DataFrame([[1,2], [3,4]], columns=['a', 'b'])
    #填充到表格
    >>> xw.Range('A1').value = df
    从表格中读取
    >>> xw.Range('A1').options(pd.DataFrame, expand='table').value
     a b
    0.0 1.0 2.0
    1.0 3.0 4.0
    
    填充效果
    一个完整的示例:创建一个电子表格,添加一个新的工作表,在指定工作表中添加数据。
    >>> wb = xw.Book()
    >>> wb.sheets.add()
    <Sheet [Workbook1]Sheet2>
    >>> wb.sheets['Sheet1'].range('A1').value = 'Foo1'
    

    通常,你可以使用xw.Book就可以定位你打开的多个工作簿中的指定表格。

    xw.Book("某某表.xlsx")
    

    然后这篇指南上说可以通过xw.apps[0].books['filenme.xlsx']打开同名Excel,这里无法验证。
    Matplotlib图标也可以作为图片显示在Excel中

    >>> import matplotlib.pyplot as plt
    >>> fig = plt.figure()
    >>> plt.plot([1, 2, 3, 4, 5])
    [<matplotlib.lines.Line2D at 0x1071706a0>]
    >>> wb = xw.Book()
    >>> wb.sheets[0].pictures.add(fig, name='MyPlot', update=True)
    <Picture 'MyPlot' in <Sheet [Workbook4]Sheet1>>
    
    pyplot效果图

    宏:在Excel中调用python

    这个我觉得还是蛮牛逼的,比方说你熟悉vba,又想写一些小工具做一些日常处理。
    但是在这之前,你需要搞定加载项,这里有坑可以填:VBA模块安装,这里假定你能搞定这些。
    加入你在你的alt+F11里谢了一段很牛逼的代码

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

    这段代码的意思就是:我要通过RunPython模块导入hello.py脚本,并且执行它里面的函数。
    现在你需要在表格的当前目录下新建一个hello.py文件,里面包含一个work函数。

    # hello.py
    import numpy as np
    import xlwings as xw
    
    def world():
     wb = xw.Book.caller()
     wb.sheets[0].range('A1').value = 'Hello World!'
    

    好了,这段代码执行以后,会以调用这个函数的表格为当前表格,并且在当前表格的第一个工作表的A1填上'hello world!'

    UDFs 用户自定义函数

    编写UDF更加简单:

    import xlwings as xw
    @xw.func
    def hello(name):
        return 'Hello {0}'.format(name)
    

    相关文章

      网友评论

        本文标题:翻译:xlwings快速入门

        本文链接:https://www.haomeiwen.com/subject/kybnpttx.html