Skip to content

fix(sheet): strip a leading = from formulas - #4

Merged
4a4c53 merged 1 commit into
mainfrom
claude/fix-formula-leading-equals
Sep 7, 2026
Merged

4a4c53 merged 1 commit into
mainfrom
claude/fix-formula-leading-equals

Conversation

@4a4c53

@4a4c53 4a4c53 commented Sep 6, 2026 •

Copy link
Copy Markdown
Owner

Resumen

OOXML almacena las fórmulas sin el = que el usuario teclea en Excel, pero setCell({ formula: '=SUM(A1)' }) escribía <f>=SUM(A1)</f> tal cual y Excel pedía reparar el archivo. Es el error de uso más habitual de la librería.

Cambios

  • normalizeFormula() en src/sheet.ts elimina exactamente un = inicial, así que '=SUM(A1)' y 'SUM(A1)' son equivalentes y formula() devuelve siempre la forma almacenada. Solo se quita uno: '=A1=B1' queda como A1=B1.
  • Una fórmula que solo contiene = lanza TypeError en lugar de producir un <f> vacío en silencio. Una fórmula que no sea cadena también se rechaza.
  • '', null y undefined siguen significando "sin fórmula" (sin cambios de compatibilidad).
  • README: documentado en la sección de tipos soportados.
  • docs/bugs.md y docs/roadmap.md: punto marcado como hecho.

Verificación

Comprobación Resultado
pnpm test 175 tests, 0 fallos (5 nuevos en sheet.test.ts y roundtrip.test.ts)
pnpm test:coverage 99,65 % líneas · 93,92 % ramas · 100 % funciones
pnpm lint, pnpm typecheck, pnpm build limpios
XML generado con { formula: '=SUM(A1:B1)' } <f>SUM(A1:B1)</f>

OOXML stores formulas without the = that users type in Excel, but
setCell({ formula: '=SUM(A1)' }) wrote <f>=SUM(A1)</f> verbatim and
Excel asked to repair the file. It is the most common usage mistake.

normalizeFormula() now removes exactly one leading =, so '=SUM(A1)' and
'SUM(A1)' are equivalent and formula() always returns the stored form.
A formula that is only '=' throws a TypeError instead of silently
producing an empty <f>; empty, null and undefined still mean no formula.

Document the behaviour in the README and mark the item done in docs/.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@4a4c53
4a4c53 force-pushed the claude/fix-formula-leading-equals branch from 6494528 to d8e72ca Compare September 6, 2026 15:46
@4a4c53
4a4c53 merged commit 9f8d8f7 into main Sep 7, 2026
5 checks passed
@4a4c53
4a4c53 deleted the claude/fix-formula-leading-equals branch September 7, 2026 04:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants