def _assert_sheet_content(sheet_name: str, actual_worksheet: Sheet, expected_worksheet: Sheet): assert (actual_worksheet.nrows == expected_worksheet.nrows ), f"Different number of rows in {sheet_name} sheet" assert (actual_worksheet.ncols == expected_worksheet.ncols ), f"Different number of columns in {sheet_name} sheet" for row_index, actual_row in enumerate(actual_worksheet.get_rows()): expected_row = expected_worksheet.row(row_index) for cell_index, actual_cell in enumerate(actual_row): expected_cell = expected_row[cell_index] assert ( actual_cell.ctype == expected_cell.ctype ), f"Different cell type in row {row_index}, col {cell_index} in {sheet_name} sheet" assert ( actual_cell.value == expected_cell.value ), f"Different cell content in row {row_index}, col {cell_index} in {sheet_name} sheet"
def get_dividend_rows(sheet: Sheet) -> List[Dict[str, Any]]: start_row_num, end_row_num = get_boundaries(sheet) header_names: Tuple[str, ...] = get_headers(sheet) # headers: Dict[str, int] = {header_names[idx]: idx for idx in range(0, len(header_names))} dividend_rows: List[Dict[str, Any]] = [] row_num = 1 for row_idx in range(start_row_num, end_row_num): row: Dict[str, Any] = dict( zip(header_names, map(lambda cell: cell.value, sheet.row(row_idx)))) row['index'] = row_num row_num += 1 # print(row) if row['narration'].find('ACH') >= 0 or row['narration'].find( 'DIV') >= 0: dividend_rows.append(row) return dividend_rows
def get_headers(sheet: Sheet): row_idx: int = 0 for row in sheet.get_rows(): is_header_row: bool = True if type(row[0].value) == str and row[0].value.startswith('*'): for cell in row[1:]: if type(cell.value) == str and len(cell.value) == 0: is_header_row = is_header_row and True else: is_header_row = False else: is_header_row = False row_idx += 1 if is_header_row: break header_names: Tuple[str, ...] = tuple( map( lambda cell: cell.value.replace('.', '').replace('/', '_').replace( ' ', '_').lower(), sheet.row(row_idx))) return header_names