轉excel vba Python使Excel更快

2021-10-16 09:39:27 字數 2813 閱讀 5471

python excel-讀寫複製搜尋excel檔案-openpyxl​viadean.com

在excel中使用python​viadean.com

python自動化:使用python自動執行枯燥任務 - 國外課棧​viadean.com

對於我們要使用的任何新庫,我們需要做的第一件事就是安裝它。這很容易做到;使用兩個命令,我們將立即建立。因此,繼續輸入您的終端:

pip install xlwings

xlwings addin install
假設您沒有任何錯誤,則應該可以繼續進行。但是,通常在具有excel 2016的win10上,人們會看到以下錯誤:

xlwings 0.17.0
如果您是遇到上述錯誤的幸運者之一,那麼您要做的就是建立丟失的目錄。您可以使用mkdir命令輕鬆地做到這一點。

假設成功安裝了python庫的excel整合,您將立即注意到excel中的主要區別:

首先,我們需要載入excel載入項。您可以按alt,l,h,然後導航到上面的目錄以載入外掛程式。完成後,您應該可以看到以下內容:

最後,您需要啟用對vba專案物件模型的信任訪問。您可以通過導航到檔案》選項》信任中心》信任中心設定》巨集設定來做到這一點:

從excel到python(往返)的主要方法有兩種。第乙個是直接從vba呼叫python指令碼,而另乙個是通過使用者定義函式。讓我們快速瀏覽一下兩者。

為了避免混淆並每次都進行正確的設定,xlwings提供了建立excel電子**的準備,隨時可以使用。然後讓我們使用此功能。在終端上,我們導航到所需的目錄並輸入:

xlwings quickstart projectname
我稱之為myfirstpythonxl。上面的命令將在您的預導航目錄中建立乙個帶有excel工作表和python檔案的新資料夾。

這裡要注意的關鍵是該**將執行以下操作:

在此示例中,我們將看到您如何在excel之外進行操作,然後在電子**中返回結果。這可以有無限數量的用例。

我們將從csv檔案中獲取資料,對該資料進行修改,然後將輸出傳遞給excel。讓我們來看看它有多簡單:

首先,vba**:

我將其保留為預設值。

然後,python**:

import xlwings as xw

import pandas as pd

def main():

wb = xw.book.caller()

df = pd.read_csv(r'c:temptestdata.csv')

df['total_length'] = df['sepal_length_(cm)'] + df['petal_length_(cm)']

wb.sheets[0].range('a1').value = df

結果如下:

在此示例中,我們將從excel中讀取輸入,在python中對其進行處理,然後將結果傳遞歸excel。

首先,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

'function from: stackoverflow

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)

結果是:

與以前幾乎相同的方式,我們將更改python檔案中的**。為了將某些內容轉換為excel使用者定義函式,我們需要做的就是在函式開啟的行之前包含「 @ xw.func」:

import xlwings as xw

@xw.func

def joke(x):

wb = xw.book.caller()

fhandle = open(r'c:templist.csv')

for i, line in enumerate(fhandle):

if i == x:

return(line)

結果:python使excel更快 - 國外課棧​viadean.com

GPT轉MBR怎麼轉?

如果本身電腦有兩個硬碟,可以直接在win7 win8系統下進行gpt轉mbr 如果只有乙個硬碟,那可以進入winpe裡面進行gpt磁碟轉mbr磁碟。注 gpt轉mbr必須得清空硬碟上的所有資料!請注意儲存資料!1 在win7 win8系統下,按快捷鍵 win r 彈出執行視窗,然後輸入 cmd wi...

GPT轉MBR怎麼轉?

如果本身電腦有兩個硬碟,可以直接在win7 win8系統下進行gpt轉mbr 如果只有乙個硬碟,那可以進入winpe裡面進行gpt磁碟轉mbr磁碟。注 gpt轉mbr必須得清空硬碟上的所有資料!請注意儲存資料!1 在win7 win8系統下,按快捷鍵 win r 彈出執行視窗,然後輸入 cmd wi...

java後台轉json 轉物件 轉list集合

前台資料傳遞到後台轉json 1 普通格式轉換成物件 string data request.getparameter data 單資料的時候轉換方式 jsonobject json jsonobject.fromobject data tree tree tree jsonobject.tobea...