_write_headers uses 25 columns, 2 rows, and "Doors" group label 🟩

This commit is contained in:
Daniel Roth 2026-05-15 15:36:57 +00:00
parent 4ba9d64c09
commit 65a40ad371

View file

@ -14,7 +14,7 @@ UPLOADED_FILE_ID: int = 7843
_HEADER_FILL = PatternFill("solid", fgColor="D9D9D9")
_FLOOR_FILL = PatternFill("solid", fgColor="BDD7EE")
_BOLD = Font(bold=True)
_TOTAL_COLS = 31 # AAE
_TOTAL_COLS = 25 # AY
@dataclass
@ -82,15 +82,18 @@ def _build_rows(plan: Plan) -> list[AuditRow]:
return rows
_BLANK_SEPARATOR_COLS = {5, 21}
def _write_headers(ws: Worksheet) -> None:
# Row 1: group labels (merged)
_merge_bold_fill(ws, 1, 1, 1, 4, "Room")
# E1 blank separator
# col 5: blank separator
_merge_bold_fill(ws, 1, 6, 1, 11, "Window Area")
_merge_bold_fill(ws, 1, 12, 1, 21, "Openings")
_merge_bold_fill(ws, 1, 22, 1, 26, "Trickle Vents")
# AA (27) blank separator
_merge_bold_fill(ws, 1, 28, 1, 31, "Door Undercuts")
_merge_bold_fill(ws, 1, 12, 1, 15, "Openings")
_merge_bold_fill(ws, 1, 16, 1, 20, "Trickle Vents")
# col 21: blank separator
_merge_bold_fill(ws, 1, 22, 1, 25, "Doors")
# Row 2: column labels
_header_cell(ws, 2, 1, "Room")
@ -104,29 +107,24 @@ def _write_headers(ws: Worksheet) -> None:
_header_cell(ws, 2, 10, "Area m²")
_header_cell(ws, 2, 11, "Opening Type")
_header_cell(ws, 2, 12, "No. of Openings")
for i, col in enumerate([13, 15, 17, 19]):
_merge_bold_fill(ws, 2, col, 2, col + 1, f"Opening {i + 1}")
_header_cell(ws, 2, 21, "Total Area m²")
_header_cell(ws, 2, 22, "Blocked")
_header_cell(ws, 2, 23, "Pictured")
_header_cell(ws, 2, 24, "Effective Area")
_header_cell(ws, 2, 25, "Count")
_header_cell(ws, 2, 26, "Total Effective Area")
_header_cell(ws, 2, 28, "Location")
_header_cell(ws, 2, 29, "Width mm")
_header_cell(ws, 2, 30, "Undercut mm")
_header_cell(ws, 2, 31, "Area mm²")
_header_cell(ws, 2, 13, "Opening Width m")
_header_cell(ws, 2, 14, "Opening Height m")
_header_cell(ws, 2, 15, "Total Area m²")
_header_cell(ws, 2, 16, "Blocked")
_header_cell(ws, 2, 17, "Pictured")
_header_cell(ws, 2, 18, "Effective Area")
_header_cell(ws, 2, 19, "Count")
_header_cell(ws, 2, 20, "Total Effective Area")
_header_cell(ws, 2, 22, "Location")
_header_cell(ws, 2, 23, "Width mm")
_header_cell(ws, 2, 24, "Undercut mm")
_header_cell(ws, 2, 25, "Area mm²")
# Row 3: Width/Height sub-headers under Opening 14
for col in [13, 15, 17, 19]:
_header_cell(ws, 3, col, "Width m")
_header_cell(ws, 3, col + 1, "Height m")
# Apply fill to all header cells in rows 13
for row in range(1, 4):
# Apply fill to header cells in rows 12, skipping blank separator columns
for row in range(1, 3):
for col in range(1, _TOTAL_COLS + 1):
cell = ws.cell(row=row, column=col)
cell.fill = _HEADER_FILL
if col not in _BLANK_SEPARATOR_COLS:
ws.cell(row=row, column=col).fill = _HEADER_FILL
def _write_data_rows(ws: Worksheet, rows: list[AuditRow]) -> None: