日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Python最詳細的Excel操作方式,你值得擁有!

 暗夜精靈fdznnm 2019-12-12

為什么要學會使用Excel

在機器學習模型的建立中,不得不借助于Excel強大的統(tǒng)計分析能力,這個時候就牽涉到了如何將python直接處理得到的數(shù)據(jù)存入excel表格當中以及獲取表格的數(shù)據(jù)進行分析,簡單的說,學會使用Python操作Excel文件后,可以運用到機器學習之中,也可以讓平常生活中繁瑣的工作自動化處理。

Excel的基本使用

Python處理Excel的包是openpyxl,如果你是直接下載的anaconda安裝的Python庫,那么下載的時候,自帶的就已經(jīng)安裝了openpyxl,如果不是,也可以直接在cmd之中,使用pip install openpyxl安裝。

安裝完成之后,我們應該了解一下Excel的組成部分,如下圖所示:

看到上圖就應該知道,首先,我們應該獲取Excel文件:

wb=openpyxl.load_workbook('1234.xlsx')

對于已經(jīng)有Excel目標文件來說,使用以上方法,就可以直接獲取excel文件,如果你想重新創(chuàng)建一個全新的Excel文件,不妨試試以下方式:

wb=openpyxl.Workbook()

已經(jīng)獲取了Excel,但其實我們的數(shù)據(jù)都在一個一個的表中,如下圖所示:

一個Excel文件中可以有多個表,一般而言操作的都是第一個表,而獲取表的方法也有很多,比如:

  1. sheet=wb.worksheets[0]
  2. sheet=wb['吸入類']

以上兩種方式都是獲取第一個表,要是我們使用wb=openpyxl.Workbook()方式,新創(chuàng)建的一個Excel呢?我們需要創(chuàng)建一個操作的表格:

  1. wb.create_sheet(index=0,title='小豬')
  2. wb.create_sheet(index=1,title='佩奇')

當我們獲取表格之后,就可以快樂的操作我們的數(shù)據(jù)了。

比如這個時候,你想獲取表格中的A1單元格中的文本,就可以使用如下方法:

sheet['A1'].value

以上是獲取單個單元格的數(shù)據(jù),現(xiàn)在我有一個需求,要遍歷某個表格中的所有數(shù)據(jù),該怎么操作呢?這里我們先假如我有如下表格:

那么遍歷起來的代碼如下:

  1. import openpyxl
  2. wb=openpyxl.load_workbook('1234.xlsx')
  3. sheet=wb.worksheets[0]
  4. for row in sheet.iter_rows():
  5. for cell in row:
  6. print(cell.coordinate, cell.value)

上面是逐行遍歷,首先我們獲取Excel文件,然后獲取當中的第一個表格,然后通過獲取行數(shù),以及列數(shù)進行遍歷,openpyxl獲取行數(shù)的方法為sheet.iter_rows(),獲取列數(shù)可以直接通過當前行獲取也就是for cell in row,代碼簡潔明了,實現(xiàn)效果如下:

那么怎么修改數(shù)據(jù)呢?我們先來看看代碼:

  1. sheet['A1'].value='1111111'
  2. sheet.cell(1,1).value='1111111'
  3. sheet.cell(1,1,'111111')

這三種方式,都可以修改Excel某個單元格數(shù)據(jù),同時也可以通過前兩種方式獲取到這個單元格的值,python的優(yōu)點就是這么簡單明了。

經(jīng)過這些操作之后,我們還有一個事情要做,那就是如果保存我們創(chuàng)建,或者修改過后的Excel,其實也很簡單,一句話就可以做到,代碼如下:

wb.save('1234.xlsx')

這樣就將操作的數(shù)據(jù),保存到當前目錄之下的1234.xlsx中,同樣寫絕對路徑也行。

Excel的樣式

在平常的生活當中,Excel表格并不僅僅是寫入數(shù)據(jù),修改數(shù)據(jù),保存數(shù)據(jù)這樣簡單的操作,其實還有如果讓Excel變的更加美觀,比如修改某些字體,邊框樣式等等等等。

字體樣式

那好,我們先來說說如何修改字體這樣的樣式,我們openpyxl里面有專門的字體樣式,可以通過以下方式導入,使用的代碼如下:

  1. from openpyxl.styles import Font, PatternFill, Border, Side, Alignment
  2. font = Font(name='微軟雅黑', size=10, bold=False, italic=False, vertAlign=None,
  3. underline='none', strike=False, color='FF000000')

這里我們先引入了Excel中的字體樣式,然后通過構(gòu)造函數(shù),創(chuàng)建了一個樣式,比如這里創(chuàng)建的字體為微軟雅黑,字體大小為10,不加粗,沒有斜體,沒有下劃線,沒有刪除線,顏色為黑色。

盡然我們創(chuàng)建了一個樣式,接下里就是將樣式設置到單元格中去,比如將剛才的樣式設置到表格11單元格中,以下兩種方式都行,代碼如下:

  1. sheet['A1'].font=font
  2. sheet.cell(1,1).font=font

填充樣式

說完字體樣式,第二個運用最多的就是填充樣式,比如給某個單元格填充背景色,或者填充圖案等等等等,我們先來看看代碼的操作方式:

  1. fill = PatternFill(fill_type='darkUp',start_color='FFFF00',end_color='FF0000')
  2. sheet.cell(1,1).fill=fill

這段代碼實現(xiàn)的樣式如下:

可以看到它的圖案類型為darkUp,開始顏色行色,結(jié)束顏色為紅色,紅黃相間的格柵化樣式填充,當然它的圖案類型還有很多,以下都是:

 {‘gray0625’, ‘lightHorizontal’, ‘darkVertical’, ‘darkGray’, ‘darkDown’, ‘solid’, ‘lightTrellis’, ‘darkHorizontal’, ‘gray125’, ‘lightGray’, ‘lightDown’, ‘lightUp’, ‘mediumGray’, ‘darkUp’, ‘darkGrid’, ‘darkTrellis’, ‘lightVertical’, ‘lightGrid’}

具體用到哪個,還要根據(jù)你的需求自由的選擇,重點需要說明的是,當圖案為solid時,默認只填充start_color顏色,也就是黃色,有興趣的可以試試。

邊框樣式

第三個要介紹的就是邊框樣式,邊框樣式在實際的工作中,可以說也是用的比較多的,了解一下對于實際的工作還是有好處的,操作代碼如下:

  1. border = Border(left=Side(border_style='dashDotDot',color='9932CC'),
  2. right=Side(border_style='dashDotDot',color='121212'),
  3. top=Side(border_style='dashDotDot',color='8B0A50'),
  4. bottom=Side(border_style='dashDotDot',color='B3EE3A'),)
  5. sheet.cell(5,4).border=border

上面設置了上下左右四個邊框的顏色以及樣式,這里我都設置為虛線樣式,顏色隨機抽取了四個比較深的顏色,實現(xiàn)的效果如下圖所示(上紅,下綠,左紫,右黑):

當然邊框還有很多參數(shù)的,如果想運用的更多更廣,可以參考openpyxl開發(fā)文檔,博主這里只介紹最常用的邊框樣式。

對齊樣式

最后一個樣式為對齊樣式,相對于上面三種樣式來說,這個對齊樣式每次幾乎都用到,現(xiàn)在我們先來弄一個單元格居中對齊,代碼如下:

  1. alignment = Alignment(horizontal='center',
  2. vertical='center',
  3. text_rotation=0,
  4. indent=0)
  5. sheet.cell(5,3).alignment=alignment

這里我們設置了對齊樣式為水平居中,垂直居中,文字旋轉(zhuǎn)角度為0(最多可以旋轉(zhuǎn)180°),縮進為0,比如旋轉(zhuǎn)90度,文字就變成了如下圖所示的樣式:

當然這種對齊樣式還有許多其他參數(shù),但用的最多的也就是這些,如果想了解其他的請前往openpyxl開發(fā)文檔了解最詳細的參數(shù)。這里就不做過多的贅述了。

Excel公式

鏈接公式

樣式說完了,我們還需介紹一下Excel公式的應用,比如我們有些Excel表格中有鏈接,就需要用公式把鏈接設置成可以點擊的超鏈接模式,同樣比如計算某些值的時候,也會用到Excel公式。我們先來講解以下如何讓URL鏈接可以點擊,代碼如下:

sheet.cell(6,3).value='=HYPERLINK('%s','%s')' % ('https://www.baidu.com', '百度一下')

上面代碼理解起來很簡單,就是我要在第六行第三列輸入百度一下,且百度一下可以點擊跳轉(zhuǎn)到指定的網(wǎng)頁之中(第一個參數(shù)就是需要跳轉(zhuǎn)的地址)。

這里其實就是excel中的公式,當然你也可以設置某個目錄下的exe文件,點擊后直接執(zhí)行exe,也可以設置跳轉(zhuǎn)到某個單元格,比如想點擊后跳轉(zhuǎn)到A1,代碼如下:

sheet.cell(6,3).value='=HYPERLINK('%s','%s')' % ('#A1', '跳轉(zhuǎn)到A1')

計算公式操作

現(xiàn)在我還有一個需求,比如我要計算下面表中A1到E1這5個數(shù)的和,在Excel應該怎么操作呢?

其實也和上面一樣,只要你知道Excel中的計算和公式,就可以直接套用到代碼中,這樣哪怕是編程小白,也基本可以掌握公式的應用規(guī)則,因為只要會Excel的都會知道,代碼如下:

sheet['F1']='=SUM(A1:E1)'

Excel單元格的合并與拆分

Excel估計已經(jīng)介紹的差不多了,不過博主剛剛想起來,應該還有一個常用的操作方式,就是合并單元格,這里我們同樣先來看一段代碼:

sheet.merge_cells('A1:E1')

合并也是操作表結(jié)構(gòu),這里合并剛上面那個表的數(shù)字,可以看到我們合并了A1到E1的所有單元格,同時,合并后的單元格顯示第一個單元格內(nèi)容。

熟話說得好,有合并就有拆分,同樣我們也需要拆分單元格,那這樣,我們就把先合并的單元格,在拆分成原來的樣子,代碼如下:

sheet.unmerge_cells('A1:E1')

很簡單,代碼前面加一個un就行,但這里有一個需要注意的地方,剛合并單元格,默認填充的是第一個單元格中的數(shù)據(jù),但拆分單元格,并不會自動填充數(shù)據(jù),原先有的整個數(shù)據(jù)顯示在第一個單元格之中,而其他拆分出來的單元格,不會顯示任何數(shù)據(jù)。

總結(jié)了這么多,相信對經(jīng)常使用Excel的小伙伴應該會有所幫助,如果寫的還可以記得給點個贊!

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多