办公自动化 -- python读取excel数据

xlrd介绍

  • xlrd是一个用于从excel文件(无论是.xls还是.xlsx文件)读取数据和格式化信息的库。

xlrd安装

  • 在安装python环境的前提下
  • windows+R输入cmd进入终端
  • 执行 pip install xlrd
    在这里插入图片描述

xlrd导入

import xlrd as xr

'''
读取数据
获取工作簿
通过工作簿获取工作表
读取行列数据
'''
book = xr.open_workbook('demo,xls')     #获取工作簿  注意:后缀不不能少
book.nsheets    #获取工作表的个数
book.sheet_names()  #获取工作表名字,返回list
book.sheets()   #获取所有工作表信息
sheet_two = book.sheet()[1]     #通过索引获取工作表 索引从0开始
sheet_one = book.sheet_by_index(0)  #通过索引获取工作表
sheet_three = book.sheet_by_name('sheet3') #通过名字获取工作表
book.sheet_loaded(1)    #通过索引判断工作表是否存在,返回布尔值
book.sheet_loaded('sheet1' or 'sheet2') #可以用逻辑运算符

python操作工作簿

import xlrd as xr


book = xr.open_workbook('demo.xls')    #获取工作簿,如果路径或文件名有中文给前面加一个r保留原生字符

python读取excel行列数据

python读取excel行数据

'''
table.nrows     #返回工作表的总行数
table.row(rowx) #返回由该行所有单元格组成的列表
table.row_slice(rowx,start_colx=0,end_colx=None)    #返回由该行中开始列到结束列的单元格对象组成的列表
table.row_types(rowx,start_colx=0,end_colx=None)    #返回该行切片后列表中每个单元格的数据类型
rowx --→ 指定行(默认从0开始)
start_colx --→ 开始列
end_colx --→ 结束列
'''
import xlrd as xr


book = xr.open_workbook('demo,xls')     #读取工作簿
sheet_two = book.sheet_by_index(1)      #读取工作表
sheet_two.nrows     #获取工作表的有效总行数
sheet_two.row(6)    #获取第七行,注意索引从0开始
sheet_two.row(6)[6:]    #获取第七行第六列之后的所有数据
sheet_two.row_slice(6,6)    #切片方法获取第七行第六列之后的所有数据
sheet_two.row_types(6)  #获取第七行单元格类型
sheet_two.row_types(6,6)    #获取索引为七行,六列后的数据类型
sheet_two.row_value(6)  #只获取数据不获取类型
sheet_two.row_len(6)    #获取第七行的有效数据

excel中数据类型对照表

cytpe
0empty(空值)
1string(字符串)
2number(数字)
3data(日期)
4boolean(布尔)
5error(错误)

python读取excel列数据

'''
table.ncols     #返回工作表的总列数
table.col(colx) #返回由该行所有单元格组成的列表
table.row_slice(colx,start_rowx=0,end_rowx=None)    #返回由该列中开始行到结束行的单元格对象组成的列表
table.row_types(colx,start_rowx=0,end_rowx=None)    #返回该行切片后列表中每个单元格的数据类型
table.col_values(colx,start_rowx=0,end_rowx=None)   #返回该行切片后列表中每个单元格的值
rowx --→ 指定行(默认从0开始)
start_colx --→ 开始列
end_colx --→ 结束列
'''
import xlrd as xr


book = xr.open_workbook('demo,xls')     #读取工作簿
sheet_two = book.sheet_by_index(1)      #读取工作表
sheet_two.ncols     #获取该工作表的有效列数
sheet_two.col(2)    #获取列的数据
sheet_two.col_slice(2,0,10) #切片
sheet_two.col_types(2,0,10) #查看第2列,0-9行的数据类型
sheet_two.col_values(2,0,10)

python读取excel单元格

'''
table.cell(rowx,colx)	#返回当前行列单元格内容
table.cell_value(rowx,colx)		#返回当前行列单元格的数值
table.cell_type(rowx,colx)		#返回当前行列单元格的内容
'''

excel合并后的单元格获取

'''
table.merged_cells	#返回所有合并后的单元格的索引
注意返回形式为(开始行数,结束行数)(开始列数,结束列数)
table.cell_value(rowx,colx)	#通过(开始行,开始列)获取合并后单元格
'''

python读取单元格数据

import xlrd as xr


book = xr.open_workbook('demo.xls')     #读取工作簿
sheet_two = book.sheet_by_name('sheet1')    #读取工作表
sheet_two.cell(6,6)     #获取单元格内容
sheet_two.cell_value(6,6)   #获取单元格的值
sheet_two.cell(6,6).value   #获取单元格的值
sheet_two.cell_type(6,6)    #获取单元格类型
sheet_two.cell(6,6).ctype   #注意仅用type不行,是ctype

python获取合并单元格

import xlrd as xr


book = xr.open_workbook('demo.xls')     #读取工作簿
sheet1 = book.sheet_by_index(0)     #用索引方式读取工作表
sheet1.merged_cells     #获取合并单元格的索引【(开始行,结束行)(开始列,结束列)】结束行与结束列往往取不到
sheet1.cell_value(0,0)  #获取合并后单元格:(开始行,开始列)
sheet1.cell_value(2,0)  #只获取数值不获取类型
sheet1.cell(2,0)        #获取类型和数值

python读取excel表格练习

import xlrd as xr
import datetime


book = xr.open_workbook('demo.xls') #读取工作簿
table = book.sheet_by_index(0)
'''
(1,0)(1,1)(1,2)(1,3)
(2,0)(2,1)(2,2)(2,3)
(3,0)(3,1)(3,2)(3,3)
(4,0)(4,1)(4,2)(4,3)
'''
row_num = table.norws   #获取工作表有效总行数
col_num = table.ncols   #获取工作表有效总列数
keys = table.row_values(0)  #获取标题栏的值
demo_data = []
for i in range(1,row_num):
    table_data ={}
    for j in range(col_num):
        c_value = table.cell(i,j).value
        c_type = table.cell_type(i,j)
        if c_type == 2 and c_value % 10 == 0:   #转换浮点数为整数
            c_type = int(c_value)
        elif c_type == 3:       #转换日期类型
            year,month,day,hour,minute,second = xr.xldate_as_tuple(c_value,0)   #0代表日期模式
            data = datetime.datetime(year,month,day,hour,minute,second)
            c_value = data.strftime('%Y%m%d %H:%M:%S')
        table_data[keys[j]] = c_value
    demo_data.append(table_data)
print(demo_data)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值