日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

excel vba 调用webbrowser_Python杀死Excel?我只会用Python来增强Excel!

發(fā)布時(shí)間:2025/3/20 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 excel vba 调用webbrowser_Python杀死Excel?我只会用Python来增强Excel! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Excel既是一種祝福,也是一種詛咒。當(dāng)涉及到足夠小的數(shù)據(jù)和足夠簡(jiǎn)單的操作時(shí),Excel是王者。然而,一旦你發(fā)現(xiàn)數(shù)據(jù)非常多時(shí),它就會(huì)變成一種痛苦。當(dāng)然,你可以使用Excel VBA來解決這些問題,但是在2020年,你感到慶幸,因?yàn)槟悴槐剡@么做!

如果有辦法把Excel和Python結(jié)合在一起,給Excel插上翅膀那就更好了!一個(gè)名為xlwings的python庫(kù)允許您通過VBA調(diào)用python腳本并在兩者之間傳遞數(shù)據(jù)。

為什么要將Python與Excel VBA集成?

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

  • 你可以在Excel中創(chuàng)建自定義函數(shù),而不必學(xué)習(xí)VBA
  • 用戶在Excel的使用中感覺很舒服
  • 使用Python可以顯著加快數(shù)據(jù)操作的速度
  • 在Python中,幾乎所有東西都有庫(kù)(機(jī)器學(xué)習(xí)、數(shù)據(jù)科學(xué)等)
  • 準(zhǔn)備使用xlwings

    我們需要做的第一件事,就像我們想使用的任何新庫(kù)一樣,就是安裝它。這是非常容易做到的,通過兩個(gè)命令,我們很快就會(huì)建立起來。所以,繼續(xù)輸入你的終端:

    pip install xlwings

    下載并安裝庫(kù)后,我們需要安裝Excel集成部分。確保已關(guān)閉所有Excel實(shí)例和任何終端類型:

    xlwings addin install

    如果沒有遇到錯(cuò)誤,你應(yīng)該能夠繼續(xù)。但是在Win10 with Excel 2016上,人們經(jīng)常會(huì)看到以下錯(cuò)誤:

    xlwings 0.17.0[Errno 2] No such file or directory: 'C:甥敳獲costaAppDataRoamingMicrosoftExcelXLSTARTxlwings.xlam'

    如果你是一個(gè)幸運(yùn)的人來經(jīng)歷上述錯(cuò)誤,你所需要做的就是創(chuàng)建丟失的目錄。通過使用mkdir命令,您可以很容易地做到這一點(diǎn)。就我而言,我做到了:

    mkdir C:甥敳獲costaAppDataRoamingMicrosoftExcelXLSTART

    假設(shè)excel與python庫(kù)的集成安裝成功,你將注意到的主要區(qū)別是excel:

    為xlwings啟用用戶定義函數(shù)

    首先,我們需要加載Excel加載項(xiàng),你可以點(diǎn)擊Alt,L,H,然后導(dǎo)航到上面的目錄來加載插件。完成后,您應(yīng)該能夠看到以下內(nèi)容:

    最后,需要啟用對(duì)VBA工程對(duì)象模型的信任訪問。你可以通過導(dǎo)航到“文件>選項(xiàng)>信任中心>信任中心設(shè)置>宏設(shè)置”來執(zhí)行此操作:

    xlwings入門

    從Excel到Python(和返回)有兩種主要方式。第一個(gè)是直接從VBA調(diào)用Python腳本,另一個(gè)是通過用戶定義的函數(shù)。讓我們快速看一下兩者。

    為了避免任何混亂,并有正確的設(shè)置每次,xlwings提供創(chuàng)建您的Excel電子表格,準(zhǔn)備好了。然后讓我們使用這個(gè)功能。使用終端,我們導(dǎo)航到喜歡的目錄并鍵入:

    xlwings quickstart ProjectName

    我叫這是MyFirstPythonXL。上面的命令將在預(yù)先導(dǎo)航的目錄中創(chuàng)建一個(gè)新文件夾,其中包含一個(gè)Excel工作表和一個(gè)python文件。

    打開.xlsm文件時(shí),你會(huì)注意到一個(gè)名為xlwings.conf的新Excel工作表。如果要覆蓋xlwings的默認(rèn)設(shè)置,你只需重命名此工作表并刪除起始下劃線。這樣,我們都準(zhǔn)備好開始使用xlwings了。

    VBA到Python

    在我們開始編碼之前,讓我們首先確保我們都在同一頁上。要打開我們的Excel VBA編輯器,請(qǐng)按Alt+F11。這將返回以下屏幕:

    這里要注意的關(guān)鍵是,此代碼將執(zhí)行以下操作:

  • 在與電子表格相同的位置查找Python腳本
  • 查找與電子表格同名的Python腳本(但擴(kuò)展名為.py)
  • 在Python腳本中,調(diào)用函數(shù)“main()”
  • 不用再費(fèi)心了,讓我們來看看如何使用它的幾個(gè)例子。

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

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

    我們將從CSV文件中獲取數(shù)據(jù),對(duì)所述數(shù)據(jù)進(jìn)行修改,然后將輸出傳遞給Excel。讓我們回顧一下這有多簡(jiǎn)單:

    首先,VBA代碼:

    我把它與默認(rèn)設(shè)置完全保持不變。

    然后,Python代碼:

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

    結(jié)果如下:

    示例2:使用Excel輸入驅(qū)動(dòng)操作

    在本例中,我們將從Excel讀取輸入,用Python對(duì)其進(jìn)行處理,然后將結(jié)果傳遞回Excel。

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

    首先,VBA代碼:

    我把它與默認(rèn)設(shè)置完全保持不變。

    然后,Python代碼:

    import xlwings as xwimport 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)

    結(jié)果如下:

    帶xlwings的用戶定義函數(shù)

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

    Python代碼:

    import xlwings as xw@xw.funcdef joke(x): wb = xw.Book.caller() fhandle = open(r'C:Templist.csv') for i, line in enumerate(fhandle): if i == x: return(line)

    結(jié)果如下:

    結(jié)論

    我想你會(huì)同意這是一個(gè)非常好用的小工具。如果你和我一樣,更喜歡使用Python而不是VBA,但需要使用電子表格,那么這可能是一個(gè)非常好的工具。

    --END--

    歡迎大家關(guān)注我們的公眾號(hào):為AI吶喊(weainahan)

    為了幫助更多缺少項(xiàng)目實(shí)戰(zhàn)的同學(xué)入門Python,我們?cè)陬^條上創(chuàng)建了一個(gè)專欄:《7小時(shí)快速掌握Pthon核心編程》歡迎大家點(diǎn)擊下方鏈接或者閱讀原文進(jìn)行試看~

    總結(jié)

    以上是生活随笔為你收集整理的excel vba 调用webbrowser_Python杀死Excel?我只会用Python来增强Excel!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。