Biblioteca calamine para Rust: leitura de arquivos Excel
1. O que é e para que serve
calamine é uma biblioteca de alto desempenho para leitura de arquivos Excel (formatos .xlsx, .xls, .xlsb, .ods) na linguagem Rust. Escrita em Rust puro, sem dependências externas, ela é a escolha ideal para projetos que exigem velocidade, segurança de memória e compatibilidade entre plataformas. Diferente de muitas outras bibliotecas, a calamine não requer a instalação do Microsoft Office ou do Java Runtime Environment.
O principal objetivo da calamine é extrair dados de planilhas eletrônicas. Ela suporta leitura de células, linhas, colunas, abas, além de trabalhar com fórmulas, datas, números e textos. A biblioteca é especialmente útil para automatizar o processamento de relatórios, importar dados do Excel para bancos de dados, analisar grandes tabelas e criar pipelines de processamento de dados (ETL).
A calamine foi projetada com foco em desempenho: utiliza leitura em fluxo (streaming) e carregamento preguiçoso (lazy loading) de dados, permitindo processar arquivos de centenas de megabytes sem consumir muita memória RAM. A biblioteca é ativamente mantida pela comunidade Rust e usada em projetos conhecidos como rust-xlsxwriter e tauri.
2. Instalação
Para adicionar a calamine ao seu projeto Rust, execute o comando no terminal:
cargo add calamine
Ou adicione manualmente a dependência no arquivo Cargo.toml:
[dependencies]
calamine = "0.24"
Depois, execute cargo build para baixar e compilar a biblioteca. Certifique-se de ter o Rust instalado (recomenda-se a versão 1.65+).
3. Primeiros passos
Exemplo mínimo de leitura de dados de um arquivo Excel:
use calamine::{open_workbook, Reader, Xlsx};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Abre o arquivo
let mut workbook: Xlsx<_> = open_workbook("dados.xlsx")?;
// Obtém a primeira aba
let sheet_name = workbook.sheet_names()[0].clone();
let range = workbook.worksheet_range(&sheet_name)?;
// Exibe o conteúdo
for row in range.rows() {
for cell in row {
print!("{:?}\t", cell);
}
println!();
}
Ok(())
}
Este código abre o arquivo dados.xlsx, lê a primeira aba e exibe todas as células no console. Observe o uso de open_workbook — uma função universal para abrir arquivos de qualquer formato suportado.
4. Métodos e funções principais
4.1. open_workbook
Assinatura: pub fn open_workbook<P: AsRef<Path>, T: Reader<BufReader<File>>>(path: P) -> Result<T, CalamineError>
O que faz: Abre um arquivo Excel no caminho especificado e retorna uma pasta de trabalho (workbook) do tipo indicado. O tipo de retorno depende do formato do arquivo: Xlsx, Xls, Xlsb ou Ods.
use calamine::{open_workbook, Xlsx};
fn main() {
let mut workbook: Xlsx<_> = open_workbook("relatorio.xlsx").expect("Não foi possível abrir o arquivo");
println!("Arquivo aberto com sucesso");
}
4.2. sheet_names
Assinatura: fn sheet_names(&a
Também na biblioteca
Benchmark para C++: guia completo com exemplos práticos
Testes em JavaScript (Node.js): frameworks e ferramentas
Trabalho com ZIP/arquivos em C++: bibliotecas e exemplos de código
Serialização de objetos em Swift: Codable, NSCoding e JSONEncoder