利用python在excel裡面直接使用sql函式
我們一般在Excel裡面是使用資料連線屬性裡面寫sql語句,或者vba裡面利用ado元件執行sql語句。新版的Excel裡面帶上了Power query的功能也可以使用Odbc.DataSource()和Odbc.Query()函式寫sql語句。今天講一下利用Python直接在excel裡面使用xlwings addin 裡的一個名為sql的函式。
首先我們需要在python裡面安裝好xlwings模組。執行pip/conda install xlwings命令 即可完成安裝。然後繼續在命令列裡再執行xlwings addin install就會安裝一個xlwings 的外掛到我們的Excel裡。如果你的Excel檔案已經開啟,需要關閉然後開啟Excel檔案,才能看到安裝好的外掛。如下圖:
我們需要在左邊的interpreter的選項框裡輸入python直譯器所在的路徑。我的路徑是:"D:\ProgramData\Miniconda3\pythonw.exe".這樣基本的操作就搞定了。下面我們來試試如何寫函式公式。
下圖是一張“季度”工作表,資料格式如下:
我要在sheet1裡面查詢到“季度“”表裡通過方式為網銀的資料。我只需要在sheet1工作表的A1這一個單元格里輸入公式:
=sql("select * from a where 方式='網銀'",季度!A1:N1000),然後按下enter鍵。查詢就完成。這和我們一般在Excel裡面的公式是不一樣的。一般情況下excel的公式需要我們下拉或者陣列填充才能擴充套件資料範圍。這裡是只有A1一個單元格有公式。
這樣就順利完成了查詢,而且效率比較高,一點不卡。這個sql函式就是第一引數是sql語句。後面都是查詢要用到的表名稱範圍。查詢語句裡面分別依次用別名指代後面的引用表。我上面的公式就是用別名a代表後面的查詢表"季度!A1:N1000"資料範圍,多個查詢表就分別用sql語句裡的多個別名依次指代了,很容易理解吧。不過資料範圍過大查詢會出現記憶體溢位的,十幾萬資料應該是沒問題的。好了,基本的東西就講到這裡了。