国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
從VBA到Python,Excel工作效率如何提高?


作者:Costas 

編譯:1+1=6

1

前言

如果有一種方法可以將Excel與Python集成起來,該多好啊!現(xiàn)在有了:

xlwings庫(kù)允許我們通過VBA調(diào)用Python腳本來進(jìn)行兩者的交互!

2

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

事實(shí)上,你可以在VBA中做任何事情。那么為什么要使用Python呢?原因有很多:

1、你可以在Excel中創(chuàng)建一個(gè)自定義函數(shù),而不需要學(xué)習(xí)VBA。

2、使用Python可以顯著加快數(shù)據(jù)操作的速度。

3、Python中有各種各樣的庫(kù)(機(jī)器學(xué)習(xí)、數(shù)據(jù)科學(xué)等)、

4、因?yàn)槟憧梢裕?/strong>?。?/strong>

3

xlwings安裝

第一步安裝:

pip install xlwings

接下來,我們需要安裝Excel集成部分:

xlwings addin install

在使用 Excel 2016的 Win10上,人們經(jīng)常會(huì)看到以下錯(cuò)誤:

你可以通過使用 mkdir 命令解決這個(gè)問題:

安裝好一切:

4

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

首先我們需要加載 Excel 外接程序:

最后,我們需要啟用對(duì) VBA 項(xiàng)目對(duì)象模型的信任訪問。你可以通過導(dǎo)航到文件選項(xiàng)信任中心設(shè)置宏來做到這一點(diǎn):

5

具體操作

有兩種主要的方法可以使我們從 Excel 轉(zhuǎn)換到 Python(以及轉(zhuǎn)換回來)。第一種是直接從 VBA 調(diào)用 Python 腳本,另一種是通過用戶定義函數(shù)調(diào)用。

為了我們每次都能正確設(shè)置,xlwings提供了創(chuàng)建Excel電子表格的功能:

xlwings quickstart ProjectName

上面的命令將使用 Excel 工作表和 Python 文件在預(yù)導(dǎo)航目錄中創(chuàng)建一個(gè)新文件夾。

打開.xlsm文件,你會(huì)立即注意到一個(gè)名為_xlwings.conf的新Excel工作表。如果你希望覆蓋xlwings的默認(rèn)設(shè)置,只需重命名該工作表并刪除開始的下劃線即可。通過這些,我們就可以開始使用xlwings了。

6

從VBA到Python

在我們開始編碼之前,讓我們首先確保在同一個(gè)頁面上。打開Excel VBA 編輯器,點(diǎn)擊 Alt + F11。返回以下屏幕:

這里要注意的關(guān)鍵事情是,這段代碼將做以下工作:

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

2、查找與電子表格名稱相同的Python腳本(擴(kuò)展名為.py)。

3、在Python腳本中,調(diào)用函數(shù)main()。

讓我們看幾個(gè)例子,看看如何使用它。

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

在本例中,我們將看到如何在Excel之外執(zhí)行操作,然后在電子表格中返回結(jié)果。

我們將從CSV文件中獲取數(shù)據(jù),對(duì)這些數(shù)據(jù)進(jìn)行修改,然后將輸出傳遞到Excel:

首先,VBA代碼。

然后,Python代碼:

import xlwings as xw
import pandas as pd
def 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

結(jié)果如下:

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

更具體地說,我們將讀取一個(gè) Greeting,一個(gè) Name 和一個(gè)我們可以找到j(luò)okes的文件位置。 然后,我們的 Python 腳本將從文件中隨機(jī)抽取一行,并返回一個(gè)jokes。

首先,VBA代碼。

然后,Python代碼:

import xlwings as xw
import random
def random_line(afile):
    line = next(afile)
    for num, aline in enumerate(afile, 2):
      if random.randrange(num): continue
      line = aline
    return line

def 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é)果如下:

7

用戶定義函數(shù)與xlwings

我們將以與以前幾乎相同的方式更改python文件中的代碼。為了把一個(gè)東西變成一個(gè)Excel用戶定義函數(shù),我們需要做的就是

與前面的方式大致相同,我們將更改 Python 文件中的代碼,使其變成一個(gè) Excel 用戶定義函數(shù),我們所需要做的就是包含@xw.func:

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

結(jié)果如下:

希望大家可以有所收獲!

2020年第25篇文章

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務(wù)
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服