Render the scenario export workbook with a sheet per scenario 🟩

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-07-14 09:19:40 +00:00
parent 62451aa3c9
commit 4bd90bf836

View file

@ -8,8 +8,11 @@ dynamic number of scenario sheets is handled natively.
from __future__ import annotations
from io import BytesIO
from typing import Sequence
from openpyxl import Workbook
from domain.scenario_export.scenario_sheet import ExportSheet
@ -17,4 +20,17 @@ def render_workbook(sheets: Sequence[tuple[str, ExportSheet]]) -> bytes:
"""Render the scenario sheets into a single branded ``.xlsx`` as bytes. Each
tuple is a Scenario name and its shaped sheet; sheet order follows the input
(the requested ``scenario_ids`` order)."""
raise NotImplementedError
workbook = Workbook()
default = workbook.active
if default is not None:
workbook.remove(default)
for name, sheet in sheets:
worksheet = workbook.create_sheet(title=name)
worksheet.append(list(sheet.columns))
for row in sheet.rows:
worksheet.append([row.get(column, "") for column in sheet.columns])
buffer = BytesIO()
workbook.save(buffer)
return buffer.getvalue()