def search_banks(df_avancor, title_name): """ Поиск в таблице-Аванкор наличия строк с данными о банках""" # Кол-во строк и столбцов в файле Аванкор index_max = df_avancor.shape[0] collumn_max = df_avancor.shape[1] # Номер строки с названием раздела в файле Аванкор""" title_col = column_index_from_string('L') title_row = razdel_name_row(df_avancor, title_name, title_col=title_col) banks = bank_info (df_avancor, title_row) return banks
def data_search(df_avancor, avancoreTitle): """ Поиск в таблице-Аванкор наличия строк с данными""" # Кол-во строк и столбцов в файле Аванкор index_max = df_avancor.shape[0] collumn_max = df_avancor.shape[1] # Номер строки с названием раздела в файле Аванкор""" title_row = razdel_name_row(df_avancor, avancoreTitle, index_max) # находим номер первой строку с данными в файле Аванкор row_data = start_data_row(df_avancor, index_max, title_row) # находим номер последнке строки с данными в таблице Аванкор""" row_end = end_data_row(df_avancor, index_max, row_data) return row_data, row_end
def fioShort(ws, AvancoreTitle, avancor_fio_col, cell_fio): """Копируем короткое-ФИО подписанта""" # Формы: # 0420502 Справка о стоимости _56 SR_0420502_Podpisant # 0420502 Справка о стоимости _57 SR_0420502_Podpisant_spec_dep # количество строк в таблице Аванкор index_max = df_avancor.shape[0] # Номер строки с названием раздела в файле Аванкор avancor_title_row = fun.razdel_name_row(df_avancor, AvancoreTitle, index_max) # ФИО подписанта fio = df_avancor.loc[avancor_title_row, avancor_fio_col] # записываем в форму xbrl row_fio, col_fio = coordinate_to_tuple(cell_fio) ws.cell(row_fio, col_fio).value = fio
def rows_with_data(df_avancor, banks, all_razdels): """ Находим номера строк с данными, которые будем копировать""" avancoreTitle = '1.1. Виды и суммы операций, совершенных по банковским счетам некредитной \n' \ 'финансовой организации' col = 'B' # файл-Аванкор: интервал строк, в пределах которых ищем строки с разделами row_start = 32 row_end = 91 # Кол-во строк и столбцов в файле-Аванкор index_max = df_avancor.shape[0] collumn_max = df_avancor.shape[1] title_row = razdel_name_row(df_avancor, avancoreTitle, title_col=column_index_from_string(col), row_start=row_start, row_end=row_end) # номер строки с названиями валют row_currency = title_row[0] + 3 # номера строк с разделами rows_of_title = rows_of_razdel(df_avancor, all_razdels, col='D', row_start=row_start, row_end=row_end) rows_itogi = rows_of_razdel(df_avancor, all_razdels, col='B', row_start=row_start, row_end=row_end, rows_under=False) # устанавливаем нижнюю строку последнего раздела перед итогами rows_of_title[-1]['row_razdel_end'] = rows_itogi[0]['row_razdel_begin'] - 1 return rows_of_title
def copyFromAvancore(ws, avancoreTitle, max_number, cell_start_row, cell_start_col): # кол-во строк и столбцов в файле Аванкор index_max = df_avancor.shape[0] collumn_max = df_avancor.shape[1] zapiski_null = [] # список пустых форм # for url, form in urlSheets.items(): if avancoreTitle: # если ячейка в столбце "sheet_1_title" пустая, то "title_1_name == nan" # в этом случае: bool(title_1_name == title_1_name) == Fals # (...странно, но работает) # Номер строки с названием раздела в файле Аванкор""" title_row = fun.razdel_name_row(df_avancor, avancoreTitle, index_max) # находим номер первой строку с данными в файле Аванкор data_row = fun.start_data_row(df_avancor, index_max, title_row) # находим номер последней строки с данными в таблице Аванкор""" row_end = fun.end_data_row(df_avancor, index_max, data_row) # Если ячейка - (столбец:3, строка: над последней строкой) # не равна "2" (это заголовок второй колонки), # то значит в таблице есть данные для копирования # if df_avancor.loc[row_end - 1, 3] != '2': # Если ячейка - (столбец:2, строка: над последней строкой) # не равна "1" (это заголовок 1-ой колонки таблицы), # или текст в ячейки начинается с 'Оценочная' (предпоследняя таблица), # то значит в таблице есть данные для копирования cell = str(df_avancor.loc[row_end - 1, 2]) if cell != '1' and \ not cell.startswith('Оценочная'): # список всех номеров строк в таблице Аванкор rows_numbers = [x for x in range(data_row, row_end)] # Номера колонок в таблице Аванкор, за исключением пустых columns_numbers = fun.find_columns_numbers(df_avancor, collumn_max, max_number, data_row, data_col=3) # Копирование данных из таблицы Аванков в таблицу XBRL dcop.copy_data(ws, df_avancor, rows_numbers, columns_numbers, cell_start_row, cell_start_col) log.error( f'"{ws.title}" --> отсутствует "Идентификатор строки"') else: # в файле Аванкор Раздел пустой return False else: # в файле Аванкор Раздела отсутствует return False return True