博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python读取excel(xlrd)
阅读量:6226 次
发布时间:2019-06-21

本文共 4247 字,大约阅读时间需要 14 分钟。

 一、安装xlrd模块:

1、mac下打开终端输入命令:

pip install xlrd

2、验证安装是否成功:

  • 在mac终端输入 python  进入python环境
  • 然后输入 import xlrd

  不报错说明模块安装成功

 

二、常用方法:

1、导入模块:

import xlrd

2、打开文件:

x1 = xlrd.open_workbook("data.xlsx")

 

3、获取sheet:

  • 获取所有sheet名字:x1.sheet_names()
  • 获取sheet数量:x1.nsheets
  • 获取所有sheet对象:x1.sheets()
  • 通过sheet名查找:x1.sheet_by_name("test”)
  • 通过索引查找:x1.sheet_by_index(3)
# -*- coding:utf-8 -*-import xlrdimport osfilename = "demo.xlsx"filePath = os.path.join(os.getcwd(), filename)print filePath# 1、打开文件x1 = xlrd.open_workbook(filePath)# 2、获取sheet对象print 'sheet_names:', x1.sheet_names()  # 获取所有sheet名字print 'sheet_number:', x1.nsheets        # 获取sheet数量print 'sheet_object:', x1.sheets()       # 获取所有sheet对象print 'By_name:', x1.sheet_by_name("test")  # 通过sheet名查找print 'By_index:', x1.sheet_by_index(3)  # 通过索引查找

输出:

sheet_names: [u' plan', u'team building', u'modile', u'test']sheet_number: 4sheet_object: [
,
,
,
]By_name:
By_index:

 

4、获取sheet的汇总数据:

  • 获取sheet名:sheet1.name
  • 获取总行数:sheet1.nrows
  • 获取总列数:sheet1.ncols
# -*- coding:utf-8 -*-import xlrdimport osfrom datetime import date,datetimefilename = "demo.xlsx"filePath = os.path.join(os.getcwd(), filename)print filePath# 打开文件x1 = xlrd.open_workbook(filePath)# 获取sheet的汇总数据sheet1 = x1.sheet_by_name("plan")print "sheet name:", sheet1.name   # get sheet nameprint "row num:", sheet1.nrows  # get sheet all rows numberprint "col num:", sheet1.ncols  # get sheet all columns number

输出:

sheet name: planrow num: 31col num: 11

 

 5、单元格批量读取:
 a)行操作:
  • sheet1.row_values(0)  # 获取第一行所有内容,合并单元格,首行显示值,其它为空。
  • sheet1.row(0)           # 获取单元格值类型和内容
  • sheet1.row_types(0)   # 获取单元格数据类型
# -*- coding:utf-8 -*-import xlrdimport osfrom datetime import date,datetimefilename = "demo.xlsx"filePath = os.path.join(os.getcwd(), filename)x1 = xlrd.open_workbook(filePath)sheet1 = x1.sheet_by_name("plan")# 单元格批量读取print sheet1.row_values(0)  # 获取第一行所有内容,合并单元格,首行显示值,其它为空。print sheet1.row(0)         # 获取单元格值类型和内容print sheet1.row_types(0)   # 获取单元格数据类型
输出:
[u'learning plan', u'', u'', u'', u'', u'', u'', u'', 123.0, 42916.0, 0][text:u'learning plan', empty:u'', empty:u'', empty:u'', empty:u'', empty:u'', empty:u'', empty:u'', number:123.0, xldate:42916.0, bool:0]array('B', [1, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4])

 

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)   # 获取单元格数据类型
# -*- coding:utf-8 -*-import xlrdimport osfrom datetime import date,datetimefilename = "demo.xlsx"filePath = os.path.join(os.getcwd(), filename)print filePath# 1、打开文件x1 = xlrd.open_workbook(filePath)sheet1 = x1.sheet_by_name("plan")# 列操作print sheet1.row_values(0, 6, 10)   # 取第1行,第6~10列(不含第10表)print sheet1.col_values(0, 0, 5)    # 取第1列,第0~5行(不含第5行)print sheet1.row_slice(2, 0, 2)     # 获取单元格值类型和内容,同sheet1.row(0)print sheet1.row_types(1, 0, 2)     # 获取单元格数据类型

输出:

[u'', u'', 123.0, 42916.0][u'learning plan', u'\u7f16\u53f7', 1.0, 2.0, 3.0][number:1.0, text:u'\u7ba1\u7406\u5b66\u4e60']array('B', [1, 1])
 
6、特定单元格读取:
 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
# -*- coding:utf-8 -*-import xlrdimport osfrom datetime import date,datetimefilename = "demo.xlsx"filePath = os.path.join(os.getcwd(), filename)x1 = xlrd.open_workbook(filePath)sheet1 = x1.sheet_by_name("plan")# 特定单元格读取# 取值print sheet1.cell_value(1, 2)print sheet1.cell(1, 2).valueprint sheet1.row(1)[2].value#取类型print sheet1.cell(1, 2).ctypeprint sheet1.cell_type(1, 2)print sheet1.row(1)[2].ctype
 
7、(0,0)转换A1:
  • xlrd.cellname(0, 0)   # (0,0)转换成A1
  • xlrd.cellnameabs(0, 0) # (0,0)转换成$A$1
  • xlrd.colname(30)  # 把列由数字转换为字母表示
# -*- coding:utf-8 -*-import xlrdimport osfilename = "demo.xlsx"filePath = os.path.join(os.getcwd(), filename)# 打开文件x1 = xlrd.open_workbook(filePath)sheet1 = x1.sheet_by_name("plan")# (0,0)转换成A1print xlrd.cellname(0, 0)   # (0,0)转换成A1print xlrd.cellnameabs(0, 0) # (0,0)转换成$A$1print xlrd.colname(30)  # 把列由数字转换为字母表示

输出:

A1$A$1AE
 
8、数据类型:
  • 空:0
  • 字符串:1
  • 数字:2
  • 日期:3
  • 布尔:4
  • error:5
 
 
本文转自贺满博客园博客,原文链接:http://www.cnblogs.com/puresoul/p/7520198.html
,如需转载请自行联系原作者。
你可能感兴趣的文章
MSTest
查看>>
java 给任务传递参数
查看>>
oracle之 反向键索引
查看>>
mysql+keepalived 双主热备高可用
查看>>
Hive之 hive的三种使用方式(CLI、HWI、Thrift)
查看>>
DOM基础总结
查看>>
微信公众平台源码
查看>>
Struts2--HelloWord
查看>>
linux C学习笔记05--信号量与共享内存(进程同步)
查看>>
go-mysql,一个易用的mysql接口框架实现
查看>>
POJ3320 Jessica's Reading Problem【尺取法】
查看>>
201671010117 2016-2017-2《Java程序设计》第八周学习Java心得
查看>>
画廊视图(Gallery)的功能和用法
查看>>
自己动手编写一个VS插件(七)
查看>>
Android里面的Toast
查看>>
mysql双机热备的实现
查看>>
前加绩中国、信雅达高级全栈工程师:吴劲松
查看>>
-bash: pod: command not found 解决办法
查看>>
GCD hdu1695容斥原理
查看>>
Node.js:回调函数
查看>>