> ## Documentation Index
> Fetch the complete documentation index at: https://docs.doconda.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ¿Cómo editar un Excel con IA sin perder las fórmulas?

> Sube el .xlsx y pide el cambio con operation edit: Doconda solo toca lo que pides y los cambios van con fórmulas reales, no números copiados.

Para editar un Excel con IA sin perder las fórmulas, súbelo y pide el cambio en una frase con `operation: "edit"`.
Doconda cambia solo lo que pides, deja el resto de la hoja idéntico y escribe los cambios con fórmulas reales, no con
números ya calculados.

## Pasos

1. Guarda tu API key en `DOCONDA_API_KEY` e instala el SDK (`pip install doconda` o `npm install @doconda/sdk`).
2. Sube el Excel con `files.upload`.
3. Pide el cambio, mira el informe y descarga el `.xlsx`.

<CodeGroup>
  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  from pathlib import Path
  from doconda import Doconda

  doconda = Doconda()  # lee la key de DOCONDA_API_KEY
  file = doconda.files.upload("ventas.xlsx")
  edited = doconda.documents.create(
      operation="edit",
      file=file["id"],
      prompt="Añade una columna Margen en la hoja Ventas: ingresos menos costes, y un total al final",
  )
  report = doconda.documents.report(edited["id"])
  for issue in report["issues"]:
      print(issue["code"], issue["message"], issue["location"])
  Path("ventas-editado.xlsx").write_bytes(doconda.documents.download(edited["id"], "xlsx"))
  ```

  ```ts TypeScript theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  import { readFile, writeFile } from "node:fs/promises"
  import { Doconda } from "@doconda/sdk"

  const doconda = new Doconda()
  const file = await doconda.files.upload(await readFile("ventas.xlsx"), "ventas.xlsx")
  const edited = await doconda.documents.create({
    operation: "edit",
    file: file.id,
    prompt: "Añade una columna Margen en la hoja Ventas: ingresos menos costes, y un total al final",
  })
  const report = await doconda.documents.report(edited.id)
  for (const issue of report.issues) console.log(issue.code, issue.message, issue.location)
  await writeFile("ventas-editado.xlsx", await doconda.documents.download(edited.id, "xlsx"))
  ```
</CodeGroup>

## Qué devuelve

* El mismo Excel con el cambio hecho con fórmulas, y su PDF.
* Un informe: el resultado se revisa como en [Revisar](/guides/review). Las fórmulas con error (`#REF!`,
  `#DIV/0!`…), las referencias rotas o un número escrito a mano entre fórmulas iguales salen en `issues`, con la hoja
  y las celdas en `location`.
* `status`: `ready`, `ready_with_warnings`, `needs_review` o `failed`. Si la petición no se puede convertir en
  cambios, `failed` con `edit_not_understood`, sin cobrar.

## Límites

* Acepta `.xls`: el resultado sale en `.xlsx`.
* En `quality: "fast"` y con `.xls`, cada cambio llega como evento `edit.operation_applied` con el antes y el después,
  y queda en el informe (`edits`).
* Máximo 50 páginas.

## Preguntas frecuentes

<AccordionGroup>
  <Accordion title="¿Por qué no dejar que el modelo reescriba la hoja?">
    Un modelo suele devolver valores ya calculados: la hoja se ve bien, pero deja de recalcularse. Con `edit` las
    fórmulas que ya tienes se quedan y lo nuevo va con fórmulas.
  </Accordion>

  <Accordion title="¿Puedo solo comprobar si un Excel tiene errores?">
    Sí, con `operation: "review"`, sin IA. Detecta fórmulas con error, referencias rotas, números guardados como texto
    y datos ocultos, entre otros.
  </Accordion>

  <Accordion title="¿Y crear un Excel nuevo con fórmulas?">
    Con `format: "xlsx"` y un `prompt`. Ver [Excel con fórmulas desde un LLM](/solutions/excel-formulas-llm).
  </Accordion>
</AccordionGroup>

## Sigue leyendo

* [Editar](/guides/edit) y [Revisar](/guides/review).
* [Quickstart](/quickstart).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.