python读取excel中json并解析到新excel

假如需要处理一个excel表格,这个表格中有json,但是我们想提取某些字段的值,输出到新的excel表格中,通常我们会用xlrd,xlwt,openpyxl等第三方库,废话不多说,直接上代码,仅供参考。
python读取excel中json并解析到新excel_第1张图片

import openpyxl, xlwt, time


# 数组分组函数
def list_split(items, n):
    return [items[i:i + n] for i in range(0, len(items), n)]


# 数据导出,写入
def export_excel(value_cols, path):
    # 开始时间
    starttime = time.time()
    print("开始处理...")
    # 解决使用eval时报错
    global false, null, true
    false = null = true = ''
    # 声明表头和value的空数组
    title = []
    value = []
    # 打开目标文件
    wb = openpyxl.load_workbook(path)
    # 获取Sheet名,0代表第一个sheet
    sheet_names = wb.get_sheet_names()
    sheet = wb.get_sheet_by_name(sheet_names[0])
    # 获取sheet页最大行数,列数
    rows = sheet.max_row
    cols = sheet.max_column
    # 获取激活的sheet页
    ws = wb.active
    # 获取value所在列,假设有100for q in range(1, 100):
        if (ws.cell(row=1, column=q)).value == 'value':
            # 获取单元格内容-表头
            result_title = (ws.cell(row=2, column=q)).value
            # str转list
            result_title = eval(result_title)
    # 在结果中遍历title字段的值添加到title中
    for p in range(len(result_title)):
        title.append(result_title[p]['title'])
    # 获取指定单元格内容,一般从第二行读取
    for k in range(2, rows + 1):
        result = (ws.cell(row=k, column=value_cols)).value
        # str转list
        result = eval(result)
        # 在结果中遍历value字段到值添加到value中
        for j in range(len(result)):
            if 'value' not in result[j] or result == None:
                result[j]['value'] = None
            elif 'value' in result[j]:
                result[j]['value'] = result[j]['value']
            # title.append(result[j]['title'])
            value.append(result[j]['value'])
    # 按照指定长度对数组进行分组
    value = list_split(value, len(result))
    # 新建excel
    f = xlwt.Workbook()
    # 新建sheet页
    sheet2 = f.add_sheet('Shee1', cell_overwrite_ok=True)
    # 循环写入新的excel
    for m in range(0, rows - 1):
        for u in range(len(result)):
            # (row,col,value)
            sheet2.write(0, u, title[u])
            sheet2.write(m + 1, u, value[m][u])
    f.save('test.xls')
    print("导出成功!")
    # 结束时间
    endtime = time.time()
    costtime = endtime - starttime
    print("本次导出共消耗:" + str(int(costtime)) + "s")


export_excel(5, './test1.xlsx')

你可能感兴趣的:(数据处理,python,excel)