Trabalhando com Excel em Rust: visão geral das bibliotecas e exemplos de código
Rust é uma linguagem de programação de sistema que está sendo cada vez mais usada para criar utilitários de alto desempenho, inclusive para processamento de dados tabulares. Ao contrário do Python, onde pandas ou openpyxl são o padrão, o ecossistema Rust para trabalhar com Excel é menos extenso, mas oferece várias soluções maduras e rápidas. Neste artigo, abordaremos três bibliotecas principais: rust_xlsxwriter (escrita), calamine (leitura) e xlsx (universal). Você aprenderá a ler, criar e modificar arquivos XLSX usando Rust.
Por que usar Rust para Excel?
Principais vantagens do Rust ao trabalhar com planilhas:
- Velocidade — código compilado processa milhões de linhas mais rápido que equivalentes interpretados.
- Segurança — sistema de tipos e propriedade rigoroso previne vazamentos de memória e erros de acesso.
- Multiplataforma — binários funcionam em Windows, Linux, macOS sem dependências.
- Tamanho reduzido — o arquivo executável final pode ter menos de 5 MB.
1. Escrita em Excel: rust_xlsxwriter
rust_xlsxwriter é um fork da popular biblioteca xlsxwriter, adaptado para Rust. Ela permite criar arquivos XLSX do zero, suporta formatação, mesclagem de células, gráficos e estilos personalizados.
Instalação:
// Cargo.toml[dependencies]rust_xlsxwriter = "0.64"Exemplo: criando um relatório simples
use rust_xlsxwriter::*;
fn main() -> Result<(), XlsxError> { let mut workbook = Workbook::new(); let sheet = workbook.add_worksheet();
// Cabeçalho let header_format = Format::new() .set_bold() .set_font_color(Color::White) .set_background_color(Color::Blue);
sheet.write_string_with_format(0, 0, "Nome", &header_format)?; sheet.write_string_with_format(0, 1, "Vendas", &header_format)?; sheet.write_string_with_format(0, 2, "Data", &header_format)?;
// Dados let data = vec![ ("Produto A", 1500, "2024-01-15"), ("Produto B", 2300, "2024-01-16"), ("Produto 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)?; }
// Largura automática das colunas sheet.set_column_width(0, 15)?; sheet.set_column_width(1, 12)?; sheet.set_column_width(2, 14)?;
workbook.save("report.xlsx")?; println!("Arquivo report.xlsx criado"); Ok(())}A biblioteca suporta todos os tipos principais: números, strings, datas, fórmulas, hiperlinks. Para formatação, estão disponíveis fontes, preenchimento, bordas e alinhamento.
2. Leitura de Excel: calamine
calamine é um analisador rápido de arquivos XLSX/XLS/XLSB/ODS. Ele não usa dependências externas e funciona apenas para leitura. Ideal para extrair dados de grandes planilhas.
Instalação:
[dependencies]calamine = "0.24"Exemplo: lendo todos os dados de uma planilha
use calamine::{open_workbook, Reader, Xlsx};
fn main() -> Result<(), Box> { let path = "report.xlsx"; let mut workbook: Xlsx<_> = open_workbook(path)?;
// Obtém a primeira planilha if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") { for row in range.rows() { for cell in row { // Exibe o valor da célula como string print!("{} | ", cell.to_string()); } println!(); Também na biblioteca
ExcelJS para JavaScript (Node.js): guia completo com exemplos práticos
Jetpack Compose para Kotlin: guia completo com exemplos
Envio de SMS em PHP: bibliotecas de API do sms.ru e outros serviços
Planejador de Tarefas em C++: Criação e Gerenciamento de Tarefas
Autorização e Autenticação em Java: Spring Security e JWT