更新說明下篇亭,這篇文字不是原創(chuàng)昧碉,是翻譯自:xlwings_Quickstart
Quickstart
假設(shè)你已經(jīng)安裝了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數(shù)組和Pandas的DataFrames數(shù)組,填充到單元格锌雀。同時也很容易從表格中按自己的方式讀取數(shù)組
>>> 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
一個完整的示例:創(chuàng)建一個電子表格蚂夕,添加一個新的工作表,在指定工作表中添加數(shù)據(jù)腋逆。
>>> 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>>
宏:在Excel中調(diào)用python
這個我覺得還是蠻牛逼的俏蛮,比方說你熟悉vba,又想寫一些小工具做一些日常處理上遥。
但是在這之前搏屑,你需要搞定加載項,這里有坑可以填:VBA模塊安裝,這里假定你能搞定這些粉楚。
加入你在你的alt+F11里謝了一段很牛逼的代碼
Sub HelloWorld()
RunPython ("import hello; hello.world()")
End Sub
這段代碼的意思就是:我要通過RunPython模塊導(dǎo)入hello.py腳本辣恋,并且執(zhí)行它里面的函數(shù)。
現(xiàn)在你需要在表格的當前目錄下新建一個hello.py文件模软,里面包含一個work函數(shù)伟骨。
# hello.py
import numpy as np
import xlwings as xw
def world():
wb = xw.Book.caller()
wb.sheets[0].range('A1').value = 'Hello World!'
好了,這段代碼執(zhí)行以后燃异,會以調(diào)用這個函數(shù)的表格為當前表格携狭,并且在當前表格的第一個工作表的A1填上'hello world!'
UDFs 用戶自定義函數(shù)
編寫UDF更加簡單:
import xlwings as xw
@xw.func
def hello(name):
return 'Hello {0}'.format(name)