IronCalc: Motor de hoja de cálculo moderno en Rust
Engine de spreadsheet open source con soporte WASM, lectura/escritura XLSX y despliegue vía Docker
Vídeo tutorial en YouTube
Mira el vídeo completo sobre cómo instalar y usar IronCalc: Motor de hoja de cálculo moderno en Rust en el canal GENBYTE:
¿Qué es IronCalc: Motor de hoja de cálculo moderno en Rust?
IronCalc es un motor de hoja de cálculo moderno, en desarrollo activo, programado en Rust. Proporciona el núcleo del ecosistema IronCalc e incluye lector y escritor de archivos XLSX. Está diseñado para ser utilizado desde múltiples lenguajes como Python, JavaScript (WebAssembly), Node.js y potencialmente R, Julia o Go. El proyecto ofrece diferentes interfaces: terminal, aplicación de escritorio e integración en aplicaciones web propias. Se distribuye bajo licencias duales MIT y Apache-2.0.
Características principales
Motor de cálculo en Rust
Núcleo de spreadsheet implementado en Rust con evaluación de fórmulas, gestión de hojas y modelo de datos propio.
Lectura y escritura XLSX
Soporte nativo para importar y exportar archivos Excel (.xlsx) mediante el crate xlsx integrado.
Bindings WebAssembly
Paquetes npm @ironcalc/wasm y @ironcalc/wasm-xlsx para usar el motor directamente en navegador o Node.js.
Multi-lenguaje
API accesible desde Python, JavaScript, Node.js y con planes para R, Julia y Go.
Múltiples interfaces
Arquitectura preparada para skins en terminal, aplicación de escritorio (Tauri/Electron) y aplicaciones web React.
Despliegue con Docker
Imágenes multi-arquitectura publicadas en ghcr.io con docker-compose listo para producción (frontend + API).
Licencia dual permisiva
Disponible bajo MIT o Apache-2.0 a elección del usuario, compatible con integración en SaaS propietario.
Datos de localización CLDR
Incluye datos de locale derivados de Unicode CLDR bajo licencia Unicode v3 para soporte internacional.
Requisitos del sistema
- Docker y Docker Compose para despliegue en contenedores
- Rust toolchain (stable) para compilación nativa
- Node.js 24 y pnpm 9.15+ para construir frontend y bindings WASM
- make y bash para scripts de construcción y pruebas
- Arquitectura compatible con linux/amd64 y linux/arm64 (imágenes multiarch)
Instalación con Docker Compose
Clonar el repositorio
Obtener el código fuente desde GitHub.
cd IronCalc
Levantar la pila completa con Docker Compose
Construye las imágenes (server y caddy) y expone la aplicación en el puerto 2080.
Compilación nativa (opcional)
Compilar el motor y herramientas en modo release sin contenedores.
Ejecutar pruebas y linters
Ejecuta suite completa: unit tests, integration tests, lint y formato.
Acceder al proyecto
Aplicación web (frontend + API)
Acceder a http://localhost:2080 tras levantar docker compose. Caddy sirve el frontend estático y hace reverse proxy a /api hacia el servidor Rust en puerto 8000 interno.
API del servidor (directa)
El servidor Rocket escucha en 0.0.0.0:8000 dentro del contenedor; accesible vía localhost:2080/api gracias al proxy de Caddy.
Vista previa online
Versión de prueba ejecutándose completamente en el navegador: https://app.ironcalc.com
Casos de uso
- Integración de motor de spreadsheet en aplicaciones SaaS propias sin depender de licencias propietarias
- Procesamiento automatizado de archivos XLSX en pipelines de datos (lectura, cálculo, escritura)
- Desarrollo de herramientas de análisis de datos con frontend web personalizado sobre motor Rust
- Aplicaciones de escritorio nativas con capacidades de hoja de cálculo (vía Tauri/Electron + WASM)
- Scripting y automatización en Python/Node.js usando bindings oficiales
- Entornos educativos o de investigación que requieren motor de fórmulas auditable y extensible
Configuración avanzada
Generar documentación local
Compila y sirve la documentación de la crate ironcalc en http://0.0.0.0:8000/ironcalc/.
cd target/doc
python -m http.server
Ejecutar cobertura de código
Genera reporte HTML de cobertura y lo sirve localmente.
cd target/coverage/html
python -m http.server
Convertir XLSX a formato interno .ic
Utiliza el binario xlsx_2_icalc (compilado en xlsx/target/debug/) para transformar plantillas y documentos de prueba al formato nativo.
Uso como dependencia Rust
Añadir al Cargo.toml y usar el modelo programáticamente (ejemplo simplificado).
ironcalc = { git = "https://github.com/ironcalc/IronCalc", version = "0.8"}
// En main.rs
use ironcalc::{base::{expressions::utils::number_to_column, Model}, export::save_to_xlsx};
let mut model = Model::new_empty("file.xlsx", "en", "UTC", "en")?;
model.set_user_input(0, 1, 1, "42");
model.evaluate();
save_to_xlsx(&model, "out.xlsx")?;
Gestión y mantenimiento
Actualizar imágenes Docker
Descargar últimas versiones de ghcr.io/ironcalc/ironcalc-server y ghcr.io/ironcalc/ironcalc-caddy.
docker compose up -d
Reconstruir desde fuente
Forzar reconstrucción completa de las imágenes tras cambios en el código.
docker compose up -d
Ver logs del servidor y proxy
Inspeccionar salida de ambos contenedores (server y caddy).
# o
docker compose logs -f caddy
Limpiar recursos Docker
Eliminar contenedores, redes y volúmenes asociados al proyecto.
Stack técnico
- Rust (motor principal, servidor Rocket, CLI)
- WebAssembly (wasm32-unknown-unknown via wasm-pack)
- JavaScript/TypeScript (frontend React, bindings npm)
- Node.js 24 + pnpm 9.15 (build frontend y WASM)
- Caddy 2 (reverse proxy, servir estáticos, TLS automático)
- Docker multi-stage (builder Rust/Node + runtime Debian/Caddy)
- SQLite (base de datos embebida del servidor, archivo ironcalc.sqlite)
- Unicode CLDR (datos de localización)
Referencias oficiales
- Repositorio oficial GitHub: https://github.com/ironcalc/IronCalc
- Sitio web del proyecto: https://www.ironcalc.com
- Documentación API (docs.rs): https://docs.rs/ironcalc/latest/ironcalc/
- Vista previa en navegador: https://app.ironcalc.com
- Comunidad Discord: https://discord.gg/zZYWfh3RHJ
- Licencia MIT: https://github.com/ironcalc/IronCalc/blob/main/LICENSE-MIT
- Licencia Apache-2.0: https://github.com/ironcalc/IronCalc/blob/main/LICENSE-Apache-2.0
- Cobertura de código (Codecov): https://codecov.io/gh/ironcalc/IronCalc
- Imágenes Docker (ghcr.io): https://github.com/ironcalc/IronCalc/pkgs/container/ironcalc-server
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
