python之使用xlrd读取excel

# # test_sample.py
# import pytest
# @pytest.fixture()
# def is_odd(request):
#     print('Now the parameter are:--{}\n'.format(request.param))
#     if int(request.param) % 2 == 0:
#         return False
#     else:
#         return True
#
# @pytest.mark.parametrize("is_odd", [1, 2], indirect=True)
# def test_is_odd(is_odd):
#     if is_odd:
#         print("is odd number")
#     else:
#         print("is not odd number")
#
#
# if __name__ == "__main__":
#     pytest.main([])


# !/usr/bin/env python
# -*- coding:utf-8 -*-
# from openpyxl import load_workbook
# def test_readExcel():
#     # wb = load_workbook('C:/Users/Administrator/Desktop/test.xlsx')
#     wb = load_workbook('./test.xlsx')
# # 获得所有sheet的名称
#     print(wb.get_sheet_names())
#     # 根据sheet名字获得sheet
#     a_sheet = wb.get_sheet_by_name('Sheet1')
#     # 获得sheet名
#     print(a_sheet.title)  #Sheet1
#     # 获得当前正在显示的sheet, 也可以用wb.get_active_sheet()
#     sheet = wb.active
#     print('当前正在显示的sheet---', sheet)
#
#     print('通过worksheet.cell获取所有数据方法:')
#     for i in range(1, a_sheet.max_row+1):
#         for j in range(1, a_sheet.max_column+1):
#             print(a_sheet.cell(row=i, column=j).value,end=' ')
#         print('\n')



# 导入模块
import xlrd

def test_readExcel():
    # 打开文件方式1:
    work_book = xlrd.open_workbook('test.xlsx')
    print('打印所有Sheets的个数:',work_book.nsheets)
    sheets = work_book.sheets()
    print('打印所有Sheets的地址:',sheets)

    # 获取工作簿所有sheet表对象名称
    sheets_name = work_book.sheet_names()
    print('获取工作簿所有sheet表对象名称:',sheets_name)
    # 按索引获取sheet对象
    sheet_1 = work_book.sheet_by_index(0)
    print('按索引获取sheet对象',sheet_1)
    # 按sheet表名称获取sheet对象,名称分大小写
    sheet_2 = work_book.sheet_by_name('Sheet2')
    print('按sheet表名称获取sheet对象,名称分大小写:',sheet_2)

    # 获取sheet表单元格对象,单元格数据类型:单元格值
    cell0 = sheet_1.cell(1,1)
    print('cell0',cell0,'type',type(cell0))
    #cell0 text:'女' type 

    # 获取sheet表单元格值
    cell_0_value = sheet_1.cell_value(1, 1)
    print('cell_0_value',cell_0_value,'type',type(cell_0_value))
    # cell_0_value 女 type 

    # 获取单元格类型
    cell_0_type = sheet_1.cell_type(1, 1)
    print('获取单元格类型:',cell_0_type)

    # 获取sheet表对象有效行数
    row_sum = sheet_1.nrows
    print('获取sheet表对象有效行数:',row_sum)#获取sheet表对象有效行数: 3

    # 获取sheet表某一行长度
    row_len = sheet_1.row_len(0)
    "def row_len(self, rowx):"
    print('获取sheet表某一行长度',row_len)#获取sheet表某一行长度 2

    # 获取sheet表某一行所有数据类型及值
    row_0 = sheet_1.row(0)
    "def row(self, rowx):"
    print('获取sheet表某一行所有数据类型及值',row_0,'type(row_0):',type(row_0))
    #获取sheet表某一行所有数据类型及值 [text:'姓名', text:'性别'] type(row_0): 

    # 获取某一行对象的值,可指定开始结束列
    row_0_s = sheet_1.row_slice(0, 0, 1)
    "def row_slice(self, rowx, start_colx=0, end_colx=None):"
    print('获取某一行对象的值,可指定开始结束列',row_0_s)
    #获取某一行对象的值,可指定开始结束列: [text:'姓名', text:'性别']

    # 获取sheet表对象某一行数据类型,返回一个数组对象
    row_0_type = sheet_1.row_types(0,0)
    "def row_types(self, rowx, start_colx=0, end_colx=None):"
    print('获取sheet表对象某一行数据类型,返回一个数组对象',row_0_type)

    # 获取sheet表对象某一行数据值
    row_0_value = sheet_1.row_values(1)
    "def row_values(self, rowx, start_colx=0, end_colx=None):"
    print('获取sheet表对象某一行数据值:',row_0_value,'type(row_0_value):',type(row_0_value))

    # 获得sheet对象所有行对象生成器
    rows = sheet_1.get_rows()
    print('获得sheet对象所有行对象生成器:',rows)
    #获得sheet对象所有行对象生成器: . at 0x0000023EC32E6960>

    #获得每行对象的数据类型和值
    for row in rows:
        print('row:',row)
    #row: [text:'姓名', text:'性别']
    #row: [text:'张三', text:'女']
    #row: [text:'李四', text:'男']

    # 获取sheet表有效列数
    col_sum = sheet_1.ncols
    print('获取sheet表有效列数:',col_sum)
    #获取sheet表有效列数: 2

    # 获取列对象
    # #################### 该方法好像有问题... ####################3
    cell_0 = sheet_1.col_slice(0)
    "def col_slice(self, colx, start_rowx=0, end_rowx=None):"
    print('获取列对象:',cell_0)
    #获取列对象: [text:'姓名', text:'张三', text:'李四']

    # 获取某一列的值
    col_0_value = sheet_1.col_values(0)
    "def col_values(self, colx, start_rowx=0, end_rowx=None):"
    print('获取某一列的值:',col_0_value)
    #获取某一列的值: ['姓名', '张三', '李四']

    # 获取某一列的数据类型
    col_0_type = sheet_1.col_types(0)
    "def col_types(self, colx, start_rowx=0, end_rowx=None):"
    print('获取某一列的数据类型:',col_0_type)

    # 按行读取
    data_row = []
    for row in range(sheet_1.nrows):
        data_row.append(sheet_1.row_values(row))
    print('按行读取:',data_row,'type(data_row):',type(data_row))
    #按行读取: [['姓名', '性别'], ['张三', '女'], ['李四', '男']] type(data_row): 

    # 按列读取
    data_col = [sheet_1.col_values(i) for i in range(sheet_1.ncols)]
    print('按列读取:',data_col,'type(data_col):',type(data_col))
    #按列读取: [['姓名', '张三', '李四'], ['性别', '女', '男']] type(data_col): 

    # 按行读取test.xlsx所有sheet表数据
    all_data = {}
    for i, sheet_obj in enumerate(work_book.sheets()):
        all_data[i] = [sheet_obj.row_values(row)
                       for row in range(sheet_obj.nrows)]
    print('按行读取test.xlsx所有sheet表数据:',all_data)
    #按行读取test.xlsx所有sheet表数据: {0: [['姓名', '性别'], ['张三', '女'], ['李四', '男']], 1: [], 2: []}

    # 按列读取test.xlsx所有sheet表数据
    all_data = {}
    for i, sheet_obj in enumerate(work_book.sheets()):
        all_data[i] = [sheet_obj.col_values(row)
                       for row in range(sheet_obj.ncols)]
    print('按列读取test.xlsx所有sheet表数据:',all_data)
    #按列读取test.xlsx所有sheet表数据: {0: [['姓名', '张三', '李四'], ['性别', '女', '男']], 1: [], 2: []}

你可能感兴趣的:(笔记,python,excel,开发语言)