小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

處理Excel的Python算法_2_:批量處理Excel文件的模塊——xlwings

 昵稱2548375 2023-03-09 發(fā)布于河北

xlwings官方文檔

在這里插入圖片描述
官方網(wǎng)站:https://www./pro

Quickstart

1、腳本編寫:通過Python與Excel自動化/交互

創(chuàng)建excel工作簿實(shí)例

import xlwings as xw
wb = xw.Book()  # 創(chuàng)建一個新的excel文件
wb = xw.Book('FileName.xlsx')  # 連接當(dāng)前目錄下的excel文件
wb = xw.Book(r'C:\path\to\file.xlsx')  # 連接到路徑下的excel文件

同一文件多個實(shí)例

如果在兩個Excel實(shí)例中打開了同一個文件,則需要完全限定它并包含app實(shí)例。你可以通過xw.apps.keys()找到你的excel示例:

xw.apps[10559].books['FileName.xlsx']

創(chuàng)建sheet實(shí)例

sht = wb.sheets['Sheet1']

讀寫sheet文檔

# 讀寫單個單元格:
sht.range('A1').value = 'Foo 1'
sht.range('A1').value
# 有許多便利功能,例如拓展讀寫單元格范圍:
sht.range('A1').value = [['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]]
sht.range('A1').expand().value
---------------------------
Foo1  Foo2  Foo3
10.0  20.0  30.0
# 功能強(qiáng)大的轉(zhuǎn)換器可處理大多數(shù)感興趣的數(shù)據(jù)類型,包括雙向的Numpy數(shù)組和Pandas DataFrame:
import pandas as pd
df = pd.DataFrame([[1,2], [3,4]], columns=['a', 'b'])
sht.range('A1').value = df
sht.range('A1').options(pd.DataFrame, expand='table').value
---------------------------
       a    b
0.0  1.0  2.0
1.0  3.0  4.0
# Matplotlib圖形可以在Excel中顯示為圖片:
import matplotlib.pyplot as plt
fig = plt.figure()
plt.plot([1, 2, 3, 4, 5])
[<matplotlib.lines.Line2D at 0x1071706a0>]
sht.pictures.add(fig, name='MyPlot', update=True)
<Picture 'MyPlot' in <Sheet [Workbook4]Sheet1>>

2、宏:從Excel調(diào)用Python

您可以通過單擊Run加載項(xiàng)中的按鈕(v0.16中的新增功能)來調(diào)用Python函數(shù),也可以通過VBA使用該RunPython函數(shù)來調(diào)用Python函數(shù):

該Run按鈕需要一個main在Python模塊中調(diào)用的函數(shù),該函數(shù)的名稱與您的工作簿相同。這種方法的優(yōu)點(diǎn)在于,您不需要將工作簿啟用宏,可以將其另存為xlsx。

如果要調(diào)用任何Python函數(shù),無論它位于哪個模塊中或具有什么名稱,請使用RunPython:

Sub HelloWorld()
    RunPython "import hello; hello.world()"
End Sub

默認(rèn)情況下,RunPython期望hello.py與Excel文件位于同一目錄中,但是您可以通過config進(jìn)行更改。通過使用xw.Book.caller以下內(nèi)容來參考調(diào)用Excel的工作簿:

# hello.py
import numpy as np
import xlwings as xw

def world():
    wb = xw.Book.caller()
    wb.sheets[0].range('A1').value = 'Hello World!'

要運(yùn)行此程序,您需要安裝xlwings加載項(xiàng)。進(jìn)行所有設(shè)置的最簡單方法是從Windows上的命令提示符或Mac上的終端使用xlwings命令行客戶端。xlwings quickstart myproject

3. UDF:用戶定義的功能(僅Windows)

用Python編寫UDF很容易:

import xlwings as xw

@xw.func
def hello(name):
    return 'Hello {0}'.format(name)

轉(zhuǎn)換器也可以與UDF一起使用。再次以Pandas DataFrame為例:

import xlwings as xw
import pandas as pd

@xw.func
@xw.arg('x', pd.DataFrame)
def correl2(x):
    # x arrives as DataFrame
    return x.corr()

通過單擊xlwings加載項(xiàng)的導(dǎo)入按鈕將該函數(shù)導(dǎo)入Excel:有關(guān)更多詳細(xì)信息,請參見用戶定義函數(shù)(UDF)。

簡單示例

import xlwings as xw
 
# 創(chuàng)建工作簿
app = xw.App(visible = True, add_book = False) # 創(chuàng)建excel實(shí)例,啟動窗口,暫不不創(chuàng)建工作簿
workbook = app.books.add() # 創(chuàng)建工作簿

# 保存工作簿
workbook.save('d:\\example.xlsx')
workbook.close()  # 關(guān)閉工作簿
app.quit()  # 退出Excel程序

# 打開工作簿
import xlwings as xw
app = xw.App(visible = True, add_book = False)
workbook = app.books.open(r'd:\example.xlsx')  # 打開D盤根文件夾下名
# 需要注意的是,指定的工作簿必須真實(shí)存在,并且不能處于已打開的狀態(tài)。

# 操控工作表和單元格
import xlwings as xw
app = xw.App(visible = False)
workbook = app.books.add()
worksheet = workbook.sheets.add('產(chǎn)品統(tǒng)計表')
worksheet.range('A1').value = '編號'
workbook.save(r'd:\北京.xlsx')
workbook.close()
app.quit()

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多