Python操作Excel的Xlwings教程(四)

在上篇文章《Python操作Excel的Xlwings教程(三)》中重點介紹了Xlwings中的SheetRange等API知識點。本次推文將繼續(xù)上次的知識點忆家,將繼續(xù)介紹Xlwings中API相關(guān)的知識德迹,并展示一些小例子,讓大家可以跟著教程進行學(xué)習(xí):

我們先來看看Xlwings中的Shape對象浦辨,Office開發(fā)文檔對Shape進行了介紹,傳送門如下:

https://docs.microsoft.com/zh-cn/office/vba/api/excel.shape

即Shape對象代表繪圖層中的對象币厕,例如自選圖形芽腾、任意多邊形、OLE 對象或圖片摊滔。

一、Shapes

假設(shè)我們有一個文件1.xlsx艰躺,在sheet1內(nèi)有一個shape矩形,如下圖所示:

[圖片上傳失敗...(image-2c8813-1603209388492)]

我們進行運行以下的代碼:

import xlwings as xwwb = xw.Book('1.xlsx')wb.sheets[0].shapes         # 輸出Shapes([<Shape 'Rectangle 1' in <Sheet [1.xlsx]Sheet1>>])wb.sheets[0].shapes.count   # 返回集合中的對象數(shù)左电,輸出1

可以看出上述代碼輸出了這個Excel文件中的Shape對象,且計數(shù)了這個所選sheet頁中形狀的個數(shù)段誊,所以在日常的操作中栈拖,我們可以使用count來對其中的Shape總數(shù)進行統(tǒng)計。

二涩哟、Shape

跟Sheet對象一樣,Shape對象是Shapes集合的成員:我們來看一下Shape中有哪些方法或?qū)傩圆蔚危覀兪褂玫腅xcel文件還是1.xlsx锻弓。先導(dǎo)入模塊,打開文件暴心,引用sheet1工作表:

import xlwings as xwwb = xw.Book('1.xlsx')sheet = wb.sheets[0]

方法或?qū)傩?/p>

xw.Shape(1).activate       # 激活里面的一個shape# 或者 sheet.shapes[0].activate, 使用print打印可查看輸出結(jié)果xw.Shape(1).delete         # 刪除里面的一個shapexw.Shape(1).height         # height 返回或設(shè)置表示形狀高度的點數(shù)杂拨。xw.Shape(1).left           # left 返回或設(shè)置表示形狀水平位置的點數(shù)。sheet.shapes[0].top        # top 返回或設(shè)置表示形狀垂直位置的點數(shù)sheet.shapes[0].width      # width 返回或設(shè)置表示形狀寬度的點數(shù)檀夹。sheet.shapes[0].type       # type 返回形狀的類型策橘。輸出 auto_shapexw.Shape(1).name           # name 返回或設(shè)置形狀的名稱,此處輸出 Rectangle 1xw.Shape(1).parent         # parent 返回形狀的父級,輸出<Sheet [1.xlsx]Sheet1>

Shape的相關(guān)操作就介紹到這里了,個人覺得不是很常用的功能蚌堵,大家有興趣的可以研究Xlwings的main函數(shù)沛婴,來查看Shape對象的使用方法。

三泻蚊、Charts

圖表類的對象是Excel中經(jīng)常碰到的旁仿,Xlwings中頁存在很多操圖表的方法孽糖,接下來我們介紹Xlwings中的圖表對象(Charts和Chart)毅贮。

假設(shè)現(xiàn)在我們有數(shù)據(jù)表2.xlsx,其sheet頁的有一個表格數(shù)據(jù)生成的兩張圖表尘奏,接下來我們使用xlwings來進行相關(guān)的操作:

[圖片上傳失敗...(image-731451-1603209388492)]

import xlwings as xwwb = xw.Book('2.xlsx')sheet = wb.sheets[0]s = sheet.chartsprint(s)

最后一行輸出:

Charts([<Chart **'Chart 1' **in <Sheet [2.xlsx]Sheet1>>,<Chart **'Chart 2' **in <Sheet [2.xlsx]Sheet1>>])

即工作表上所有Chart對象的集合

如果想新增一個圖表炫加,可使用add()方法瑰煎,其有四個參數(shù)可選left俗孝,top,width插勤,height

sheet.charts.add(100,100)  # 會在所選sheet上(100,100)位置新建一個圖表(空白表)# left (float, default 0):left position in points# top (float, default 0):top position in points# width (float, default 355):width in points# height (float, default 211):height in pointssheet.charts.count   # count屬性可統(tǒng)計圖表的個數(shù)革骨,輸出2

四、Chart

跟之前介紹的Sheet等對象一樣盛卡,chart對象是charts集合的成員筑凫。
那么chart中有哪些API是值的我們關(guān)注的呢?我們來逐個進行介紹:

引用****chart****有兩種方法

sheet.charts[0]                     # 法一滓技,輸出<Chart 'Chart 1' in <Sheet [2.xlsx]Sheet1>>sheet.charts['圖表 2']              # 法二蔫浆,輸出<Chart 'Chart 2' in <Sheet [2.xlsx]Sheet1>>sheet.charts[0].api                 #返回所使用引擎的本機對象sheet.charts[0].chart_type)         # 返回并設(shè)置圖表的圖表類型,輸出linesheet.charts[1].chart_type          # 返回并設(shè)置圖表的圖表類型洗显,輸出bar_clusteredsheet.charts[0].delete()            # 使用索引刪除圖表1原环。sheet.charts[0].height              # 返回或設(shè)置代表圖表高度sheet.charts[0].left                # 返回或設(shè)置代表圖表水平位置sheet.charts[0].top                 # 返回或設(shè)置代表圖表垂直位置sheet.charts[0].width               # 返回或設(shè)置代表圖表寬度sheet.charts[0].name)               # 返回或設(shè)置圖表名稱,輸出Chart 1sheet.charts[0].parent )            # 返回圖表的父級對象嘱吗,輸出<Sheet [2.xlsx]Sheet1>sheet.charts[0].set_source_data()   # 設(shè)置圖表的源數(shù)據(jù)范圍玄组。

對于設(shè)置圖表的源數(shù)據(jù)范圍的方法set_source_data()滔驾,我們來看一個綜合的例子,

我們打開一個已經(jīng)存在的Excel文件3.xlsx,其sheet工作表有兩列數(shù)據(jù)變量1和變量2俄讹,我們使用Xlwings操作這個數(shù)據(jù)生成我們的圖表哆致,代碼如下:

import xlwings as xwsheet = xw.Book('4.xlsx').sheets[0]#新增chartchart = sheet.charts.add()                        #數(shù)據(jù)源:sheet.range('A1:B7'),或者sheet.range('A1').expand()chart.set_source_data(sheet.range('A1').expand())  chart.chart_type = 'line' #設(shè)置圖標的類型患膛,此處為線型摊阀,具體的類型查看office官網(wǎng)VBA操作的手冊#標題名稱title='python知識學(xué)堂粉絲數(shù)'                    chart.api[1].SetElement(2)#設(shè)置標題名稱chart.api[1].ChartTitle.Text =title          chart.api[1].SetElement(302)                  #橫線#橫軸標題名稱chart.api[1].Axes(1).AxisTitle.Text = "日期"  chart.api[1].SetElement(311)chart.api[1].Axes(2).AxisTitle.Text = "粉絲數(shù)" #縱軸標題名稱

經(jīng)上述一系列的操作,生成的圖表如下踪蹬,(為了展示圖表是經(jīng)過手動移動位置的胞此,可通過height等屬性進行設(shè)置)

[圖片上傳失敗...(image-93f3f8-1603209388492)]

五、小結(jié)

以上就是Xlwings中ShapeChart對象的相關(guān)知識跃捣,縱觀全文,干貨還是滿滿的疚漆,是不是覺得使用Xlwings來操作Excel中的這些對象還是很方便呢酣胀?

介紹了上述對象API的相關(guān)知識,相必你也躍躍欲試了愿卸,趕快操作起來吧灵临!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市趴荸,隨后出現(xiàn)的幾起案子儒溉,更是在濱河造成了極大的恐慌,老刑警劉巖发钝,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顿涣,死亡現(xiàn)場離奇詭異,居然都是意外死亡酝豪,警方通過查閱死者的電腦和手機涛碑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孵淘,“玉大人蒲障,你說我怎么就攤上這事√敝ぃ” “怎么了揉阎?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長背捌。 經(jīng)常有香客問我毙籽,道長,這世上最難降的妖魔是什么毡庆? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任坑赡,我火速辦了婚禮烙如,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毅否。我一直安慰自己亚铁,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布搀突。 她就那樣靜靜地躺著刀闷,像睡著了一般熊泵。 火紅的嫁衣襯著肌膚如雪仰迁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天顽分,我揣著相機與錄音徐许,去河邊找鬼。 笑死卒蘸,一個胖子當(dāng)著我的面吹牛雌隅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缸沃,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼恰起,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了趾牧?” 一聲冷哼從身側(cè)響起检盼,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翘单,沒想到半個月后吨枉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡哄芜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年貌亭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片认臊。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡圃庭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出失晴,到底是詐尸還是另有隱情剧腻,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布师坎,位于F島的核電站恕酸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏胯陋。R本人自食惡果不足惜蕊温,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一袱箱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧义矛,春花似錦发笔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至制轰,卻和暖如春前计,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背垃杖。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工男杈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人调俘。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓伶棒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親彩库。 傳聞我的和親對象是個殘疾皇子肤无,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345