读取 Excel
    :param sheet_index:
    :param file_name:
    :param offset: 偏移，一般第一行是表头，不需要读取数据
    :return:

def read_excel(file_name, offset=1, sheet_index=0):
    """
    读取 Excel
    :param sheet_index:
    :param file_name:
    :param offset: 偏移，一般第一行是表头，不需要读取数据
    :return:
    """
    try:
        workbook = xlrd.open_workbook(file_name)
    except Exception as e:
        return None

    if len(workbook.sheets()) <= 0:
        return []

    sh = workbook.sheets()[sheet_index]

    raw_data = []
    n_rows = sh.nrows
    row = sh.row_values(0)
    header = []
    for t in row:
        t = t.strip().lower()
        header.append(t)

    # n_cols = sh.ncols
    # 第0行是提示信息和标题，跳过
    for i in range(offset, n_rows):
        try:
            row = sh.row_values(i)
            d = {}
            for j, t in enumerate(header):
                d[t] = row[j]
            raw_data.append(d)
        except Exception as e:
            pass

    return raw_data