中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python增強Excel減少處理復雜數據的痛苦

發布時間:2021-10-28 17:53:27 來源:億速云 閱讀:199 作者:柒染 欄目:編程語言

今天就跟大家聊聊有關如何用Python增強Excel減少處理復雜數據的痛苦,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

Excel既是一種祝福,也是一種詛咒。

當涉及到足夠小的數據和足夠簡單的操作時,Excel是王道。然而,一旦發現自己在努力走出這些區域,它就會變成一種痛苦。

當然,可以使用ExcelVBA來解決這些問題,但是在2020年,幸運的你不必這么做了!

如果有辦法把Excel和Python集成在一起,Excel……就會插上翅膀!

現在有了。一個名為xlwings的python庫允許用戶通過VBA調用python腳本并在兩者之間傳遞數據。

為什么要將Python與ExcelVBA集成?

事實上,用戶可以在VBA中做任何事情。所以,如果是這樣,為什么要使用Python?嗯,有很多原因。

1.在Excel中可以創建自定義函數,而不必學習VBA(如果讀者還不知道的話)

2.用戶對Excel很滿意

3.使用Python可以顯著加快數據操作

4.在Python中,幾乎所有東西都有庫(機器學習、數據科學等)

5.因為你可以!!!

準備使用xlwings

要做的第一件事,和想使用的任何新庫一樣,就是安裝它。這是非常容易做到的;有了這兩個命令,很快就能準備就緒。所以,把命令輸入終端:

pipinstall xlwings

下載并安裝庫后,需要安裝Excel集成部分。確保已關閉所有Excel實例和任何終端類型:

xlwings addin install

假設沒有遇到錯誤,應該能夠繼續。然而,在Win10 的 Excel2016上,人們經常會看到以下錯誤:

xlwings0.17.0 [Errno 2] No such file or directory:'C:\\Users\\costa\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\\xlwings.xlam'

如果走運地遇到了上述錯誤,需要做的就是創建丟失的目錄。通過使用mkdir命令,可以很容易地做到這一點。就筆者而言,筆者做到了:

mkdirC:\\Users\\costa\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART

假設excel與python庫的集成安裝成功,則可以立即注意到excel的主要區別:

如何用Python增強Excel減少處理復雜數據的痛苦

為xlwings啟用用戶定義函數

首先,需要加載Excel加載項。點擊Alt,L,H,然后導航到上面的目錄來加載插件。完成后,應該能夠看到以下內容:

如何用Python增強Excel減少處理復雜數據的痛苦

最后,需要啟用對VBA工程對象模型的信任訪問。可以通過導航到“文件>選項>信任中心>信任中心設置>宏設置”來執行此操作:

xlwings入門

從Excel到Python(Python到Excel)有兩種主要方式。第一種是直接從VBA調用Python腳本,另一種是通過用戶定義的函數。快速看一下兩者。

為了避免任何混淆,每次都能正確設置,xlwings提供了創建Excel電子表格的功能,準備就緒。下面來使用這個功能。使用終端,導航到喜歡的目錄并鍵入:

xlwingsquickstart ProjectName

把這稱之為MyFirstPythonXL。上面的命令將在預先導航的目錄中創建一個新文件夾,其中包含一個Excel工作表和一個python文件。

如何用Python增強Excel減少處理復雜數據的痛苦

打開.xlsm文件時,可以立即注意到一個名為xlwings.conf的新Excel工作表。如果要覆蓋xlwings的默認設置,只需重命名此工作表并刪除起始下劃線。這樣,準備工作就完成了,下面開始使用xlwings。

VBA到Python

在開始編碼之前,首先確保我們都在同一頁上。要打開ExcelVBA編輯器,請按Alt+F11。這將返回以下屏幕:

如何用Python增強Excel減少處理復雜數據的痛苦

帶xlwings的VBA編輯器

這里關鍵要注意的是,此代碼將執行以下操作:

1.在與電子表格相同的位置查找Python腳本

2.查找與電子表格同名的Python腳本(但擴展名為.py)

3.從Python腳本調用函數“main()”

言歸正傳,來看看幾個使用的實例。

例1:在Excel之外操作,并返回輸出

在本例中,將看到如何在Excel之外執行操作,但隨后將結果返回到電子表格中。這可以有無限多的用例。

從CSV文件中獲取數據,對數據進行修改,然后將輸出傳遞給Excel。這一操作很簡單:

首先,VBA代碼:

它與默認設置完全保持不變。

然后,Python代碼:

importxlwings as xw import pandas as pddef main():     wb = xw.Book.caller()     df =pd.read_csv(r'C:\temp\TestData.csv')     df['total_length'] =  df['sepal_length_(cm)'] +df['petal_length_(cm)']     wb.sheets[0].range('A1').value = df

結果如下:

如何用Python增強Excel減少處理復雜數據的痛苦

示例2:使用Excel輸入來驅動操作

在本例中,從Excel讀取輸入,用Python對其進行處理,然后將結果傳遞回Excel。

更具體地說,要讀一個問候語,一個名字和一個文件位置,在那里可以找到笑話。然后,Python腳本將從文件中隨機抽取一行,并返回一個笑話。

首先,VBA代碼:

它與默認設置完全保持不變。

然后,Python代碼:

importxlwings as xw import randomdef random_line(afile):     line = next(afile)     for num, aline in enumerate(afile,2):       if random.randrange(num): continue       line = aline     return line 'Function from: stackoverflowdef main():     wb = xw.Book.caller()     listloc =str(wb.sheets[0].range('B3').value)     fhandle = open(listloc, encoding ='utf-8')wb.sheets[0].range('A5').value = wb.sheets[0].range('B2').value + ' ' +wb.sheets[0].range('B1').value + ' here is a joke for you'     wb.sheets[0].range('A6').value =random_line(fhandle)

結果為:

如何用Python增強Excel減少處理復雜數據的痛苦

帶xlwigs的用戶定義函數

用與以前幾乎相同的方式更改python文件中的代碼。為了將某些內容轉換為Excel用戶定義函數,我們只需在函數所在的行之前包含“@xw.func”:

Python代碼:

importxlwings as xw@xw.func def joke(x):     wb = xw.Book.caller()     fhandle = open(r'C:\Temp\list.csv')     for i, line in enumerate(fhandle):         if i == x:             return(line)

結果是:

如何用Python增強Excel減少處理復雜數據的痛苦

如果你和小芯一樣,更喜歡使用Python而不是VBA,但又需要使用電子表格,這個工具是你的不二選擇,你可以把它當作一個漂亮的小型數據庫。

看完上述內容,你們對如何用Python增強Excel減少處理復雜數據的痛苦有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祁连县| 上饶市| 上栗县| 五台县| 蓝山县| 高密市| 铜鼓县| 乐陵市| 陇西县| 新兴县| 徐汇区| 巴楚县| 衡阳县| 靖远县| 许昌市| 申扎县| 扎赉特旗| 祁东县| 眉山市| 延吉市| 墨玉县| 越西县| 长宁县| 思南县| 伊春市| 伊金霍洛旗| 钦州市| 黄石市| 陇西县| 新密市| 南皮县| 万载县| 朔州市| 武定县| 丰顺县| 五原县| 麦盖提县| 淮滨县| 布尔津县| 武夷山市| 陇川县|