做自动化时须要从excel读取数据;
本文实现将excel文件数据读取为json格局,不便自动化调用

读取xls文件

应用xlrd读取xls文件代码:

import xlrddef read_xls(file):    # 实例化excel    book = xlrd.open_workbook(file)    # 下标读取sheet    sheet = book.sheet_by_index(1)    # sheet name读取sheet    # sheet = book.sheet_by_name('Sheet1')    # 获取总行数    nrows = sheet.nrows    # 循环读取每行数据    datas = []    for i in range(1, nrows):        # print(sheet.row_values(i))        # 数据组装dic+t格局        data = dict(zip(sheet.row_values(0), sheet.row_values(i)))        datas.append(data)    return datas

读取xlsx文件

因为xlrd只能读取xls,如遇到xlsx文件,须要应用openpyxl库读取,代码如下:

from openpyxl import load_workbookdef read_xlsx(file):    # 加载文件    book = load_workbook(file)    # sheet name获取sheet:    sheet = book['sheet1']    # 获取总行数    rows = sheet.max_row    # 获取总列数    # cols = sheet.max_column    # print(rows)    # 获取表头    head = [row for row in sheet.iter_rows(min_row=1, max_row=1, values_only=True)][0]    # 数据组装    datas = []    for row in sheet.iter_rows(min_row=2, max_row=rows + 1, values_only=True):        data = dict(zip(head, row))        datas.append(data)    # print(datas)    return datas

判断文件类型办法

最初依据文件后缀主动抉择对应办法读取

def read_excel(file: str):    if file.endswith('xls'):        data = read_xls(file)    elif file.endswith('xlsx'):        data = read_xlsx(file)    else:        data = ['not support file']    return data

最终代码

import xlrdfrom openpyxl import load_workbookdef read_xls(file):    # 实例化excel    book = xlrd.open_workbook(file)    # 下标读取sheet    sheet = book.sheet_by_index(1)    # sheet name读取sheet    # sheet = book.sheet_by_name('Sheet1')    # 获取总行数    nrows = sheet.nrows    # 循环读取每行数据    datas = []    for i in range(1, nrows):        # print(sheet.row_values(i))        # 数据组装dic+t格局        data = dict(zip(sheet.row_values(0), sheet.row_values(i)))        datas.append(data)    return datasdef read_xlsx(file):    # 加载文件    book = load_workbook(file)    # sheet name获取sheet:    sheet = book['sheet1']    # 获取总行数    rows = sheet.max_row    # 获取总列数    # cols = sheet.max_column    # print(rows)    # 获取表头    head = [row for row in sheet.iter_rows(min_row=1, max_row=1, values_only=True)][0]    # 数据组装    datas = []    for row in sheet.iter_rows(min_row=2, max_row=rows + 1, values_only=True):        data = dict(zip(head, row))        datas.append(data)    # print(datas)    return datas    # 获取单元格值:    # Data = sheet.cell(row=row, column=col).value  # 获取表格内容,是从第一行第一列是从1开始的,留神不要丢掉 .valuedef read_excel(file: str):    if file.endswith('xls'):        data = read_xls(file)    elif file.endswith('xlsx'):        data = read_xlsx(file)    else:        data = ['not support file']    return data

End
流柯 https://segmentfault.com/u/cnliuke