Spaces:
Sleeping
Sleeping
Download server/formula_utils.py from huzzle-labs/spreadsheet: direct link, hf CLI and curl.
- Browser
- Download file 1.28 kB
-
https://huggingface.co/spaces/huzzle-labs/spreadsheet/resolve/main/server/formula_utils.py
- Command line
-
hf download hf://spaces/huzzle-labs/spreadsheet/server/formula_utils.py
-
curl -L -o formula_utils.py https://huggingface.co/spaces/huzzle-labs/spreadsheet/resolve/main/server/formula_utils.py
1.28 kB
| """Formula utilities — Excel-compatible formula evaluation using the formulas library.""" | |
| from __future__ import annotations | |
| from typing import Any, Optional | |
| import openpyxl | |
| def evaluate_formula(wb: openpyxl.Workbook, sheet_name: str, cell_ref: str) -> Optional[Any]: | |
| """Evaluate an Excel formula in-memory using the formulas library. | |
| Falls back to openpyxl data_only reload if formulas library fails. | |
| Returns the computed value or None on failure. | |
| """ | |
| try: | |
| import formulas | |
| except ImportError: | |
| return _fallback_evaluate(wb, sheet_name, cell_ref) | |
| try: | |
| xl_model = formulas.ExcelModel().loads(wb.path).finish() | |
| solution = xl_model.calculate() | |
| key = f"'{sheet_name}'!{cell_ref.upper()}" | |
| return solution.get(key) | |
| except Exception: | |
| return _fallback_evaluate(wb, sheet_name, cell_ref) | |
| def _fallback_evaluate(wb: openpyxl.Workbook, sheet_name: str, cell_ref: str) -> Optional[Any]: | |
| """Fallback: reload workbook with data_only=True to get cached values.""" | |
| if not wb.path: | |
| return None | |
| try: | |
| wb_data = openpyxl.load_workbook(wb.path, data_only=True) | |
| ws = wb_data[sheet_name] | |
| return ws[cell_ref].value | |
| except Exception: | |
| return None | |