Trabajo con Excel en Rust: bibliotecas para leer y escribir tablas

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: revisión de bibliotecas y ejemplos de código



El lenguaje Rust, conocido por su rendimiento y seguridad, ofrece excelentes capacidades para trabajar con hojas de cálculo de Excel. En este artículo, revisaremos las tres bibliotecas más populares: rust_xlsxwriter, calamine y xlsx. Aprenderá a leer, crear y modificar archivos en formato .xlsx, así como a aplicar funciones avanzadas de formato.



¿Por qué Rust para trabajar con Excel?

Rust es ideal para tareas de procesamiento de datos gracias a:

  • Cero costo de abstracciones: alta velocidad al trabajar con archivos grandes;
  • Gestión segura de memoria: eliminación de fugas y segmentation faults;
  • Multiplataforma: el código funciona en Windows, macOS y Linux;
  • Excelente integración con otros sistemas a través de FFI.


Biblioteca rust_xlsxwriter: creación de archivos Excel

rust_xlsxwriter es una biblioteca moderna para crear archivos Excel con amplias capacidades de formato. Soporta estilos, combinación de celdas, fórmulas y formato condicional.



Instalación

Agregue a Cargo.toml:

[dependencies]rust_xlsxwriter = "0.77"


Ejemplo: creación de un informe con formato

Crearemos un archivo con encabezados, datos y una fórmula:

use rust_xlsxwriter::*;

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

// Creamos estilos let header_format = Format::new() .set_bold() .set_font_color(Color::White) .set_background_color(Color::Blue) .set_border(FormatBorder::Thin);

let money_format = Format::new() .set_num_format("$#,##0.00") .set_border(FormatBorder::Thin);

// Encabezados worksheet.write_with_format(0, 0, "Producto", &header_format)?; worksheet.write_with_format(0, 1, "Cantidad", &header_format)?; worksheet.write_with_format(0, 2, "Precio", &header_format)?; worksheet.write_with_format(0, 3, "Total", &header_format)?;

// Datos let items = vec![ ("Portátil", 5, 1200.00), ("Ratón", 10, 25.50), ("Teclado", 7, 45.00), ];

for (i, (name, qty, price)) in items.iter().enumerate() { let row = i as u32 + 1; worksheet.write(row, 0, name)?; worksheet.write(row, 1, *qty)?; worksheet.write_with_format(row, 2, *price, &money_format)?; // Fórmula: cantidad * precio worksheet.write_formula(row, 3, &format!("B{}*C{}", row+1, row+1))?; }

// Ancho automático de columnas worksheet.set_column_width(0, 15)?; worksheet.set_column_width(1, 12)?; worksheet.set_column_width(2, 10)?; worksheet.set_column_width(3, 12)?;

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


Biblioteca calamine: lectura de archivos Excel

calamine es un analizador rápido para leer archivos Excel (.xlsx, .xls, .xlsb). No requiere tener Excel instalado y funciona completamente en memoria.



Instalación

[dependencies]calamine = "0.24"


Ejemplo: lectura de datos desde un archivo

Leamos el archivo creado anteriormente y mostremos los datos en la consola:

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

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

if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") { println!("Contenido del archivo {}:", path); println!("{:-<40}", "");

for row in range.rows() { for cell in row { match cell { calamine::Data::Stri

Recommendations