欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

首先讓我們先理解一些 Excel 基礎(chǔ)概念。

1 Excel 基礎(chǔ)概念

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

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

2 安裝 openpyxl

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

pip install openpyxl

3 讀取 Excel

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

3.1 加載

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

運(yùn)行結(jié)果:

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

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

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

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

運(yùn)行結(jié)果:

 

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')

運(yùn)行結(jié)果:

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

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

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

  • Workbook 對象的 sheetnames 屬性可以獲取所有 sheet 表的表名列表。
  • Workbook 對象的 active 屬性,會獲取當(dāng)前活動表,即打開 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')

運(yùn)行結(jié)果:

取得 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))

運(yùn)行結(jié)果:

獲取工作表的大小: 總行數(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')))

運(yùn)行結(jié)果:

[數(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('-- 當(dāng)前行獲取結(jié)束 --')

運(yùn)行結(jié)果:

((<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 -- 當(dāng)前行獲取結(jié)束 -- A3 2 B3 印度 C3 1339180127 D3 2973190 -- 當(dāng)前行獲取結(jié)束 -- A4 3 B4 美國 C4 324459463 D4 9147420 -- 當(dāng)前行獲取結(jié)束 --
  • 這里首先通過 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)

運(yùn)行結(jié)果:

獲取特定行: (<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 屬性,都會返回一個由 “行元組” 構(gòu)成的元組。每個行元組都擁有該行中的所有 Cell 對象。
  • 可以通過行元組的下標(biāo),來訪問具體的 Cell 對象。

讀取 Excel 步驟,總結(jié)如下:

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

總結(jié)

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

相關(guān)文章

  • Python實現(xiàn)隨機(jī)森林算法的示例代碼

    Python實現(xiàn)隨機(jī)森林算法的示例代碼

    隨機(jī)森林的英文是 Random Forest,英文簡寫是 RF,也是常用的人工智能算法,本文為大家介紹了Python實現(xiàn)隨機(jī)森林算法的示例代碼,希望對大家有所幫助
    2023-06-06
  • pytorch中如何設(shè)置隨機(jī)種子

    pytorch中如何設(shè)置隨機(jī)種子

    這篇文章主要介紹了pytorch中如何設(shè)置隨機(jī)種子,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python+selenium 腳本實現(xiàn)每天自動登記的思路詳解

    python+selenium 腳本實現(xiàn)每天自動登記的思路詳解

    這篇文章主要介紹了python+selenium 腳本實現(xiàn)每天自動登記,本文你給大家分享基本的思路,通過實例代碼截圖的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • python使用opencv實現(xiàn)馬賽克效果示例

    python使用opencv實現(xiàn)馬賽克效果示例

    這篇文章主要介紹了python使用opencv實現(xiàn)馬賽克效果,結(jié)合實例形式分析了Python使用cv2模塊操作圖片實現(xiàn)馬賽克效果的相關(guān)技巧,需要的朋友可以參考下
    2019-09-09
  • django 連接數(shù)據(jù)庫 sqlite的例子

    django 連接數(shù)據(jù)庫 sqlite的例子

    今天小編就為大家分享一篇django 連接數(shù)據(jù)庫 sqlite的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 基于Python寫一個番茄鐘小工具

    基于Python寫一個番茄鐘小工具

    最近聽到朋友說在用番茄鐘,有點興趣也想下載一個來用用,后面仔細(xì)一想這玩意做起來也不難,索性自己順手寫一個算了,在這里也分享給大家了
    2022-12-12
  • python 剪切移動文件的實現(xiàn)代碼

    python 剪切移動文件的實現(xiàn)代碼

    移動復(fù)制文件通過os.rename方法,先進(jìn)行文件是否存在判斷,如需更加復(fù)雜相同文件判斷可以根據(jù)文件屬性進(jìn)行判斷,此處只使用同名檢查,并刪除已存在文件,來實現(xiàn)覆蓋。這篇文章主要介紹了python 剪切移動文件的實現(xiàn)代碼,需要的朋友可以參考下
    2018-08-08
  • python 實現(xiàn)簡易的記事本

    python 實現(xiàn)簡易的記事本

    這篇文章主要介紹了python 實現(xiàn)簡易的記事本的示例代碼,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • python實現(xiàn)控制臺輸出彩色字體

    python實現(xiàn)控制臺輸出彩色字體

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)控制臺輸出彩色字體,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Python安裝及建立虛擬環(huán)境的完整步驟

    Python安裝及建立虛擬環(huán)境的完整步驟

    在使用 Python 開發(fā)時,建議在開發(fā)環(huán)境和生產(chǎn)環(huán)境下都使用虛擬環(huán)境來管理項目的依賴,下面這篇文章主要給大家介紹了關(guān)于Python安裝及建立虛擬環(huán)境的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06

最新評論