Python使用openpyxl讀取excel文件數據的技巧
來源:
https://zhuanlan.zhihu.com/p/444255948
1. 介紹
1.1 介紹
帶著大家學習使用Python讀取Excel文件的方法,Python讀取Excel文件推薦使用openpyxl庫,這個庫介面友好、效率高,可以讓我們簡簡單單地將Excel裡面的數據讀取出來使用。
2. 安裝
2.1 安裝openpyxl庫
使用的是openpyxl庫,直接通過pip安裝即可。
[Plain Text] 純文本查看 複制代碼 pip install openpyxl
3. 讀取文件
這裡有一個測試用的excel文件,我們等下會用openpyxl讀取它的資料。
3.1 預設格式
我們使用最簡單的方式讀取這個報表的內容,遍歷過程沒有進行特別的加工,很直觀~~
步驟如下:
load_workbook > worksheets > worksheet > rows > row > cell > cell.coordinate, cell.value
大家可以記住這個層級關係!
[Python] 純文本查看 複制代碼 import openpyxl
workbook = openpyxl.load_workbook("openpyxl.xlsx")
allSheetDatas = None
if workbook is not None and workbook.worksheets is not None:
# cycle sheets
allSheetDatas = []
for d in range(0, len(workbook.worksheets)):
mySheet = workbook.worksheets[d]
# cycle rows
sheetDatas = []
for row in mySheet.iter_rows():
# cycle cell
sheetRow = {}
for cell in row:
sheetRow[cell.coordinate] = cell.value
# save row
sheetDatas.append(sheetRow)
# save sheet
allSheetDatas.append(sheetDatas)
# dump
if allSheetDatas is not None:
for d in range(0, len(allSheetDatas)):
for e in range(0, len(allSheetDatas[d])):
print(d, e, allSheetDatas[d][e])
3.2 數據表格式
大家可以看到這個導出的格式和Excel上面看到的是顛倒的,列頭在最左邊,數據在右邊,很不方便檢視。
福哥整理了一個排列的程式碼,可以將這個顛倒的格式「正」過來!
[Python] 純文本查看 複制代碼 import openpyxl
import re
workbook = openpyxl.load_workbook("openpyxl.xlsx")
allSheetDatas = None
if workbook is not None and workbook.worksheets is not None:
# cycle sheets
allSheetDatas = []
for d in range(0, len(workbook.worksheets)):
mySheet = workbook.worksheets[d]
# cycle rows
dataTableField = []
dataFieldRow = None
sheetDatas = []
for row in mySheet.iter_rows():
# cycle cell
sheetRow = {}
if dataFieldRow is None:
dataFieldRow = {}
for cell in row:
colChar = re.sub(r"\d+", "", cell.coordinate)
dataFieldRow[colChar] = cell.value
continue
else:
dataRow = {}
for cell in row:
colChar = re.sub(r"\d+", "", cell.coordinate)
sheetRow[dataFieldRow[colChar]] = cell.value
# save row
sheetDatas.append(sheetRow)
# save sheet
allSheetDatas.append(sheetDatas)
# dump
if allSheetDatas is not None:
for d in range(0, len(allSheetDatas)):
for e in range(0, len(allSheetDatas[d])):
print(d, e, allSheetDatas[d][e])
4. 總結
童鞋們學習了Python的openpyxl庫的使用方法,通過openpyxl庫可以快速地將Excel當中的數據讀取出來,形成一個二維的dict結構,便於我們進行加工處理。
|