終於,可以在Excel中直接使用Python!

2021-10-13 21:00:10 字數 3717 閱讀 9235

exceljupyter notebok都是我每天必用的工具,而且兩個工具經常協同工作,一直以來工作效率也還算不錯。但說實在,畢竟是兩個工具,使用的時候肯定會有一些切換的成本。

最近,在逛github突然發現了一款神器「pyxll-jupyter」,它可以完美將jupyter notebook嵌入到excel中!是的,你沒聽錯,使用它我們就可在excel中執行jupyter notebook,呼叫python函式,實現資料共享。

首先,想要在excel中執行python**,需要安裝pyxll外掛程式。pyxll可以將python整合到excel中,用python替代vba

先用 pip 安裝pyxll

pip install pyxll
然後再用pyxll獨特的命令列工具安裝excel外掛程式。

>> pyxll install
安裝好了pyxll在 excel中的外掛程式,下一步就是安裝pyxll-jupyter軟體包了。使用pip安裝pyxll-jupyter軟體包:

pip install pyxll-jupyter
安裝完畢後,啟動excel,將在pyxll選項卡中看到乙個新的jupyter按鈕。

單擊此按鈕可在excel工作簿的側面板中開啟jupyter notebook。該面板是excel介面的一部分,可以通過拖放操作取消停靠或停靠在其他位置。

在jupyter面板中,你可以選擇乙個現有的notebook或建立乙個新的notebook。建立乙個新的notebook,選擇新建按鈕,然後選擇python 3

這樣做有什麼用處呢?

比如,我們要將資料從excel匯入python。

由於excel和python已經在同一程序中執行了,所以在python中訪問excel資料以及在python和excel之間切換非常快。

更牛x的是,pyxll-jupyter還單獨附帶了一些ipython魔法函式,輸入後一鍵即可完成同步。

將python中的資料移到excel,也是同理,非常簡單。無論是使用python先載入資料集,再傳輸到excel,還是其它形式,從python複製資料到excel非常容易。

當然,%xl_get%xl_set都附帶引數選項可以自定義匯入匯出規則。

pyxll的另一大用處就是它整合了幾乎所有主流的視覺化包,因此我們可以在excel中利用這些視覺化包隨意繪圖,包括matplotlibplotlybokehaltair等。

同樣,使用魔法函式%xl_plot在excel中可以繪製任何的python圖。任何乙個受支援的視覺化包也可進行繪圖然後傳遞圖形物件到excel中,比如上圖中使用pandas的繪圖效果就很好。

%xl_plot df.plot(kind='scatter')
使用excel離不開函式,而當我們需要一些複雜功能時,自帶函式未必能滿足我們的需求。

函式寫好後,還可將其新增到pyxll python專案中。這樣以後每次都可以復用實現相同功能,簡直不要太香!

from pyxll import xl_func

@xl_func

def test_func(a, b, c):

return (a * b) + c

比如,輸入以上**在jupyter中執行後,python函式將立即可被excel工作簿呼叫。

不只是簡單的函式,還可以將整個資料作為pandasdataframes傳給函式,並返回任何的python型別,比如numpy arraydataframes,甚至還可以通過給@xl_func裝飾器乙個簽名字串來告訴pyxll輸出什麼型別。例如,以下函式:

from pyxll import xl_func

# 裝飾器簽名告訴 pyxll 如何轉換函式引數和返回的值

@xl_func("dataframe df: dataframe", auto_resize=true)

def df_describe(df):

# df 是乙個從資料集裡建立的 pandas dataframe 傳遞給函式

desc = df.describe()

# desc 是新的 dataframe(pyxll轉換為一組值並返回給excel所建立的)

return desc

現在可以編寫複雜的python函式來進行資料轉換和分析,但是可以協調在excel中如何呼叫或排序這些函式。更改輸入會導致呼叫函式,並且計算出的輸出會實時更新,這與我們期望的一樣。

vba指令碼所需的功能函式,在python中均有相同的api。這對於熟悉python但不熟悉vba的同學絕對是個好訊息。

官網還給出了和vba功能一樣的api說明文件。

jupyter notebook在excel中執行,整個excel物件都可用,所有操作就像在vba編輯器中編寫excel指令碼一模一樣。

由於pyxll在excel程序內執行python ,因此從python呼叫excel不會對效能造成任何影響。當然,也可以從外部python程序呼叫excel,但這通常要慢很多。在excel中執行jupyter notebook,一切變得就不一樣了!

下圖中嘗試將當前選擇單元格更改顏色。

pyxll將完美融合pythonexcel,實現了以下功能,為**資料處理提公升乙個全新的高度。

不得不說這個工具是真的香,喜愛python的同學可以不用學習vba了,python指令碼打天下。

在Yii中直接使用sql

在yii中直接使用sql,是建立在php擴充套件pdo的基礎之上。使用前,確保pdo已安裝 一 建立連線 1,查詢 query 方式一 最簡潔 sql select a.id,b.name,parts type,parts model,partmanufacturer,number,confirm ...

在Yii中直接使用sql

在yii中直接使用sql,是建立在php擴充套件pdo的基礎之上。使用前,確保pdo已安裝 一 建立連線 其中db是在.config main.php中配置的 二 使用sql 1,查詢 query 方式一 最簡潔 方式二 主要區別在查詢動作。可拆分為兩步 datareader command que...

chrome中直接使用import

現在我們在開發專案時都是基於構建工具 像webpack 上進行開發,所以在使用import時得心應手。但今天在chrome中直接使用import時,發現不知道如何使用?chrome中直接使用import 三個條件 瀏覽器版本需要支援,瀏覽器的支援情況 使用 注意 引入路徑不能省略檔案字尾 這個與在構...