最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 的 openpyxl模塊 讀取 Excel文件的方法

 更新時間:2019年09月09日 09:19:40   作者:deniro  
這篇文章主要介紹了python 的 openpyxl模塊 讀取 Excel文件的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

Python 的 openpyxl 模塊可以讓我們能讀取和修改 Excel 文件。

首先讓我們先理解一些 Excel 基礎概念。

1 Excel 基礎概念

Excel 文件也稱做為工作簿。每個工作簿可以包含多個工作表(Sheet)。用戶當前查看的表或關閉 Excel 前最后查看的表,稱為活動表。

每一張表都是由列和行構成的。列是以 A 開始的字母表示;而行是以 1 開始的數(shù)字表示的。由特定行和列所指定的方格稱為單元格。每個單元格都可以包含一個數(shù)字或文本。這些單元格就構成了這張表。

2 安裝 openpyxl

通過 pip 就可以安裝最新版的 openpyxl。

pip install openpyxl

3 讀取 Excel

假設有這樣一份世界人口統(tǒng)計 Excel 文檔,內(nèi)容如下:

3.1 加載

wb = openpyxl.load_workbook('population.xlsx')
print('wb 類型 :')
print(type(wb), '\n')

運行結果:

wb 類型 : <class 'openpyxl.workbook.workbook.Workbook'>

導入 openpyxl 模塊之后,就可以使用 openpyxl.load_workbook() 函數(shù)來加載 Excel 文檔咯。這個 Excel 文件表示為 Workbook 對象。

注意:load_workbook() 函數(shù)中的文件,必須在當前工作目錄??梢詫?os 模塊,利用 os.getcwd() 來獲悉當前工作目錄。os 還提供了 chdir() 方法,可以改變當前工作目錄。

import os
print('當前工作目錄 :')
print(os.getcwd(), '\n')

運行結果:

 

3.2 讀取 Excel 工作表(sheet)

...
print('取得所有工作表的表名 :')
print(wb.sheetnames, '\n')

print('取得某張工作表 :')
sheet = wb['Sheet3']
print(type(sheet))
print('表名 - ' + sheet.title, '\n')

print('取得活動工作表 :')
active_sheet = wb.active
print('表名 - ' + active_sheet.title, '\n')

運行結果:

取得所有工作表的表名 : ['Sheet1', 'Sheet2', 'Sheet3']

取得某張工作表 : <class 'openpyxl.worksheet.worksheet.Worksheet'> 表名 - Sheet3

取得活動工作表 : 表名 - Sheet1

  • Workbook 對象的 sheetnames 屬性可以獲取所有 sheet 表的表名列表。
  • Workbook 對象的 active 屬性,會獲取當前活動表,即打開 Excel 時出現(xiàn)的工作表。
  • 獲取 Worksheet 對象后,我們就可以通過 title 屬性得到 sheet 的名稱。

3.3 讀取單元格 (Cell)

...
print('取得 A1 單元格 :')
cell = active_sheet['A1']
print(cell)
print(cell.value, '\n')

print('取得 B1 單元格 :')
cell = active_sheet['B1']
print(cell)
print(cell.value, '\n')

print('行號為 ' + str(cell.row) + ',列號為 ' + str(cell.column) + ' 的單元格,其值為 ' + cell.value, '\n')
print('單元格 ' + cell.coordinate + ' 其值為 ' + cell.value, '\n')

print('取得 C1 單元格的值 :')
print(active_sheet['C1'].value, '\n')

print('通過指定行與列,來獲取單元格:')
print(active_sheet.cell(row=1, column=2))
print(active_sheet.cell(row=1, column=2).value)

print('迭代行與列,來獲取單元格的值:')
for i in range(1, 8, 2):
  print(i, active_sheet.cell(row=i, column=2).value)
print('\n')

運行結果:

取得 A1 單元格 : <Cell 'Sheet1'.A1> 排名

取得 B1 單元格 : <Cell 'Sheet1'.B1> 國家

行號為 1,列號為 2 的單元格,其值為 國家

單元格 B1 其值為 國家

取得 C1 單元格的值 : 人口

通過指定行與列,來獲取單元格: <Cell 'Sheet1'.B1> 國家 迭代行與列,來獲取單元格的值: 1 國家 3 印度 5 印度尼西亞 7 巴基斯坦

可以通過單元格的名字(比如:A1)來獲取 Cell 對象。

  •  Cell 對象的 value 屬性,存放的是該單元格中所保存的值。
  • Cell 對象的 row、 column 和 coordinate 屬性,存放的是該單元格的位置信息。
  • 用字母來指定列比較奇怪,因此我們也可以通過 sheet 的 cell 方法直接指定行(row)與列(column),來獲取單元格 Cell 對象。

3.4 獲取工作表大小

print('獲取工作表的大小:')
print('總行數(shù) -> ' + str(active_sheet.max_row))
print('總列數(shù) -> ' + str(active_sheet.max_column))

運行結果:

獲取工作表的大小: 總行數(shù) -> 11 總列數(shù) -> 4

Worksheet 對象的 max_row 與 max_column,可以獲取工作表的總行數(shù)與總列數(shù),即工作表的大小。

3.5 列轉(zhuǎn)換函數(shù)

openpyxl 提供了兩個函數(shù),用于轉(zhuǎn)換列號:

  • openpyxl.utils.get_column_letter -> 會把數(shù)字轉(zhuǎn)化為字母。
  • openpyxl.utils.column_index_from_string -> 會把字母轉(zhuǎn)化為數(shù)字。
import openpyxl
from openpyxl.utils import get_column_letter, column_index_from_string
...
print('列轉(zhuǎn)換函數(shù):')
print('[數(shù)字轉(zhuǎn)換為字母]')
print('第 1 列 -> ' + get_column_letter(1))
print('第 2 列 -> ' + get_column_letter(2))
print('第 37 列 -> ' + get_column_letter(37))
print('第 818 列 -> ' + get_column_letter(818))
print('[字母轉(zhuǎn)換為數(shù)字]')
print('第 A 列 -> ' + str(column_index_from_string('A')))
print('第 CC 列 -> ' + str(column_index_from_string('CC')))

運行結果:

[數(shù)字轉(zhuǎn)換為字母] 第 1 列 -> A 第 2 列 -> B 第 37 列 -> AK 第 818 列 -> AEL [字母轉(zhuǎn)換為數(shù)字] 第 A 列 -> 1 第 CC 列 -> 81

3.6 切片

我們可以對 Worksheet 對象切片,取得表格中的一個矩形區(qū)域,迭代遍歷這個區(qū)域中的所有 Cell 對象。

print(tuple(active_sheet['A2':'D4']))
for row_objects in active_sheet['A2':'D4']:
  for cell_object in row_objects:
    print(cell_object.coordinate, cell_object.value)
  print('-- 當前行獲取結束 --')

運行結果:

((<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>, <Cell 'Sheet1'.D2>), (<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>, <Cell 'Sheet1'.D3>), (<Cell 'Sheet1'.A4>, <Cell 'Sheet1'.B4>, <Cell 'Sheet1'.C4>, <Cell 'Sheet1'.D4>)) A2 1 B2 中國 C2 13.83億人(2016) D2 9634057 -- 當前行獲取結束 -- A3 2 B3 印度 C3 1339180127 D3 2973190 -- 當前行獲取結束 -- A4 3 B4 美國 C4 324459463 D4 9147420 -- 當前行獲取結束 --
  • 這里首先通過 tuple() 方法,展示出了切片后的所有 Cell 對象。
  • 然后使用了兩個 for 循環(huán),外層 for 循環(huán)會遍歷這個切片中的每一行;而內(nèi)層 for 循環(huán)會遍歷該行中的每個單元格。

 3.7 獲取指定行或指定列

我們可以使用 Worksheet 對象的 rows 和 columns 屬性,來獲取指定行或者列:

print('獲取特定行:')
print(list(active_sheet.rows)[2])
for cell_object in list(active_sheet.rows)[2]:
  print(cell_object.value)

print('獲取特定列:')
print(list(active_sheet.columns)[2])
for cell_object in list(active_sheet.columns)[2]:
  print(cell_object.value)

運行結果:

獲取特定行: (<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>, <Cell 'Sheet1'.D3>) 2 印度 1339180127 2973190 獲取特定列: (<Cell 'Sheet1'.C1>, <Cell 'Sheet1'.C2>, <Cell 'Sheet1'.C3>, <Cell 'Sheet1'.C4>, <Cell 'Sheet1'.C5>, <Cell 'Sheet1'.C6>, <Cell 'Sheet1'.C7>, <Cell 'Sheet1'.C8>, <Cell 'Sheet1'.C9>, <Cell 'Sheet1'.C10>, <Cell 'Sheet1'.C11>) 人口 13.83億人(2016) 1339180127 324459463 263991379 209288278 197015955 190886311 164669751 143989754 129163276

  • Worksheet 對象的 rows 或者 columns 屬性,都會返回一個由 “行元組” 構成的元組。每個行元組都擁有該行中的所有 Cell 對象。
  • 可以通過行元組的下標,來訪問具體的 Cell 對象。

讀取 Excel 步驟,總結如下:

  • 導入 openpyxl 模塊。調(diào)用 openpyxl.load_workbook() 函數(shù),加載 excel 文檔,獲取 Workbook 對象。
  • 調(diào)用 workbook#active 或 workbook[${sheet_name}],獲取 sheet 工作簿。
  • 傳入 row 和 column 關鍵字參數(shù)并調(diào)用索引或工作表的 cell() 方法,獲取 Cell 對象。
  • 有了 Cell 對象,就可以執(zhí)行具體的業(yè)務邏輯咯。

總結

以上所述是小編給大家介紹的python 的 openpyxl模塊 讀取 Excel文件的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關文章

  • PySide6精簡教程(附圖文!)

    PySide6精簡教程(附圖文!)

    PySide6是Qt的Python封裝,是Qt for Python的組成之一,另一部分是Shiboken,下面這篇文章主要給大家介紹了關于PySide6精簡教程的相關資料,需要的朋友可以參考下
    2023-02-02
  • python創(chuàng)造虛擬環(huán)境方法總結

    python創(chuàng)造虛擬環(huán)境方法總結

    在本篇內(nèi)容里我們給大家整理了關于python創(chuàng)造虛擬環(huán)境的詳細方法和步驟,需要的朋友們學習下。
    2019-03-03
  • Python中type的構造函數(shù)參數(shù)含義說明

    Python中type的構造函數(shù)參數(shù)含義說明

    這篇文章主要介紹了Python中type的構造函數(shù)參數(shù)含義說明,本文用一個編碼實例解釋Python type的參數(shù)的作用和含義,需要的朋友可以參考下
    2015-06-06
  • python Pandas高級功能之數(shù)據(jù)透視表和字符串操作

    python Pandas高級功能之數(shù)據(jù)透視表和字符串操作

    Pandas是Python中用于數(shù)據(jù)處理和分析的強大庫,這篇文章將深入探討Pandas庫的高級功能:數(shù)據(jù)透視表和字符串操作,需要的朋友可以參考下
    2023-07-07
  • Python實現(xiàn)爬取馬云的微博功能示例

    Python實現(xiàn)爬取馬云的微博功能示例

    這篇文章主要介紹了Python實現(xiàn)爬取馬云的微博功能,結合實例形式較為詳細的分析了Python模擬ajax請求爬取馬云微博的相關操作技巧與注意事項,需要的朋友可以參考下
    2019-02-02
  • python使用pyshp讀寫shp文件的實現(xiàn)

    python使用pyshp讀寫shp文件的實現(xiàn)

    本文主要介紹了python使用pyshp讀寫shp文件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Python報錯TypeError: tuple indices must be integers or slices, not str的問題分析及解決方法

    Python報錯TypeError: tuple indices must be

    在Python編程過程中,我們經(jīng)常會遇到各種各樣的報錯信息,其中,“TypeError: tuple indices must be integers or slices, not str”這個報錯,對于很多開發(fā)者來說,可能既熟悉又陌生,今天,我們就來深入探討一下這個報錯,看看它是如何產(chǎn)生的,以及如何快速有效地解決它
    2025-01-01
  • Pytorch限制或增加CPU使用的核數(shù)方式

    Pytorch限制或增加CPU使用的核數(shù)方式

    這篇文章主要介紹了Pytorch限制或增加CPU使用的核數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python中numpy數(shù)組的csv文件寫入與讀取

    python中numpy數(shù)組的csv文件寫入與讀取

    本文主要介紹了python中numpy數(shù)組的csv文件寫入與讀取,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • python將list轉(zhuǎn)為matrix的方法

    python將list轉(zhuǎn)為matrix的方法

    今天小編就為大家分享一篇python將list轉(zhuǎn)為matrix的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12

最新評論

汤阴县| 岳阳市| 平泉县| 灵丘县| 洪湖市| 武强县| 桑植县| 化隆| 英山县| 松桃| 德化县| 永胜县| 汾西县| 舒兰市| 昌邑市| 广汉市| 托克逊县| 成武县| 东兰县| 青阳县| 正阳县| 什邡市| 上虞市| 南丰县| 石城县| 龙岩市| 永仁县| 双峰县| 张家界市| 宝清县| 锡林郭勒盟| 田东县| 法库县| 比如县| 桃园市| 高尔夫| 百色市| 湖北省| 伊吾县| 岳池县| 宜黄县|