using System; using System.Collections.Generic; using System.IO; using System.Linq; using OfficeOpenXml; using PipefyAddCompanies.Core.Models; namespace PipefyAddCompanies.Core.Services { public static class PlanilhaService { public static List LerPlanilha(string caminhoArquivo) { var empresas = new List(); ExcelPackage.LicenseContext = LicenseContext.NonCommercial; using (var package = new ExcelPackage(new FileInfo(caminhoArquivo))) { // Verifique se há ao menos uma planilha if (package.Workbook.Worksheets.Count == 0) { throw new InvalidOperationException("O arquivo Excel não contém nenhuma planilha."); } var worksheet = package.Workbook.Worksheets[0]; // Acessa a primeira planilha var totalRows = worksheet.Dimension?.Rows ?? 0; for (int row = 3; row <= totalRows; row++) // Começando de 2 para pular o cabeçalho { var empresa = new Empresa ( nome: worksheet.Cells[row, 2].Text, prospectanteEmail: worksheet.Cells[row, 3].Text, cidade: worksheet.Cells[row, 4].Text, estado: worksheet.Cells[row, 5].Text, ramoAtividade: worksheet.Cells[row, 6].Text, comentarios: worksheet.Cells[row, 7].Text, telefoneEmpresa: worksheet.Cells[row, 8].Text, responsavelEnergia: worksheet.Cells[row, 9].Text, areaResponsavel: worksheet.Cells[row, 10].Text, telefoneResponsavel: worksheet.Cells[row, 11].Text, celularResponsavel: worksheet.Cells[row, 12].Text, emailResponsavel: worksheet.Cells[row, 13].Text, email2: worksheet.Cells[row, 14].Text, ambiente: worksheet.Cells[row, 15].Text, distribuidora: worksheet.Cells[row, 16].Text ); // Condicional para preencher o ValorFatura somente se Distribuidora estiver preenchida var valorFatura = worksheet.Cells[row, 17].Text; if (!string.IsNullOrEmpty(empresa.Distribuidora) && decimal.TryParse(valorFatura, out var fatura)) { empresa.ValorFatura = fatura; } // Aplicar validação de nome para remover caracteres especiais empresa.ValidarNome(); // Adicionar empresa à lista se as condições forem atendidas empresas.Add(empresa); } } return empresas.Where(x => !string.IsNullOrEmpty(x.Nome) && x.Nome != "SMART ENERGIA").ToList(); } } }