Tighten lab item routing and dedupe rows
This commit is contained in:
@@ -464,6 +464,7 @@ def _postprocess_workbook(
|
||||
workbook = load_workbook(path)
|
||||
try:
|
||||
_normalize_unmatched_columns(workbook)
|
||||
_deduplicate_regular_rows(workbook)
|
||||
summary_records = _collect_summary_records(workbook)
|
||||
_remove_not_found_rows(workbook)
|
||||
_remove_empty_unmatched_columns(workbook)
|
||||
@@ -555,6 +556,25 @@ def _remove_not_found_rows(workbook) -> None:
|
||||
sheet.delete_rows(row_index, 1)
|
||||
|
||||
|
||||
def _deduplicate_regular_rows(workbook) -> None:
|
||||
for sheet in workbook.worksheets:
|
||||
if sheet.title == SUMMARY_SHEET_NAME or sheet.max_row < 3:
|
||||
continue
|
||||
|
||||
seen = set()
|
||||
for row_index in range(sheet.max_row, 1, -1):
|
||||
values = tuple(
|
||||
_cell_text(sheet.cell(row_index, col).value)
|
||||
for col in range(1, sheet.max_column + 1)
|
||||
)
|
||||
if not any(values):
|
||||
continue
|
||||
if values in seen:
|
||||
sheet.delete_rows(row_index, 1)
|
||||
else:
|
||||
seen.add(values)
|
||||
|
||||
|
||||
def _collect_summary_records(workbook) -> list[dict[str, object]]:
|
||||
records: list[dict[str, object]] = []
|
||||
for sheet in workbook.worksheets:
|
||||
|
||||
Reference in New Issue
Block a user