Trabajo con Excel en Rust: bibliotecas para lectura y escritura

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con Excel en Rust: resumen de bibliotecas y ejemplos de código

Rust es un lenguaje de programación de sistemas que se utiliza cada vez más para crear utilidades de alto rendimiento, incluyendo el procesamiento de datos tabulares. A diferencia de Python, donde pandas o openpyxl son el estándar, en Rust el ecosistema para trabajar con Excel es menos extenso, pero ofrece varias soluciones maduras y rápidas. En este artículo analizaremos tres bibliotecas principales: rust_xlsxwriter (escritura), calamine (lectura) y xlsx (universal). Aprenderá a leer, crear y modificar archivos XLSX usando Rust.



¿Por qué usar Rust para Excel?

Las principales ventajas de Rust al trabajar con tablas:

  • Velocidad — el código compilado procesa millones de filas más rápido que las alternativas interpretadas.
  • Seguridad — el estricto sistema de tipos y propiedad previene fugas de memoria y errores de acceso.
  • Multiplataforma — los binarios funcionan en Windows, Linux, macOS sin dependencias.
  • Tamaño reducido — el archivo ejecutable final puede tener menos de 5 MB.


1. Escritura de Excel: rust_xlsxwriter

rust_xlsxwriter es un fork de la popular biblioteca xlsxwriter, adaptado para Rust. Permite crear archivos XLSX desde cero, soporta formato, combinación de celdas, gráficos y estilos personalizados.



Instalación:

// Cargo.toml[dependencies]rust_xlsxwriter = "0.64"


Ejemplo: creación de un informe simple

use rust_xlsxwriter::*;

fn main() -> Result<(), XlsxError> { let mut workbook = Workbook::new(); let sheet = workbook.add_worksheet();

// Encabezado let header_format = Format::new() .set_bold() .set_font_color(Color::White) .set_background_color(Color::Blue);

sheet.write_string_with_format(0, 0, "Nombre", &header_format)?; sheet.write_string_with_format(0, 1, "Ventas", &header_format)?; sheet.write_string_with_format(0, 2, "Fecha", &header_format)?;

// Datos let data = vec![ ("Producto A", 1500, "2024-01-15"), ("Producto B", 2300, "2024-01-16"), ("Producto C", 800, "2024-01-17"), ];

for (row, (name, sales, date)) in data.iter().enumerate() { sheet.write_string(row as u32 + 1, 0, name)?; sheet.write_number(row as u32 + 1, 1, *sales as f64)?; sheet.write_string(row as u32 + 1, 2, date)?; }

// Autoancho de columnas sheet.set_column_width(0, 15)?; sheet.set_column_width(1, 12)?; sheet.set_column_width(2, 14)?;

workbook.save("report.xlsx")?; println!("Archivo report.xlsx creado"); Ok(())}


La biblioteca soporta todos los tipos principales: números, cadenas, fechas, fórmulas, hipervínculos. Para el formato están disponibles fuentes, relleno, bordes, alineación.



2. Lectura de Excel: calamine

calamine es un analizador rápido de archivos XLSX/XLS/XLSB/ODS. No utiliza dependencias externas y funciona solo para lectura. Es ideal para extraer datos de tablas grandes.



Instalación:

[dependencies]calamine = "0.24"


Ejemplo: lectura de todos los datos de una hoja

use calamine::{open_workbook, Reader, Xlsx};

fn main() -> Result<(), Box> { let path = "report.xlsx"; let mut workbook: Xlsx<_> = open_workbook(path)?;

// Obtener la primera hoja if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") { for row in range.rows() { for cell in row { // Mostrar el valor de la celda como cadena print!("{} | ", cell.to_string()); } println!();

Recommendations