# Xlsx > Crea, edita, analiza o convierte hojas Excel (.xlsx, .xlsm, .xltx) cuando el libro es el entregable principal: fórmulas, formato, modelos financieros, libros con varias hojas y limpieza tabular a Excel. También sirve para .csv/.tsv. Fuente: https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/xlsx Markdown: https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/xlsx.md Repositorio: https://github.com/K-Dense-AI/scientific-agent-skills Autor: K-Dense-AI Licencia: Proprietary. LICENSE.txt has complete terms Actualizado: hace 28 días Coste de contexto: 105 tok instalada, 2.1k tok al activarse, 276.2k tok con todos los archivos del bundle Bundle: 53 archivos, 1.1 MB Permisos que pide: read write edit bash grep glob ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add K-Dense-AI/scientific-agent-skills --skill xlsx --agent claude-code # Cursor npx -y skills add K-Dense-AI/scientific-agent-skills --skill xlsx --agent cursor # Codex npx -y skills add K-Dense-AI/scientific-agent-skills --skill xlsx --agent codex # Gemini CLI npx -y skills add K-Dense-AI/scientific-agent-skills --skill xlsx --agent gemini # Windsurf npx -y skills add K-Dense-AI/scientific-agent-skills --skill xlsx --agent windsurf # Cline npx -y skills add K-Dense-AI/scientific-agent-skills --skill xlsx --agent cline ``` ## Qué hace - Reparte el trabajo por tarea: `openpyxl` para crear/editar con fórmulas y formato, `pandas` para datos en bloque, `markitdown` para un vistazo rápido a una hoja - Exige recalcular con `scripts/recalc.py` siempre que el archivo tenga fórmulas, porque openpyxl las escribe sin valores en caché - Prohíbe `XLOOKUP`, `XMATCH`, `SORT`, `FILTER`, `UNIQUE` y `SEQUENCE` porque LibreOffice no puede evaluarlas, y exige el prefijo `_xlfn.` en seis funciones posteriores a 2007 - Avisa de que un recálculo limpio prueba que las fórmulas evalúan, no que sean correctas - En modelos financieros fija un código de color: azul para entradas fijas, negro para fórmulas, verde para enlaces a otra hoja, rojo a otro archivo, amarillo para supuestos clave ## Cuándo usarla - Crear, editar, analizar o convertir hojas de cálculo Excel (.xlsx, .xlsm, .xltx) donde el libro es el entregable principal - Trabajar con fórmulas, formato, modelos financieros o libros con varias hojas - Limpiar datos tabulares en .csv/.tsv cuando el usuario quiere el resultado en formato de hoja de cálculo ## Cuándo no - Cuando el entregable principal es un documento de Word, un informe HTML, un script de Python suelto, un pipeline de base de datos o trabajo con la API de Google Sheets ## Qué la activa - "Arregla las fórmulas de este Excel" - "Crea un modelo financiero con fórmulas reales" - "Convierte este CSV en una hoja de cálculo con formato profesional" - "Añade una columna calculada con SUMIFS" ## Antes de instalar - Necesita Python 3.8+, LibreOffice (`soffice` en el PATH) y gcc solo si los sockets Unix están restringidos; openpyxl, pandas y markitdown vienen preinstalados. - Necesita en el PATH: python - makes network requests ## Archivos - LICENSE.txt — 1 KB - SKILL.md — 8 KB - scripts/office/helpers/__init__.py — 3 KB - scripts/office/helpers/pptx_chart.py — 6 KB - scripts/office/helpers/pptx_slide.py — 2 KB - scripts/office/helpers/pptx_theme.py — 3 KB - scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd — 73 KB - scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd — 7 KB - scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd — 50 KB - scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd — 624 B - scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd — 148 KB - scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd — 1 KB - scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd — 9 KB - scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd — 14 KB - scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd — 82 KB - scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd — 1 KB - scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd — 7 KB - scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd — 6 KB - scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd — 1 KB - scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd — 880 B - scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd — 3 KB - scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd — 3 KB - scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd — 7 KB - scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd — 23 KB - scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd — 1 KB - scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd — 237 KB - scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd — 26 KB - scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd — 25 KB - scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd — 535 B - scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd — 6 KB - scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd — 4 KB - scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd — 167 KB - scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd — 5 KB - scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd — 2 KB - scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd — 2 KB - scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd — 3 KB - scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd — 1 KB - scripts/office/schemas/mce/mc.xsd — 3 KB - scripts/office/schemas/microsoft/wml-2010.xsd — 26 KB - scripts/office/schemas/microsoft/wml-2012.xsd — 4 KB - scripts/office/schemas/microsoft/wml-2018.xsd — 901 B - scripts/office/schemas/microsoft/wml-cex-2018.xsd — 2 KB - scripts/office/schemas/microsoft/wml-cid-2016.xsd — 1002 B - scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd — 600 B - scripts/office/schemas/microsoft/wml-symex-2015.xsd — 745 B - scripts/office/soffice.py — 8 KB - scripts/office/validate.py — 6 KB - scripts/office/validators/__init__.py — 336 B - scripts/office/validators/base.py — 33 KB - scripts/office/validators/docx.py — 17 KB - scripts/office/validators/pptx.py — 16 KB - scripts/office/validators/redlining.py — 11 KB - scripts/recalc.py — 10 KB ## SKILL.md Reproducido tal cual desde K-Dense-AI/scientific-agent-skills bajo Proprietary. LICENSE.txt has complete terms. Esta sección es el documento original y está en inglés. # XLSX creation, editing, and analysis | Task | Approach | |---|---| | **Create** or **edit** with formulas/formatting | `openpyxl` — see gotchas below | | **Bulk data** in or out | `pandas` (`read_excel`, `to_excel`) | | **Quick look** at a sheet | `markitdown file.xlsx` — `## SheetName` per sheet; reads `.xlsm` too. No cell coordinates, so don't plan edits from it | | **Read** a model (formulas *and* values) | two `load_workbook` passes — see gotchas | > `openpyxl`, `pandas`, and `markitdown` are preinstalled — do not run `uv pip install` first; write the script and import directly. Only if an import fails (or the `markitdown` command is missing): `uv pip install` the missing package. > Script paths below are relative to this skill's directory. ## Requirements for every output - **Professional font** (Arial, Times New Roman) throughout, unless the user says otherwise. - **Zero formula errors.** Never ship while `recalc.py` reports `errors_found`. If you think an error predates you, prove it: load the *original* with `data_only=True` and look at that cell. An error you introduced looks exactly like one you inherited. - **Use formulas, never hardcoded results.** Write `sheet['B10'] = '=SUM(B2:B9)'`, not the Python-computed total. The sheet must recalculate when its inputs change. - **Follow the user's spec literally.** Exact tab names, exact column headers, and the formula they spelled out. A redesign that computes something else fails, however elegant. - **Document every assumption and hardcoded number** where the reader will see it — a cell comment, or an adjacent cell at a table's end. Cite a real source when one exists (`Source: Company 10-K, FY2024, Page 45, Revenue Note, [SEC EDGAR URL]`); when the number came from the user, say so plainly. - **A workbook *you create* for someone to fill in** needs a short legend naming which cells to edit, and one example row of realistic values showing the expected format. Never add such a row to a file you were asked to edit. - **Editing an existing file: match its conventions exactly.** They override every guideline here. Find its designated input cells first — a distinct font color, fill, or shading marks them — write only there, and leave every existing formula untouched. ## Recalculate (mandatory whenever the file contains formulas) openpyxl writes formulas as strings with **no cached values**. Until you recalculate, every formula cell reads back as `None` to anything reading cached values — `pandas`, `load_workbook(data_only=True)`, and most previewers. ```bash python scripts/recalc.py output.xlsx [timeout_seconds] # default 30 ``` LibreOffice computes every formula, the file is **rewritten in place**, and you get JSON: `status` (`success` | `errors_found`), `total_formulas`, `total_errors`, and an `error_summary` naming up to 100 cells per error type (`locations_truncated` says how many it withheld — trust `total_errors`, not the length of the list). Fix what it names and run it again. **JSON with an `error` key instead of a `status` means nothing was recalculated**, and only that case exits non-zero — `errors_found` exits 0, so never treat a clean exit as a clean workbook. **A green recalc proves your formulas *evaluate*, not that they are *right*.** An off-by-one range or a reference to the wrong row yields a clean, error-free file with wrong numbers. Write 2–3 formulas first and check they pull the values you expect, before building out a grid. **A workbook that links to another file loses those links** if you re-save it with openpyxl and then recalculate. Such a formula reads `='[1]Returns Analysis'!$B$2` — the `[1]` is an index into the workbook's external-reference list, naming a *separate file on disk*, not a sheet. That file is rarely present here, so the cell's cached value is the only thing holding its data. openpyxl strips that value on save; LibreOffice then has to resolve the reference for real, fails, writes `#NAME?`, and deletes every link. `recalc.py` refuses to run in that state — copy those cells' values out of the original before you save over them (`--force` overrides, and accepts the loss). ## Choosing formulas that survive verification LibreOffice implements fewer functions than Excel, and one it cannot evaluate becomes a literal `#NAME?` baked into the file you deliver. - **Prefer Excel-2007-era functions** — `SUMIFS`, `INDEX`, `MATCH`, `IFERROR`, `SUMPRODUCT` — which need no prefix. - **Six post-2007 functions work, but only with an `_xlfn.` prefix**, because openpyxl writes your formula into the XML verbatim and Excel stores post-2007 names prefixed (its UI hides the prefix): `_xlfn.TEXTJOIN`, `_xlfn.CONCAT`, `_xlfn.IFS`, `_xlfn.SWITCH`, `_xlfn.MAXIFS`, `_xlfn.MINIFS`. Written bare, each yields `#NAME?`. - **Never use `XLOOKUP`, `XMATCH`, `SORT`, `FILTER`, `UNIQUE`, or `SEQUENCE`.** The runtime's LibreOffice cannot evaluate them under *any* prefix. Newer builds do evaluate them, but they are spilling array functions and an openpyxl-written file has no spill metadata, so only the top-left cell of the range gets a value — and `recalc.py` reports `total_errors: 0` on the truncated result. Use `INDEX`/`MATCH` for lookups, and sort, filter, and de-duplicate in Python before writing the cells. - A formula LibreOffice could not parse is written back **lowercased** — a quick tell beside a `#NAME?`. ## openpyxl gotchas - **Reading a model takes two loads.** `data_only=True` yields cached values with the formulas gone; the default yields formula strings with no values. One pass cannot give you both. - **`data_only=True` is destructive if you save.** That workbook has no formulas left, so saving replaces every one with a literal — permanently. - **`data_only=True` on a file openpyxl just wrote returns `None` everywhere** — run `recalc.py` first. (A formula whose result is `""` also reads back as `None`.) - **Merged cells: write the top-left anchor only.** Every other cell in the range is a `MergedCell` whose `.value` is read-only. - **`.xlsm` loses its macros unless you pass `keep_vba=True`** to `load_workbook`. - **A sheet name containing a space must be quoted** in a cross-sheet reference: `='Assumptions Inputs'!$B$5`. Unquoted, it evaluates to `#VALUE!`. ## Financial models Unless the user says otherwise, or the existing file already does something else. **Color:** blue text (`0,0,255`) for hardcoded inputs and scenario levers · black for formulas · green (`0,128,0`) for links to another sheet · red (`255,0,0`) for links to another file · yellow fill (`255,255,0`) for key assumptions and cells the user should fill in. **Numbers:** currency `$#,##0`, with the unit named in the header (`Revenue ($mm)`) · zeros render as `-`, including in percentages (`$#,##0;($#,##0);-`) · negatives in parentheses · percentages `0.0%`, **stored as fractions** (`0.15` renders `15.0%`; storing `15` renders `1500.0%`) · valuation multiples `0.0x` · years as text (`"2024"`, never `2,024`). **Structure:** every assumption in its own labeled cell, referenced by the formulas that use it (`=B5*(1+$B$6)`, never `=B5*1.05`) · formulas consistent across every projection period, since a lone edited cell mid-row is the commonest silent error · guard denominators that can be zero. ## Dependencies `openpyxl`, `pandas`, `markitdown` (pip, preinstalled — install only if an import fails or the command is missing) · LibreOffice (`soffice`, auto-configured for sandboxed environments via `scripts/office/soffice.py`) --- *This skill is created and maintained by [Anthropic](https://github.com/anthropics/skills/tree/main/skills/xlsx). Vendored here unmodified except for frontmatter metadata; see LICENSE.txt for terms.* ## Dónde encaja - Categoría: [Documentos](https://skillsagentes.com/categorias/documentos.md) — Lee, escribe y transforma archivos PDF, DOCX, XLSX y PPTX. - Creador: [K-Dense-AI](https://skillsagentes.com/creators/k-dense-ai.md) — 163 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Citation Management](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/citation-management.md): Gestión integral de citas académicas: busca en OpenAlex, PubMed y Google Scholar, extrae metadatos precisos, valida citas y genera entradas BibTeX correctamente formateadas. - [Scientific Slides](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/scientific-slides.md): Crea decks de diapositivas y presentaciones para charlas de investigación: PowerPoint, presentaciones de conferencia, seminarios, defensas de tesis. Da estructura, plantillas, guía de tiempos y validación visual. - [Literature Review](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/literature-review.md): Realiza revisiones bibliográficas sistemáticas y completas usando varias bases académicas (PubMed, arXiv, bioRxiv, Semantic Scholar). Genera markdown y PDF con citas verificadas en varios estilos (APA, Nature, Vancouver). - [Infographics](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/infographics.md): Crea infografías profesionales con Nano Banana Pro AI y refinamiento iterativo inteligente. Usa Gemini 3.6 Flash para revisar la calidad e integra investigación con Perplexity Sonar. Soporta 10 tipos, 8 estilos y paletas para daltonismo. - [Latex Posters](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/latex-posters.md): Crea pósteres de investigación profesionales en LaTeX con beamerposter, tikzposter o baposter, para conferencias y comunicación científica: layout, colores, columnas múltiples e integración de figuras. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)