Beispiel #1
0
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"
Beispiel #2
0
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
Beispiel #3
0
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