<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python代替Excel VBA,原來真的可以

          共 3432字,需瀏覽 7分鐘

           ·

          2022-01-22 13:05

          ??點(diǎn)擊“博文視點(diǎn)Broadview”,獲取更多書訊

          VBA與Python:當(dāng)王者榮耀遇到卷王之王

          VBA語言是VB的一個(gè)子集,具有簡(jiǎn)單易學(xué)、功能強(qiáng)大的特點(diǎn)。

          上世紀(jì)90年代末至今,VBA語言被大部分主流行業(yè)軟件用作腳本語言,包括辦公軟件如Excel、Word、PowerPoint等,GIS軟件如ArcGIS、MapInfo、GeoMedia等,CAD軟件如AutoCAD、 SolidWorks等,統(tǒng)計(jì)軟件如SPSS等,甚至連圖形軟件如PhotoShop、CoralDraw等也使用VBA進(jìn)行腳本編程。

          近年來,Python語言異軍突起,在各大計(jì)算機(jī)語言排行榜上牢牢占據(jù)前3名。

          Python語言同樣簡(jiǎn)單易學(xué),并且免費(fèi)開源,在系統(tǒng)運(yùn)維、網(wǎng)絡(luò)編程、科學(xué)計(jì)算等領(lǐng)域取得廣泛的應(yīng)用。Python有很多內(nèi)置的庫和第三方庫,每個(gè)庫在某個(gè)行業(yè)或方向上提供功能。利用它們,用戶可以站在前人的肩膀上,將主要精力放在自己的事情上,做到事半功倍。

          另外,Python號(hào)稱膠水語言,被越來越多的軟件用作腳本語言。上面提到的很多行業(yè)軟件中,ArcGIS和SPSS軟件官方已經(jīng)將Python作為內(nèi)置的腳本語言,與VBA語言放在一起供用戶選擇使用。其他如Excel、Word、PowerPoint、AutoCAD等也能找到各種第三方Python包,利用它們可以部分或整體替換VBA,實(shí)現(xiàn)對(duì)應(yīng)的腳本編程。

          與Excel有關(guān)的Python包

          目前,常用的與Excel有關(guān)的第三方Python包如下表所示。

          這些包都有各自的特點(diǎn),有的小、快、靈,有的功能齊全可與VBA使用的對(duì)象模型相媲美;有的不依賴Excel,有的必須依賴Excel;有的工作效率一般,有的工作效率很高。

          xlwings:?為什么Python能完美代替Excel VBA?

          在上面的表格中,目前圖書和網(wǎng)絡(luò)介紹得比較多的有xlrd、xlwt和OpenPyXl等包。

          這幾個(gè)包提供的功能比較有限,所以給很多同學(xué)造成了Python不如VBA的錯(cuò)覺。

          這里要給大家重點(diǎn)推薦的是表中的win32com包和xlwings包。win32com包將Excel、Word和Powerpoint等軟件的所有對(duì)象打包成一個(gè)COM組件提供給Python調(diào)用,所以,它使用的對(duì)象模型跟VBA使用的對(duì)象模型是完全一樣的。

          Excel腳本編程有兩個(gè)重要內(nèi)容,一個(gè)是腳本語言,另一個(gè)是對(duì)象模型,腳本語言通過面向這些對(duì)象編程,控制Excel并與Excel軟件進(jìn)行交互操作。

          現(xiàn)在,對(duì)象模型是一樣的,Python語言可以代替VBA語言,所以Python能完美代替VBA進(jìn)行Excel腳本編程,VBA能做的,使用win32com也能做。

          xlwings包則是在win32com包的基礎(chǔ)上進(jìn)行了二次封裝,所以,VBA能做的,使用xlwings也能做。

          不僅如此,用Python代替Excel VBA,還可以免費(fèi)獲得Python提供的大量數(shù)據(jù)分析、數(shù)據(jù)可視化和網(wǎng)絡(luò)編程等方面的能力。

          xlwings牛刀小試

          下面這段代碼用于在工作簿中批量創(chuàng)建10個(gè)工作表:

          >>> import xlwings as xw>>> app=xw.App()>>> bk=app.books(1)>>> for i in range(10):   bk.api.Worksheets.Add(After=\bk.api.Worksheets(bk.api.Worksheets.Count))

          效果如下圖所示。

          下面的代碼利用工作表中的數(shù)據(jù)創(chuàng)建圖表:

          >>> import xlwings as xw  #導(dǎo)入xlwings>>> app=xw.App()  #創(chuàng)建Excel應(yīng)用>>> wb=app.books.active  #活動(dòng)工作簿>>> sht=wb.sheets.active  #活動(dòng)工作表>>> cht=sht.charts.add(50, 200)  #添加圖表>>> cht.set_source_data(sht.range("A1").expand())  #圖表綁定數(shù)據(jù)>>> cht.chart_type="column_clustered"  #圖表類型>>> cht.api[1].HasTitle=True  #圖表有標(biāo)題

          效果如下圖所示:

          xlwings的主要功能綜述如下:

          • 操作工作簿、工作表、單元格(區(qū)域)等核心對(duì)象。

          • 創(chuàng)建和編輯Excel圖形。

          • 創(chuàng)建和編輯Excel圖表。

          • 創(chuàng)建和編輯Excel數(shù)據(jù)透視表。

          • 使用Excel函數(shù)進(jìn)行數(shù)據(jù)處理。

          • 插件封裝了SQL處理Excel數(shù)據(jù)的能力。

          • 封裝了方便與Python數(shù)據(jù)類型如NumPy數(shù)組、pandas series和dataframe等進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換的工具。

          • Python與Excel VBA混合編程。

          • ……

          ?xlwings好學(xué)嗎?

          既然VBA能做的,Python基于xlwings包都能做,那么問題來了:xlwings好學(xué)嗎?

          xlwings包在win32com包的基礎(chǔ)上進(jìn)行了二次封裝,所以它一方面間接繼承了VBA所使用的Excel對(duì)象模型甚至VBA的語法,另一方面它又對(duì)常用的功能封裝了新的語法。

          所以,xlwings實(shí)際上有兩種使用方式,一種是使用類VBA語法的API使用方式,另一種是使用封裝后的新語法的使用方式。

          下面的代碼分別使用Excel VBA和xlwings的API來選擇工作表中的一個(gè)單行。

          Excel VBAsht.Rows(1) .Selectsht.Range("1:1").Selectsht.Range("A1").EntireRow.SelectPython xlwings API>>> sht.api.Rows(1) .Select()>>> sht.api.Range("1:1").Select()>>> sht.api.Range("A1").EntireRow.Select()


          可見,二者在語法上高度相似。對(duì)于熟悉VBA語法的同學(xué)而言,使用xlwings很快就能上手。

          xlwings封裝的新語法則更簡(jiǎn)練。例如,下面的代碼同樣實(shí)現(xiàn)選擇單行的功能。

          【Python xlwings】>>> sht["1:1"].select()

          使用xlwings的新語法從工作表中獲取一個(gè)單行或單列區(qū)域的值,返回的是一個(gè)列表表示的一維數(shù)組。

          【Python xlwings】>>> lst=sht.range("A1:A5").value>>> lst[1.0, 2.0, 3.0, 4.0, 5.0]

          使用Excel VBA獲取到的則是一個(gè)二維數(shù)組,需要通過轉(zhuǎn)換得到一維數(shù)組。

          ?學(xué)習(xí)xlwings的好書

          這里給大家分享一本學(xué)習(xí)xlwings的好書——《代替VBA!用Python輕松實(shí)現(xiàn)Excel編程》!

          本書以xlwings為主線,用Python一對(duì)一復(fù)現(xiàn)了Excel VBA的各種腳本編程能力。內(nèi)容從語言基礎(chǔ),到Excel對(duì)象模型、文件、圖形圖表,到字典、正則表達(dá)式應(yīng)用專題,到pandas數(shù)據(jù)分析,混合編程等,覆蓋了Excel辦公自動(dòng)化和數(shù)據(jù)分析編程的主要內(nèi)容。

          怎樣解決語言問題?

          Python基于xlwings包進(jìn)行Excel腳本編程時(shí),由于使用的Excel對(duì)象模型與VBA使用的一樣,所以能實(shí)現(xiàn)完美替換VBA。

          但是,有的同學(xué)可能會(huì)講,還有語言問題呢,Python看起來并沒有宣傳的那樣好學(xué)!

          我們想到的辦法是語言對(duì)照學(xué)習(xí)。

          對(duì)照學(xué)習(xí)是將兩種語言的語法打碎,并實(shí)現(xiàn)語法知識(shí)點(diǎn)一對(duì)一的對(duì)照和融合,能幫助我們?cè)谧约菏煜さ恼Z境里快速理解和掌握另一門語言。

          關(guān)于Python與Excel VBA語言對(duì)照學(xué)習(xí)方面的圖書我們正在撰寫,敬請(qǐng)關(guān)注。我們?cè)敢庖宰钯N心的服務(wù),為您從Excel VBA快速平穩(wěn)過渡到Python保駕護(hù)航。

          掃碼搶購!



          如果喜歡本文
          歡迎?在看留言分享至朋友圈?三連


          ?熱文推薦??





          ▼點(diǎn)擊閱讀原文,查看本書詳情~
          瀏覽 28
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲国产精品成人综合 | 韩日三级片电影在线观看 | 亚洲精品天堂无码 | 大鸡吧视频免费在线看 | 亚洲国产在人播放首页 |