diff --git a/src/ui/screens/mod.rs b/src/ui/screens/mod.rs index 3d97c09..8811818 100644 --- a/src/ui/screens/mod.rs +++ b/src/ui/screens/mod.rs @@ -3,8 +3,21 @@ pub mod import; pub mod layouts; pub mod resultado; +/// Converte um índice de coluna base-0 para a notação de letras do Excel (A, B, ..., Z, AA, ...). +fn indice_para_letra(mut idx: usize) -> String { + let mut resultado = String::new(); + loop { + resultado.insert(0, (b'A' + (idx % 26) as u8) as char); + if idx < 26 { + break; + } + idx = idx / 26 - 1; + } + resultado +} + /// Renderiza uma tabela simples de pré-visualização do arquivo. -/// Exibe uma linha de cabeçalho com os índices das colunas (0, 1, 2, ...) +/// Exibe uma linha de cabeçalho com letras no estilo Excel (A, B, C, ...) /// seguida pelas linhas de dados. pub fn renderizar_tabela_preview(ui: &mut egui::Ui, linhas: &[Vec]) { let num_colunas = linhas.iter().map(|l| l.len()).max().unwrap_or(0); @@ -30,10 +43,10 @@ pub fn renderizar_tabela_preview(ui: &mut egui::Ui, linhas: &[Vec]) { .striped(true) .spacing([8.0, 2.0]) .show(ui, |ui| { - // Linha de cabeçalho: índices 0, 1, 2, ... + // Linha de cabeçalho: letras A, B, C, ... com índice base-0 entre parênteses for i in 0..num_colunas { ui.label( - egui::RichText::new(format!("[{}]", i)) + egui::RichText::new(format!("{} ({})", indice_para_letra(i), i)) .strong() .monospace(), );