Пример #1
0
def process_data(sheet0, sheet1, sheet2, additional_datas1, additional_datas2, service, cols_df1, cols_df2):
    cols_df0 = pd.DataFrame(service.get_base_elements(CODE))
    main = {}
    for element in cols_df0.to_dict(orient='records'):
        range = element['excel_range']
        if range:
            # 格式化数据
            if element['excel_sheet'] == utils.cfg().get(CODE).get('sheet_0').get('sheet_name'):
                main[element['element_name']] = utils.format_date_value(sheet0[range].value)
            if element['excel_sheet'] == utils.cfg().get(CODE).get('sheet_3').get('sheet_name'):
                main[element['element_name']] = utils.format_date_value(sheet1[range].value)
            if element['excel_sheet'] == utils.cfg().get(CODE).get('sheet_4').get('sheet_name'):
                main[element['element_name']] = utils.format_date_value(sheet2[range].value)
        else:
            main[element['element_name']] = None
        if service == bl_ent:
            if main[element['element_name']] is None:
                main[element['element_name']] = ''

    additional_datas1 = service.extract_data(additional_datas1, cols_df1['element_name'].to_list())
    additional_datas2 = service.extract_data(additional_datas2, cols_df2['element_name'].to_list())
    json_data = build_isda_data(main,
                                additional_datas1,
                                additional_datas2,
                                cols_df0[cols_df0['status'] == '0']['element_name'].to_list(),
                                cols_df1[cols_df1['status'] == '0']['element_name'].to_list(),
                                cols_df2[cols_df2['status'] == '0']['element_name'].to_list(),
                                )
    return json_data
Пример #2
0
def parse_excel(report: SendReport):
    app = xw.App(visible=False, add_book=False)
    wb = app.books.open(report.xlsxFileAbsName)
    sheet0 = wb.sheets[utils.cfg().get(CODE).get('sheet_0').get('sheet_name')]
    sheet1 = wb.sheets[utils.cfg().get(CODE).get('sheet_3').get('sheet_name')]
    sheet2 = wb.sheets[utils.cfg().get(CODE).get('sheet_4').get('sheet_name')]

    if isinstance(report, IndividualSendReport):
        elements1 = bl_ind.get_base_elements(CODE_ADDITIONAL1)
        elements2 = bl_ind.get_base_elements(CODE_ADDITIONAL2)
        cols_df1 = pd.DataFrame(elements1)
        cols_df2 = pd.DataFrame(elements2)

        n1 = OrderedDict()
        n2 = OrderedDict()
        for element in elements1:
            if element['data_type'] == 'STRING':
                n1[element['element_name']] = str
        for element in elements2:
            if element['data_type'] == 'STRING':
                n2[element['element_name']] = str

        additional_data1 = excel_data.get_excel_data(n1, CODE, "sheet_1", report)
        additional_data2 = excel_data.get_excel_data(n2, CODE, "sheet_2", report)
        data = process_data(sheet0, sheet1, sheet2, additional_data1, additional_data2, bl_ind, cols_df1, cols_df2)
    else:
        elements1 = bl_ent.get_base_elements(CODE_ADDITIONAL1)
        elements2 = bl_ent.get_base_elements(CODE_ADDITIONAL2)
        cols_df1 = pd.DataFrame(elements1)
        cols_df2 = pd.DataFrame(elements2)
        n1 = OrderedDict()
        n2 = OrderedDict()
        for element in elements1:
            if element['data_type'] == 'STRING':
                n1[element['element_name']] = str
        for element in elements2:
            if element['data_type'] == 'STRING':
                n2[element['element_name']] = str

        additional_data1 = excel_data.get_excel_data(n1, CODE, "sheet_1", report)
        additional_data2 = excel_data.get_excel_data(n2, CODE, "sheet_2", report)
        data = process_data(sheet0, sheet1, sheet2, additional_data1, additional_data2, bl_ent, cols_df1, cols_df2)
    report.jsonData = data
    wb.close()
    app.quit()
Пример #3
0
def get_excel_data(n, CODE, sheet_number, report):
    file_data = pd.read_excel(
        report.xlsxFileAbsName,
        sheet_name=utils.cfg().get(CODE).get(sheet_number).get('sheet_name'),
        skiprows=2,
        header=0,
        keep_default_na=False,
        converters=n)
    return file_data