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