Trabalhando com Excel em Rust: bibliotecas para leitura e escrita

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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!();

Recommendations