本指南假設(shè)您已安裝xlwings。 如果不是這樣,請轉(zhuǎn)到安裝.
建立與工作簿的連接:
>>> import xlwings as xw
>>> wb = xw.Book() # 這將創(chuàng)建一個(gè)新的工作簿
>>> wb = xw.Book('FileName.xlsx') # 連接到當(dāng)前工作目錄中的現(xiàn)有文件
>>> wb = xw.Book(r'C:\path\to\file.xlsx') # 在Windows上:使用原始字符串來轉(zhuǎn)義反斜杠
復(fù)制如果您在兩個(gè)Excel實(shí)例中打開了相同的文件,則需要完全限定它并包含應(yīng)用程序?qū)嵗?您將通過xw.apps.keys()
找到您的應(yīng)用實(shí)例密鑰(PID):
>>> xw.apps[10559].books['FileName.xlsx']
復(fù)制實(shí)例化工作表對(duì)象:
>>> sht = wb.sheets['Sheet1']
復(fù)制在Range內(nèi)讀取/寫入值非常簡單:
>>> sht.range('A1').value = 'Foo 1'
>>> sht.range('A1').value
'Foo 1'
復(fù)制有許多便利功能,例如 Range擴(kuò)大:
>>> 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]]
復(fù)制功能強(qiáng)大的轉(zhuǎn)換器處理大多數(shù)感興趣的數(shù)據(jù)類型,包括Numpy數(shù)組和Pandas DataFrames兩個(gè)方向:
>>> 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
復(fù)制Matplotlib數(shù)字可以在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>>
復(fù)制活動(dòng)工作表的捷徑 : xw.Range
如果要快速與活動(dòng)工作簿中的活動(dòng)工作表通信,則不需要實(shí)例化工作簿和工作表對(duì)象,可以簡單地執(zhí)行:
>>> import xlwings as xw
>>> xw.Range('A1').value = 'Foo'
>>> xw.Range('A1').value
'Foo'
復(fù)制注意:在與Excel交互時(shí),您應(yīng)該只使用xw.Range
。 在腳本中,您應(yīng)該始終通過工作簿和工作表對(duì)象,如上所示。
您可以使用RunPython
函數(shù)從VBA調(diào)用Python函數(shù):
Sub HelloWorld()
RunPython ("import hello; hello.world()")
End Sub
復(fù)制默認(rèn)情況下,RunPython
在Excel文件所在的目錄中需要hello.py
。 請參閱使用xw.Book.caller
調(diào)用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!'
復(fù)制要進(jìn)行此運(yùn)行,您需要安裝xlwings加載項(xiàng)。 設(shè)置所有內(nèi)容的最簡單方法是從Windows上的命令提示符或Mac上的終端使用xlwings命令行客戶端:xlwings quickstart myproject
。
有關(guān)加載項(xiàng)的詳細(xì)信息,請參閱加載項(xiàng)。
在Python中編寫UDF非常簡單:
import xlwings as xw
@xw.func
def hello(name):
return 'Hello {0}'.format(name)
復(fù)制轉(zhuǎn)換器也可以與UDF一起使用。 再舉個(gè)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()
聯(lián)系客服