private List<EditorCliente> ObtenerClientesDeExcel(Stream stream, SelectorColumnasExcelCliente columnas) { var workbook = new XLWorkbook(stream); var worksheet = workbook.Worksheets.First(); var firstRow = worksheet.FirstRowUsed(); var rowUsed = firstRow.RowUsed(); rowUsed = rowUsed.RowBelow(); var clientes = new List<EditorCliente>(); while (!rowUsed.Cell(columnas.LetraColumnaNombreOEmpresa).IsEmpty()) { var cliente = new EditorCliente { NombreOEmpresa = rowUsed.Cell(columnas.LetraColumnaNombreOEmpresa).GetString(), NumeroIdentificacionFiscal = rowUsed.Cell(columnas.LetraColumnaNumeroIdentificacionFiscal).GetString(), NombreComercial = string.IsNullOrEmpty(columnas.LetraColumnaNombreComercial) ? null : rowUsed.Cell(columnas.LetraColumnaNombreComercial).GetString(), PersonaContacto = string.IsNullOrEmpty(columnas.LetraColumnaPersonaContacto) ? null : rowUsed.Cell(columnas.LetraColumnaPersonaContacto).GetString(), Email = string.IsNullOrEmpty(columnas.LetraColumnaEmail) ? null : rowUsed.Cell(columnas.LetraColumnaEmail).GetString(), Direccion1 = string.IsNullOrEmpty(columnas.LetraColumnaDireccion) ? null : rowUsed.Cell(columnas.LetraColumnaDireccion).GetString(), Localidad = string.IsNullOrEmpty(columnas.LetraColumnaLocalidad) ? null : rowUsed.Cell(columnas.LetraColumnaLocalidad).GetString(), Provincia = string.IsNullOrEmpty(columnas.LetraColumnaProvincia) ? null : rowUsed.Cell(columnas.LetraColumnaProvincia).GetString(), CodigoPostal = string.IsNullOrEmpty(columnas.LetraColumnaCodigoPostal) ? null : rowUsed.Cell(columnas.LetraColumnaCodigoPostal).GetString(), ComentarioInterno = string.IsNullOrEmpty(columnas.LetraColumnaComentarioInterno) ? null : rowUsed.Cell(columnas.LetraColumnaComentarioInterno).GetString() }; if(!clientes.Any(m=> m.NombreOEmpresa == cliente.NombreOEmpresa|| m.NumeroIdentificacionFiscal == cliente.NumeroIdentificacionFiscal)) clientes.Add(cliente); rowUsed = rowUsed.RowBelow(); } return clientes.Distinct().ToList(); }
public async Task ImportarClientesDeExcel(Stream stream, SelectorColumnasExcelCliente columnas) { var clientesExistentes = await _contexto.Clientes.ToListAsync(); var clientesExcel = ObtenerClientesDeExcel(stream, columnas); var clientesAImportar = QuitarClientesDuplicados(clientesExistentes, clientesExcel); await CrearClientesAsync(clientesAImportar); }