Скрытое в таблице не парсим
Правило: если строка или столбец в таблице скрыт, его данные не попадают в расписание — раньше скрытые столбцы пропускались только при поиске групп. - xlsx: у листа появился набор скрытых строк (Worksheet.hidden_rows); - расписание, недели: скрытые строки пропускаются; - аудитории и справочник ФИО: скрытые столбцы не читаются вовсе (убрана двухпроходная логика «сначала видимые, потом скрытые»); - тесты: билдер умеет скрытые строки, добавлены проверки «скрытое не парсится». Проверено на таблице: группы и всё расписание совпали байт в байт (скрытых строк нет), из аудиторий ушли только те, что лежат в скрытых столбцах (402, 405, 415), справочник ФИО стал короче на 2 скрытые записи, у 223 осталось описание из видимого столбца (20 мест, интерактивная панель). Тесты: 171.
This commit is contained in:
@@ -28,6 +28,7 @@ class SheetSpec:
|
||||
rows: list[list]
|
||||
merges: list[str] = field(default_factory=list)
|
||||
hidden_cols: list[tuple[int, int]] = field(default_factory=list) # 0-based, инклязивно
|
||||
hidden_rows: list[int] = field(default_factory=list) # 0-based
|
||||
|
||||
|
||||
def build_workbook(sheets: dict[str, SheetSpec]) -> bytes:
|
||||
@@ -83,7 +84,8 @@ def build_workbook(sheets: dict[str, SheetSpec]) -> bytes:
|
||||
t = f' t="{t_attr}"' if t_attr else ""
|
||||
cells.append(f'<c r="{col_letter(c)}{r}"{t}><v>{escape(str(v))}</v></c>')
|
||||
if cells:
|
||||
row_xml.append(f'<row r="{r}">{"".join(cells)}</row>')
|
||||
hidden = ' hidden="1"' if (r - 1) in spec.hidden_rows else ""
|
||||
row_xml.append(f'<row r="{r}"{hidden}>{"".join(cells)}</row>')
|
||||
|
||||
merges_xml = ""
|
||||
if spec.merges:
|
||||
|
||||
Reference in New Issue
Block a user