python xlrd 讀取Excel


 

一、安裝xlrd模塊:

1、打開cmd輸入命令:

pip install xlrd

2、驗證安裝是否成功:

  • 在cmd輸入 python  進入python環境
  • 然后輸入 import xlrd,不報錯即按照成功

二、常用方法:

1、導入模塊和打開Excel:

import xlrd

wb = xlrd.open_workbook("income.xlsx")

2、獲取sheet:

  • 獲取所有sheet名字:x1.sheet_names()
  • 獲取sheet數量:x1.nsheets
  • 獲取所有sheet對象:x1.sheets()
  • 通過sheet名查找:x1.sheet_by_name("test”)
  • 通過索引查找:x1.sheet_by_index(3)
import xlrd

wb = xlrd.open_workbook("income.xlsx")

print(f"包括的表單數量:{wb.nsheets}")
print(f"表單的名分別為:{wb.sheet_names()}")
print(f"獲取所有的sheet對象:{wb.sheets()}")
print(f"通過sheet名查找:{wb.sheet_by_name('2018')}")
print(f"通過sheet名查找:{wb.sheet_by_index(0)}")

輸出:

包括的表單數量:3
表單的名分別為:['2018', '2017', '2016']
獲取所有的sheet對象:[<xlrd.sheet.Sheet object at 0x000001D8B478D0C8>, <xlrd.sheet.Sheet object at 0x000001D8B47D7E08>, <xlrd.sheet.Sheet object at 0x000001D8B47C6108>]
通過sheet名查找:<xlrd.sheet.Sheet object at 0x000001D8B478D0C8>
通過sheet名查找:<xlrd.sheet.Sheet object at 0x000001D8B478D0C8>

3、獲取sheet數據:

  • 獲取sheet名:sheet.name
  • 獲取總行數:sheet.nrows
  • 獲取總列數:sheet.ncols
import xlrd

wb = xlrd.open_workbook("income.xlsx")

#獲取指定的sheet對象
sheet = wb.sheet_by_name("2018")
print(f"獲取sheet名:{sheet.name}")
print(f"獲取總行數:{sheet.nrows}")
print(f"獲取總列數:{sheet.ncols}")

輸出

D:\tools\Python37\python.exe E:/teachingexample/samples/excel/test4.py
獲取sheet名:2018
獲取總行數:13
獲取總列數:2

4、單元格批量讀取:

 a)行操作:

  • sheet1.row_values(0)  # 獲取第一行所有內容,合並單元格,首行顯示值,其它為空。
  • sheet1.row(0)           # 獲取單元格值類型和內容
  • sheet1.row_types(0)   # 獲取單元格數據類型
import xlrd

wb = xlrd.open_workbook("income.xlsx")

#獲取指定的sheet對象
sheet = wb.sheet_by_name("2018")
#row_values 獲取某行所有內容,結果返回一個列表
print(f"獲取第一行所有內容:{sheet.row_values(0)}")
#row(0)獲取指點單元格的類型和值
print(f"獲取單元格值類型和內容:{sheet.row(0)}")
print(f"獲取單元格數據類型:{sheet.row_types(0)}")

輸出

獲取第一行所有內容:['月份', '收入']
獲取單元格內容:[text:'月份', text:'收入']
獲取總列數:array('B', [1, 1])

b) 表操作

  • sheet1.row_values(0, 6, 10)   # 取第1行,第6~10列(不含第10行)
  • sheet1.col_values(0, 0, 5)    # 取第1列,第0~5行(不含第5行)
  • sheet1.row_slice(2, 0, 2)     # 獲取單元格值類型和內容
  • sheet1.row_types(1, 0, 2)   # 獲取單元格數據類型
import xlrd

wb = xlrd.open_workbook("income.xlsx")

#獲取指定的sheet對象
sheet = wb.sheet_by_name("2018")

#取第1行,第6~10列(不含第10表)
print(sheet.row_values(0, 6, 10))
#取第1列,第0~5行(不含第5行)
print(sheet.col_values(0, 0, 5))
#獲取單元格值類型和內容,同sheet1.row(0)
print(sheet.row_slice(2, 0, 2))
#獲取單元格數據類型
print(sheet.row_types(1, 0, 2))

5、特定單元格讀取:

 a) 獲取單元格值:

  • sheet1.cell_value(1, 2)
  • sheet1.cell(1, 2).value
  • sheet1.row(1)[2].value 

b) 獲取單元格類型:

  • sheet1.cell(1, 2).ctype
  • sheet1.cell_type(1, 2)
  • sheet1.row(1)[2].ctype
import xlrd

wb = xlrd.open_workbook("income.xlsx")

#獲取指定的sheet對象
sheet = wb.sheet_by_name("2018")

# 特定單元格讀取
# 取值
print(sheet.cell_value(0, 1))
print(sheet.cell(0, 1).value)
print(sheet.row(0)[1].value)

#取類型
print(sheet.cell(0, 1).ctype)
print(sheet.cell_type(0, 1))
print(sheet.row(0)[1].ctype)

6、(0,0)轉換A1:

  • xlrd.cellname(0, 0)   # (0,0)轉換成A1
  • xlrd.cellnameabs(0, 0) # (0,0)轉換成$A$1
  • xlrd.colname(30)  # 把列由數字轉換為字母表示
import xlrd

wb = xlrd.open_workbook("income.xlsx")

#獲取指定的sheet對象
sheet = wb.sheet_by_name("2018")

# (0,0)轉換成A1
print(xlrd.cellname(0, 0))
# (0,0)轉換成$A$1
print(xlrd.cellnameabs(0, 0))
#把列由數字轉換為字母表示
print(xlrd.colname(30))

輸出:

D:\tools\Python37\python.exe E:/teachingexample/samples/excel/test4.py
A1
$A$1
AE


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM