wxpython处理excel_Python操作Excel的Xlwings教程(二)
在上篇文章《操作Excel的Xlwings教程(一)》中介紹了Python 中操作Excel的一些模塊,重點介紹了Xlwings的一些基本操作。
本次文章將繼續(xù)上次的知識點,將介紹Xlwings的一些API知識,并展示一些小例子,讓大家可以跟著教程進(jìn)行實際的操作。
一、Apps
先來看一點點代碼
import xlwings as xw
app1 = xw.App()
app2 = xw.App()
print(xw.apps)
第二、三行代碼建立了兩個創(chuàng)建工作簿實例,運行后發(fā)現(xiàn):默認(rèn)的打開了兩個工作簿,這兩個工作簿會顯示的存在于你的桌面。
如果不想顯示,我們在創(chuàng)建實例的時候可以使用參數(shù):wx.App(visible=False)
第四行輸出為:Apps([, ]),其中[9244]和[19476]即為這兩個實例的PID。
其他方法:
xw.apps.active # 返回活動的應(yīng)用程序
# print(xw.apps.active) # 輸出,活動應(yīng)用程序的key
xw.apps.count # 計算app的總數(shù)
xw.apps.add() # 新增一個app
xw.apps.keys() # 返回所有Excel實例的PID
Active:很多小伙伴可能對激活不是很清楚,舉個例子:我們再使用Excel軟件的時候,可以打開好幾個工作簿,但是我們不能對打開的工作簿同時進(jìn)行操作,只能操作其中一個。這個Active的作用就是激活其中的一個你想使用的工作簿,將它變?yōu)榛顒庸ぷ鞑尽?/p>
二、APP
如何找出當(dāng)前打開的所有Book對象呢?
我們先建立幾個workbook,看看都有什么效果:
for i in range(1,4):
wookbook = xw.Book() #創(chuàng)建新的App并在創(chuàng)建的App新建Book
print(wookbook)
print(xw.books) #當(dāng)前打開的所有Book對象的集合
輸出如下:
Books([,, ])
可知:xw.Book()會新建工作簿,這里默認(rèn)會新建一個App,即打開Excel程序,并新建一個工作簿。而且Book這種方式則會打開多個窗口,之前所說的App.books.open方式則不會。
順便提一下引用工作簿的方法:(使用工作簿前要引用工作簿)
xw.Book('工作簿1') # 通過Book
xw.books['工作簿1'] # 通過books
(1)wb.app.calculate() # Calculates all open books.
(2)wb.app.calculation = ‘manual’ # 設(shè)置計算模式
(3)wb.app.display_alerts = True # 默認(rèn)值為True。False的情況下執(zhí)行操作的時候會忽略Excel的提示和警報消息(即彈窗信息)
(4)wb.app.screen_updating = False # 禁止屏幕更新(刷新)
(5)wb.app.range(cell1, cell2=None) # 獲取單元格
(6)wb.app.selection # 將所選單元格作為Range返回
(7)xw.App().version # 返回Excel程序版本號
三、Books
首先要知道所有的Book構(gòu)成Books,即Books是所有Book對象的集合,在第二節(jié)中已有描述。
那么Books中有哪些常用的方法或?qū)傩阅?#xff1f;
我們在示例中進(jìn)行簡單的說明:
import xlwings as xw
app1 = xw.App()
app2 = xw.App()
print(xw.books)
book_keys = xw.apps.keys()
first_book = book_keys[0] # 取列表的第一個值
print(xw.apps[first_book].books) # 應(yīng)用
print(app1.books.active) # 激活一個Book
print('count1:',app1.books.count) # 先打印一下app1下Book的總數(shù)
app1.books.add() # 增加一個新的Book,此新建的Book將自動變成被激活的Book
print('count1:',app1.books.count) # 再次打印app1下Book的總數(shù)
app1.books.open('1.xlsx') # 打開操作,如果工作簿未打開則打開,若它已經(jīng)打開,則返回工作簿對象。
# 或指定絕對路徑打開文件 app1.books.open('D:\datafile\1.xlsx')
print(app1.books.open('1.xlsx')) # 再一次打印app1下Book的總數(shù)
print('count1:',app1.books.count)
以上print的輸出依次為:
此時win10系統(tǒng)中,資源管理器的Excel進(jìn)程顯示如下:
可以看出,app1下打開了3個工作簿,app2下打開了1個工作簿。若想關(guān)閉某一個app下的全部工作簿的時候,可以使用kill(),如app1.kill()。
四、Book
官網(wǎng)中介紹到:A book object is a member of the books collection,即Book對象是Books集合的成員。下表顯示了xw.Book()和xw.books三種情況下的操作:(上篇推文也有介紹)
Tips:差別在于xw.Book()創(chuàng)建新的工作薄實例,xw.books是在活動工作薄中尋找一個實例
xw.Book()打開文件的時候,可選參數(shù)較多,具體的參數(shù)可以查看其構(gòu)造函數(shù),或者查看上篇文章10先生:Python操作Excel的Xlwings教程(一)?zhuanlan.zhihu.com
方法和屬性
xw.Book.activate(steal_focus=True) # True則激活最前面的窗口,并將焦點從python移交給excel
xw.Book.app # 獲取創(chuàng)建工作簿的app對象
xw.Book.caller() # 當(dāng)通過RunPython從Excel調(diào)用Python函數(shù)時引用調(diào)用的工作簿
xw.Book.set_mock_caller() # 設(shè)置當(dāng)前工作薄為Python代碼的調(diào)用者即set_mock_caller讓Python知道誰是調(diào)用者
xw.Book.close() # 關(guān)閉工作簿而不進(jìn)行保存
xw.Book.selection # 返回選定的單元格作為Range
xw.Book.macro() # 在Excel VBA中運行Sub或Function
xw.Book.name # 返回工作簿的名稱
xw.Book.names # 返回一個名稱集合
xw.Book.save(path=None) # 保存工作簿,可傳入保存路徑,同名會直接覆蓋
xw.Book.sheets # 返回表示工作簿中所有工作表的工作表集
對于xw.Book.set_mock_caller()的解釋此處引用網(wǎng)上的一段話:“有時代碼是從Python環(huán)境直接調(diào)試或調(diào)用的,沒有使用Excel里面的RunPython, 這時候沒有地方設(shè)定代碼的調(diào)用者是誰,就運行這個函數(shù)來假裝一下某個workbook就是這些代碼的調(diào)用者,讓Python環(huán)境與調(diào)用者能夠關(guān)聯(lián)起來。”
# 此代碼在Excel中通過RunPython和Python直接運行
import os
import xlwings as xw
def my_macro():
sheet = xw.Book.caller().sheets[0]
sheet.range('A1').value = '我愛python知識學(xué)堂'
if __name__ == '__main__':
xw.Book('1.xlsm').set_mock_caller() # 設(shè)置調(diào)用者
my_macro()
關(guān)于這個例子在后期會在解釋,主要是告訴大家可以使用Python實現(xiàn)對Excel的操作實現(xiàn)。具體實現(xiàn)的時候我們還要搭建在Excel中運行Python的環(huán)境。
關(guān)于一些操作不理解的小伙伴建議打開編譯器進(jìn)行實踐一下哦。
五、小結(jié)
這次的推文主要介紹了Apps、App、Books和Book相關(guān)的知識,對于這些概念覺可以這樣理解和記憶:App相當(dāng)于Excel程序(前文的進(jìn)程截圖);
?Book相當(dāng)于Excel的工作簿;
Range相當(dāng)于單元格,也可以是單元格區(qū)域;
多個Excel程序則由Apps表示,單個為App;
多個工作簿用Books表示,單個為Book;
多個工作表用Sheets表示,單個為Sheet。
總結(jié)
以上是生活随笔為你收集整理的wxpython处理excel_Python操作Excel的Xlwings教程(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python选出奇数并降序_奇数结点升序
- 下一篇: python控制语句中的条件语句_『Py