feat: adiciona suporte para arquivos XLS e atualiza mensagens de erro na importação
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user