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

 

标签:Python
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号