Python3 集成xlrd
符号
阅读:639
2021-03-31 12:45:45
评论:0
1、按照xlrd 模块
pip install xlrd
2、xlrd 功能使用
2.1:导入xlrd模块
import xlrd
2.2:打开指定文件
x1 = xlrd.open_workbook("data.xls")
2.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 xlrd
import os
filename = "demo.xls"
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) # 通过索引查找
2.4 获取sheet的汇总数据:
- 获取sheet名:sheet1.name
- 获取总行数:sheet1.nrows
- 获取总列数:sheet1.ncols
# -*- coding:utf-8 -*-
import xlrd
import os
from datetime import date,datetime
filename = "demo.xls"
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 name
print "row num:", sheet1.nrows # get sheet all rows number
print "col num:", sheet1.ncols # get sheet all columns number
2.5 单元格读取
2.5.1 行操作
- sheet1.row_values(0) # 获取第一行所有内容,合并单元格,首行显示值,其它为空。
- sheet1.row(0) # 获取单元格值类型和内容
- sheet1.row_types(0) # 获取单元格数据类型
# -*- coding:utf-8 -*-
import xlrd
import os
from datetime import date,datetime
filename = "demo.xls"
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) # 获取单元格数据类型
2.5.2 列操作
- 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 xlrd
import os
from datetime import date,datetime
filename = "demo.xls"
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) # 获取单元格数据类型
2.6 特定单元格读取
2.6.1 获取单元格值:
- sheet1.cell_value(1, 2)
- sheet1.cell(1, 2).value
- sheet1.row(1)[2].value
2.6.2获取单元格类型:
- sheet1.cell(1, 2).ctype
- sheet1.cell_type(1, 2)
- sheet1.row(1)[2].ctype
# -*- coding:utf-8 -*-
import xlrd
import os
from datetime import date,datetime
filename = "demo.xls"
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).value
print sheet1.row(1)[2].value
#取类型
print sheet1.cell(1, 2).ctype
print sheet1.cell_type(1, 2)
print sheet1.row(1)[2].ctype
2.7 xlrd 支持数据类型
- 空:0
- 字符串:1
- 数字:2
- 日期:3
- 布尔:4
- error:5
3、xlrd 功能封住
class ExcelRead:
def __init__(self,excelpath):
'''打开指定的excel文件'''
self.excelread=xlrd.open_workbook(excelpath)
def get_AllSheets(self):
'''获取所有的sheets'''
sheets=self.excelread.sheet_names()
return sheets
def get_SheetbyName(self,sheetname):
'''
通过name获取指定的sheet
:param sheetname: sheet名称
:return: sheet
'''
sheet=self.excelread.sheet_by_name(sheetname)
return sheet
def get_nrows(self,sheetname):
'''
获取指定sheet的行数
:param sheetname:sheet名称
:return: sheet总行数
'''
sheet=self.get_SheetbyName(sheetname)
rows_num=sheet.nrows
return rows_num
def get_ncolumns(self,sheetname):
'''
获取指定sheet的列数
:param sheetname:sheet名称
:return: sheet总列数
'''
sheet=self.get_SheetbyName(sheetname)
columns_num=sheet.ncols
return columns_num
def get_value(self,sheetname,row,col):
'''
通过行、列定位单元格获取value
:param row: 行
:param col: 列
:return: 单元格value
'''
sheet=self.get_SheetbyName(sheetname)
getvalue=sheet.cell_value(row,col)
return getvalue
def get_row_values(self,sheetname,row):
'''
获取excel一行的数据
:param sheetname:sheet名称
:param row: 行数
:return: 返回一行的数据
'''
row_value_list=[]
sheet=self.get_SheetbyName(sheetname)
sheet_row_len=sheet.ncols #通过列数获取一行元素的长度
for i in range(sheet_row_len):
get_value=self.get_value(sheetname,row,i)
row_value_list.append(get_value)
return row_value_list
def get_column_values(self,sheetname,col):
'''
获取excel一列的数据
:param sheetname:sheet名称
:param col: 列数
:return: 返回一列的数据
'''
col_value_list=[]
sheet=self.get_SheetbyName(sheetname)
sheet_column_len=sheet.nrows #通过行数获取一列元素的长度
for i in range(sheet_column_len):
get_value=self.get_value(sheetname,i,col)
col_value_list.append(get_value)
return col_value_list
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。