使用python實(shí)現(xiàn)讀取文件夾中所有excel
相信很多坐在辦公室上班的朋友每天都需要處理大量的數(shù)據(jù),我們常常用Excel制作電子表格來幫助我們處理它們。這當(dāng)然是一種非常好的做法,但是我相信大家都會發(fā)現(xiàn),很多表格的內(nèi)容其實(shí)大同小異,常常需要我們把同樣的數(shù)據(jù)復(fù)制進(jìn)不同的表格里去,整理格式,然后提交給不同的人。這樣沒有意義的重復(fù)勞動會占用我們大量寶貴的時間。如果有什么人能幫我們把表格做好,我們只需確認(rèn)一下是否有誤然后提交即可,那么生活將會變得多么美好。
Openpyxl就是這樣一個得力的工具。
這是一個由Eric Gazoni和Charlie Clark開發(fā)的,是目前使用最廣泛的用Python操作Excel的庫開源庫,也是Pandas中默認(rèn)讀取表格數(shù)據(jù)的工具。
那么這個系列的文章——Python幫你做Excel——就是給大家提供一個簡單的Openpyxl的入門中文教程,讓大家能快速上手這個好用的小工具。
首先讓我們一起看一下,如何使用Openpyxl讀取Excel文檔中的數(shù)據(jù)。
openpyxl基礎(chǔ)概念
- Excel文件通常被稱為電子表格,但在openpyxl中被稱為工作簿
- 單個工作簿通常保存在擴(kuò)展名為.xlsx的文件中
- 一個工作簿可能只有一個工作表,也可能有幾十個工作表
- 活動工作表是用戶正在查看或關(guān)閉文件前查看的工作表
- 每個工作表都由列組成,列的名字從A開始依次類推
- 每個工作表都由行組成,每個行從1開始編號,依次類推
- 行與列的交界處稱為單元格。每個單元格對于對應(yīng)的行和列就有了特定的地址。單元格內(nèi)可以包含數(shù)字,公式或者文字
- 單元格組成的網(wǎng)格在excel中組成了工作區(qū)域或者說工作表
從Excel工作表中讀取數(shù)據(jù)
首先我們假設(shè)建一個Excel文件,命名為testfile.xlsx。

以上是testfile.xlsx的數(shù)據(jù),你可以新建一個excel文件并把數(shù)據(jù)填進(jìn)去。 不過在正式使用openpyxl讀取這些數(shù)據(jù)之前,如果你不知道python的根目錄在哪,你可以在prompt(中文可以理解為命令提示符,或?qū)υ捒?中輸入如下代碼
import os os.getcwd( )
上述操作會在python中導(dǎo)入操作系統(tǒng)包,然后os.getcwd( )會讀取當(dāng)下的工作地址(get current working directory ——> getcwd() )。隨后python會告訴你當(dāng)下的工作地址,輸出的結(jié)果可能會是這樣
'C:Python36'
如果你想更換工作地址,就需要使用命令os.chdir()。比如你想讀取一個在C盤根目錄下的一個叫做myfiles的文件夾里的文件,那么你可能就可以輸入
os.ch.dir("c:/myfiles")現(xiàn)在你就可以對C盤里myfiles文件夾里的文件進(jìn)行工作了!
用Python打開Excel文件
首先我們需要用這個語句在python中導(dǎo)入openpyxl模塊
import openpyxl
如果沒有錯誤信息提示,那就表示openpyxl模塊安裝正確,并且可以對excel文件進(jìn)行操作了。接下來需要做的是載入工作簿testfile.xlsx
wb= openpyxl.load_workbook('testfile.xlsx')
openpyxl.load_workbook()是一個函數(shù),它將文件名作為參數(shù)讀入然后返回一個工作簿的數(shù)據(jù)類型(workbook datatype)。工作簿數(shù)據(jù)類型實(shí)際上與python打開文件對象的類型是一樣的,使用下述的語句可以看到對handle的說明:
type (wb) <class 'openpyxl.workbook.workbook.Workbook'>
上面的第二行文字應(yīng)該會顯示在對話框中,此處我們對前面所有輸入的命令進(jìn)行個簡單的匯總展示
>>> import os
>>> os.getcwd()
'C:Python34'
>>> import openpyxl
>>> wb=openpyxl.load_workbook('testfile.xlsx')
>>> type(wb)
<class 'openpyxl.workbook.workbook.Workbook'>
>>>從加載的工作簿訪問工作表
現(xiàn)在我們已經(jīng)能夠訪問excel文件了,現(xiàn)在我們可以嘗試讀取文件里的數(shù)據(jù)。首先,如果想要訪問工作簿中工作表的數(shù)量以及它們的名字,可以使用函數(shù)get_sheet_names()。這個函數(shù)會返回工作表的名字,當(dāng)然你也可以數(shù)出工作表的總數(shù)。完整的代碼是這樣的
>>> wb.get_sheet_names() ['Sheet1', 'Sheet2', 'Sheet3']
可以看到函數(shù)返回了三個工作表的名字,也就是說工作簿內(nèi)只含有三個工作表。那么現(xiàn)在你可以嘗試多操作幾次,比如手動修改這些工作表的名字,然后保存文件,隨后用上述代碼重新加載文件,看看工作表的名字是否有變動,當(dāng)然此處就不再多加贅述了。 在知道了工作表的名字之后,我們可以訪問其中的任何一個工作表了。假設(shè)我們想要訪問Sheet3,代碼就應(yīng)該是
>>> import openpyxl
>>> wb=openpyxl.load_workbook('testfile.xlsx')
>>> wb.get_sheet_names()
['Sheet1', 'Sheet2', 'Sheet3']
>>> sheet=wb.get_sheet_by_name('Sheet3')函數(shù)get_sheet_by_name('Sheet3')可以訪問一個特定的工作表,它接收工作表的名字作為輸入,然后返回一個工作表對象。我們將其賦值給sheet變量,然后就可以對它進(jìn)行下述操作
>>> sheet <Worksheet "Sheet3"> >>> type(sheet) <class 'openpyxl.worksheet.worksheet.Worksheet'> >>> sheet.title 'Sheet3' >>>
如果只輸入sheet,那么就會輸出,該變量指向哪個工作表。在這里例子里,對話框就會返回工作表"Sheet3"。如果想要知道該變量的類型,則輸入type(sheet),此時就會返回變量sheet指向什么對象。sheet.title會返回sheet的標(biāo)題。 另外,如果我們想訪問活動的工作表,可以使用下述代碼,對話框就會返回活動工作表的名字了
>>> wb.active <Worksheet "Sheet1">
訪問工作表單元格中的數(shù)據(jù)
從工作表單元格中訪問數(shù)據(jù),首先應(yīng)用工作表,然后輸入單元格的地址,具體展示如下
>>> sheet['A2'].value datetime.datetime(2014, 7, 6, 4, 50, 30)
還有訪問單元格數(shù)據(jù)的另一個方法
>>> e=sheet['B2'] >>> e.value 'AB' >>> e.row 2 >>> e.column 'B' >>>
還可以使用cell()函數(shù),將row和column作為參數(shù)輸入,讀取單元格數(shù)據(jù)
>>> sheet.cell(row=2, column=4) <Cell Sheet1.D2> >>> sheet.cell(row=2, column=4).value 'Pencil'
現(xiàn)在讓我們來嘗試輸出整列的數(shù)據(jù),當(dāng)然,此處需要使用到循環(huán)語句。輸出整個列的代碼展示如下
>>> for x in range (1,9):
print(x,sheet.cell(row=x,column=4).value)
1 Item
2 Pencil
3 Binder
4 Pencil
5 Pen
6 Pencil
7 Binder
8 Pencil
>>>在輸出了整列數(shù)據(jù)后,現(xiàn)在可以嘗試輸出多列的數(shù)據(jù)了。由于我們的文件很小,所以我們就輸出完整的表格。詳見下方代碼
for y in range (1,9,1): print(sheet.cell(row=y,column=1).value,sheet.cell(row=y,column=2).value, sheet.cell(row=y,column=3).value,sheet.cell(row=y,column=4).value, sheet.cell(row=y,column=5).value, sheet.cell(row=y,column=6).value, sheet.cell(row=y,column=7).value,sheet.cell(row=y,column=8).value)
這些代碼可以輸出工作表中的所有列,那么至此,我們已經(jīng)訪問了excel文件,將其載入內(nèi)存,訪問工作表以及單元格里的數(shù)據(jù)。
到此這篇關(guān)于使用python實(shí)現(xiàn)讀取文件夾中所有excel的文章就介紹到這了,更多相關(guān)python讀取文件夾中所有excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中模塊(Module)和包(Package)的區(qū)別詳解
這篇文章主要介紹了Python中模塊(Module)和包(Package)的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Python函數(shù)返回值之None類型的實(shí)現(xiàn)
本文主要介紹了Python?函數(shù)返回值之None類型的使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04
Python使用add_subplot與subplot畫子圖操作示例
這篇文章主要介紹了Python使用add_subplot與subplot畫子圖操作,涉及Python使用matplotlib模塊進(jìn)行圖形繪制的相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
Python裝飾器實(shí)現(xiàn)函數(shù)運(yùn)行時間的計(jì)算
這篇文章主要為大家詳細(xì)介紹了Python函數(shù)運(yùn)行時間的計(jì)算,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02
Python實(shí)現(xiàn)針對給定單鏈表刪除指定節(jié)點(diǎn)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)針對給定單鏈表刪除指定節(jié)點(diǎn)的方法,結(jié)合實(shí)例形式分析了Python單鏈表的定義、節(jié)點(diǎn)添加、刪除、打印等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04

