feat: adiciona suporte para arquivos XLS e atualiza mensagens de erro na importação

This commit is contained in:
FelipeCN
2026-03-03 08:30:28 -03:00
parent bbfa66979b
commit b0e216a6ff
2 changed files with 10 additions and 10 deletions
+7 -7
View File
@@ -1,7 +1,5 @@
use crate::domain::errors::{ErroArquivo, ResumoAvisos};
use calamine::{open_workbook, Reader, Xlsx};
use std::fs::File;
use std::io::BufReader;
use calamine::{open_workbook_auto, Reader};
use std::path::Path;
const LIMITE_BYTES: u64 = 50 * 1024 * 1024;
@@ -22,17 +20,19 @@ pub struct ResultadoXlsx {
pub avisos: ResumoAvisos,
}
/// Lista as abas disponíveis em um arquivo XLSX.
/// Lista as abas disponíveis em um arquivo XLSX (ou XLS com extensão .xls mas conteúdo XLSX).
pub fn listar_abas(caminho: &Path) -> Result<Vec<String>, ErroArquivo> {
verificar_tamanho(caminho)?;
let workbook: Xlsx<BufReader<File>> = open_workbook::<Xlsx<_>, _>(caminho)
let workbook = open_workbook_auto(caminho)
.map_err(|e| ErroArquivo::Corrompido(e.to_string()))?;
Ok(workbook.sheet_names().to_vec())
}
/// Lê os dados de uma aba XLSX a partir de uma linha de início.
/// Lê os dados de uma aba XLSX (ou XLS com extensão .xls mas conteúdo XLSX) a partir de uma linha de início.
///
/// O formato real é detectado pelo conteúdo do arquivo (magic bytes), não pela extensão.
///
/// # Parâmetros
/// - `caminho`: caminho do arquivo
@@ -45,7 +45,7 @@ pub fn ler_xlsx(
) -> Result<ResultadoXlsx, ErroArquivo> {
verificar_tamanho(caminho)?;
let mut workbook: Xlsx<BufReader<File>> = open_workbook::<Xlsx<_>, _>(caminho)
let mut workbook = open_workbook_auto(caminho)
.map_err(|e| ErroArquivo::Corrompido(e.to_string()))?;
let range: calamine::Range<calamine::Data> = workbook