xlrd常见操作

0. 导言

笔者前期在做项目时,使用第三方python库openpyxl来读取excel文件,但是当数据量非常大时,代码执行时间非常缓慢。基于此,笔者查阅相关资料,发现使用xlrd能大幅度提升Python读取excel的效率。

1. xlrd和xlwt包安装

pip install xlrd==1.2.0   # 建议安装低版本的xlrd包。如果安装高版本的xlrd,将无法读取excel文件
pip install xlwt

2. xlrd包使用

# 导包
import xlrd

# 数据文件
data_file = '../数据/轨道电路基础数据1.xlsx'

# 主函数
if __name__ == "__main__":

  '''
    1. 打开文件
  '''
  wb = xlrd.open_workbook(data_file)
  print("==========================================================================")
  '''
    2. 获取sheet对象
  '''
  print("\n++++++++++++++++++++++++ 2. 获取sheet对象 ++++++++++++++++++++++++\n")

  # 1. 获取所有sheet名字
  sheet_names = wb.sheet_names()
  print("sheet_names:", sheet_names)
  # 2. 获取sheet数量
  sheet_number = wb.nsheets
  print("sheet_number:", sheet_names)
  # 3. 获取所有sheet对象
  sheet_objct = wb.sheets()
  print(sheet_objct)
  # 4. 通过sheet名查找
  sheet_by_name = wb.sheet_by_name("基础数据")
  print("sheet_by_name:", sheet_by_name)
  # 5. 通过索引查找(从0开始)
  sheet_by_index = wb.sheet_by_index(0)
  print("sheet_by_index:", sheet_by_index)
  print("==========================================================================")

  '''
    3. 获取sheet的汇总数据
  '''
  print("\n++++++++++++++++++++++++ 3. 获取sheet的汇总数据 ++++++++++++++++++++++++\n")

  sheet = wb.sheet_by_index(0)
  # 1. 获取sheet名
  sheet_name = sheet.name
  print("sheet_name:", sheet_name)
  # 2. 获取sheet总列数
  num_cols = sheet.ncols
  print("num_cols:", num_cols)
  # 3. 获取sheet总行数
  num_rows = sheet.nrows
  print("num_rows:", num_rows)
  print("==========================================================================")

  '''
    4. 单元格批量读取
  '''
  # a.行操作
  print("\n++++++++++++++++++++++++ 4. 单元格批量读取 —— 行操作 ++++++++++++++++++++++++\n")
  # 1. 获取第一行所有内容
  row_1_values = sheet.row_values(0)
  print("第一行所有内容:",row_1_values)
  # 2. 获取单元格值类型和内容
  row_1 = sheet.row(0)
  print("单元格值类型和内容:",row_1)
  # 3. 获取单元格数据类型
  row_1_type = sheet.row_types(0)
  print("获取单元格数据类型:",row_1_type)
  print("==========================================================================")
  # b. 表操作
  print("\n++++++++++++++++++++++++ 4. 单元格批量读取 —— 表操作 ++++++++++++++++++++++++\n")
  # 1. 取第1行,第6~10列
  result1 = sheet.row_values(0, 6, 10)
  print("第1行,第6~10列:", result1)
  # 2. 取第一列,第0~5行
  result2 = sheet.col_values(0, 0, 5)
  print("第一列,第0~5行:", result2)
  # 3. 获取单元格值类型和内容
  result3 = sheet.row_slice(2, 0, 2)
  print("单元格值类型和内容:", result3)
  # 4. 获取单元格数据类型
  result4 = sheet.row_types(1, 0, 2)
  print("单元格数据类型:", result4)
  print("==========================================================================")

  '''
    5. 特定单元格读取
  '''
  # a.获取单元格值
  print("\n++++++++++++++++++++++++ 5. 特定单元格读取 —— 获取单元格值 ++++++++++++++++++++++++\n")
  result1 = sheet.cell_value(1, 2)
  print("sheet.cell_value(1, 2):", result1)
  result2 = sheet.cell(1,2).value
  print("sheet.cell(1,2).value:", result2)
  result3 = sheet.row(1)[2].value
  print("sheet.row(1)[2].value:", result3)
  print("==========================================================================")
  # b.获取单元格类型
  print("\n++++++++++++++++++++++++ 5. 特定单元格读取 —— 获取单元格类型 ++++++++++++++++++++++++\n")
  result1 = sheet.cell(1,2).ctype
  print("sheet.cell(1,2).ctype:", result1)
  result2 = sheet.cell_type(1,2)
  print("sheet.cell_type(1,2):", result2)
  result3 = sheet.row(1)[2].ctype
  print("sheet.row(1)[2].ctype:", result3)

  '''
    6. 常见的一些转换
  '''
  print("\n++++++++++++++++++++++++ 6. 常见的一些转换 ++++++++++++++++++++++++\n")
  # (0,0)转换成A1
  result1 = xlrd.cellname(0,0)
  print("(0,0)转换成A1:", result1)
  # (0,0)转换成$A$1
  result2 = xlrd.cellnameabs(0,0)
  print("(0,0)转换成$A$1:", result2)
  # 把列由数字转换为字母表示
  result3 = xlrd.colname(40)
  print("把列由数字转换为字母表示:xlrd.colname(40): ", result3)

2. 程序运行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值