宅宅很神 發表於 2022-4-14 18:29:45

Python使用openpyxl讀取excel文件數據的技巧

Python使用openpyxl讀取excel文件數據的技巧

來源:
https://zhuanlan.zhihu.com/p/444255948

1. 介紹

1.1 介紹

帶著大家學習使用Python讀取Excel文件的方法,Python讀取Excel文件推薦使用openpyxl庫,這個庫介面友好、效率高,可以讓我們簡簡單單地將Excel裡面的數據讀取出來使用。

2. 安裝

2.1 安裝openpyxl庫

使用的是openpyxl庫,直接通過pip安裝即可。

pip install openpyxl

3. 讀取文件

這裡有一個測試用的excel文件,我們等下會用openpyxl讀取它的資料。

3.1 預設格式

我們使用最簡單的方式讀取這個報表的內容,遍歷過程沒有進行特別的加工,很直觀~~

步驟如下:
load_workbook > worksheets > worksheet > rows > row > cell > cell.coordinate, cell.value
大家可以記住這個層級關係!

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

      # cycle rows
      sheetDatas = []
      for row in mySheet.iter_rows():

            # cycle cell
            sheetRow = {}
            for cell in row:
                sheetRow = 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)):
            print(d, e, allSheetDatas)

3.2 數據表格式
大家可以看到這個導出的格式和Excel上面看到的是顛倒的,列頭在最左邊,數據在右邊,很不方便檢視。

福哥整理了一個排列的程式碼,可以將這個顛倒的格式「正」過來!

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

      # 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 = cell.value

                continue
            else:
                dataRow = {}
                for cell in row:
                  colChar = re.sub(r"\d+", "", cell.coordinate)
                  sheetRow] = 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)):
            print(d, e, allSheetDatas)


4. 總結

童鞋們學習了Python的openpyxl庫的使用方法,通過openpyxl庫可以快速地將Excel當中的數據讀取出來,形成一個二維的dict結構,便於我們進行加工處理。






頁: [1]
檢視完整版本: Python使用openpyxl讀取excel文件數據的技巧