feat: atualiza a renderização da tabela de pré-visualização para exibir letras do Excel como cabeçalho

This commit is contained in:
FelipeCN
2026-03-03 09:27:22 -03:00
parent 41c75e5ed1
commit dedb6a72c2
+16 -3
View File
@@ -3,8 +3,21 @@ pub mod import;
pub mod layouts; pub mod layouts;
pub mod resultado; 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. /// 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. /// seguida pelas linhas de dados.
pub fn renderizar_tabela_preview(ui: &mut egui::Ui, linhas: &[Vec<String>]) { pub fn renderizar_tabela_preview(ui: &mut egui::Ui, linhas: &[Vec<String>]) {
let num_colunas = linhas.iter().map(|l| l.len()).max().unwrap_or(0); 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<String>]) {
.striped(true) .striped(true)
.spacing([8.0, 2.0]) .spacing([8.0, 2.0])
.show(ui, |ui| { .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 { for i in 0..num_colunas {
ui.label( ui.label(
egui::RichText::new(format!("[{}]", i)) egui::RichText::new(format!("{} ({})", indice_para_letra(i), i))
.strong() .strong()
.monospace(), .monospace(),
); );