Trabalhando com Excel em Rust: bibliotecas para leitura e escrita de tabelas

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



A linguagem Rust, conhecida por sua performance e segurança, oferece excelentes capacidades para trabalhar com planilhas Excel. Neste artigo, veremos três das bibliotecas mais populares: rust_xlsxwriter, calamine e xlsx. Você aprenderá a ler, criar e modificar arquivos no formato .xlsx, além de aplicar funções avançadas de formatação.



Por que Rust para trabalhar com Excel?

Rust é ideal para tarefas de processamento de dados devido a:

  • Custo zero de abstrações — alta velocidade ao trabalhar com arquivos grandes;
  • Gerenciamento seguro de memória — eliminação de vazamentos e segmentation faults;
  • Multiplataforma — o código funciona em Windows, macOS e Linux;
  • Excelente integração com outros sistemas via FFI.


Biblioteca rust_xlsxwriter: criação de arquivos Excel

rust_xlsxwriter é uma biblioteca moderna para criar arquivos Excel com amplas capacidades de formatação. Ela suporta estilos, mesclagem de células, fórmulas e formatação condicional.



Instalação

Adicione ao Cargo.toml:

[dependencies]rust_xlsxwriter = "0.77"


Exemplo: criando um relatório com formatação

Vamos criar um arquivo com cabeçalhos, dados e fórmula:

use rust_xlsxwriter::*;

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

// Criando 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);

// Cabeçalhos worksheet.write_with_format(0, 0, "Produto", &header_format)?; worksheet.write_with_format(0, 1, "Quantidade", &header_format)?; worksheet.write_with_format(0, 2, "Preço", &header_format)?; worksheet.write_with_format(0, 3, "Total", &header_format)?;

// Dados let items = vec![ ("Notebook", 5, 1200.00), ("Mouse", 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: quantidade * preço worksheet.write_formula(row, 3, &format!("B{}*C{}", row+1, row+1))?; }

// Largura automática das colunas 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!("Arquivo report.xlsx criado!"); Ok(())}


Biblioteca calamine: leitura de arquivos Excel

calamine é um parser rápido para leitura de arquivos Excel (.xlsx, .xls, .xlsb). Ele não requer Excel instalado e funciona totalmente em memória.



Instalação

[dependencies]calamine = "0.24"


Exemplo: lendo dados de um arquivo

Vamos ler o arquivo criado anteriormente e exibir os dados no console:

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!("Conteúdo do arquivo {}:", path); println!("{:-<40}", "");

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

Recommendations