mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-27 23:35:01 +00:00
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:
parent
62451aa3c9
commit
4bd90bf836
1 changed files with 17 additions and 1 deletions
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue