private void RecorrerExcel(string filePath, object sender) { var workbook = new XLWorkbook(filePath); var workSheet = workbook.Worksheets.FirstOrDefault(); int linea = 2; ListaDeErrores = new List <Error>(); CargaManifiestoExcel = new List <CargaManifiesto>(); var firstRow = true; foreach (var row in workSheet.Rows()) { if (firstRow) { if (PlantillaDocs.Where((t, i) => row.Cell(i + 1).Value.ToString() != t.VALUE).Any()) { EstablecerError("El encabezado no coincide con el de la Plantilla proporcionada, por favor descargar la Plantilla en esta pagina para evitar Errores", sender); break; } firstRow = false; } else { if (row.Cell(1).Value.ToString() == "" && row.Cell(2).Value.ToString() == "" && row.Cell(3).Value.ToString() == "" && row.Cell(4).Value.ToString() == "" && row.Cell(5).Value.ToString() == "" && row.Cell(6).Value.ToString() == "" && row.Cell(7).Value.ToString() == "" && row.Cell(8).Value.ToString() == "" && row.Cell(9).Value.ToString() == "" && row.Cell(10).Value.ToString() == "" && row.Cell(11).Value.ToString() == "") { break; } for (int i = 1; i <= 11; i++) { if (row.Cell(i).Value.ToString() == string.Empty) { ListaDeErrores.Add(new Error { ERROR = "Falta la propiedad " + PlantillaDocs[i - 1].VALUE + " por favor revisar, fila: " + linea, LINEA = linea }); } } if (!ValidarTipoCelda(row.Cell(1).DataType, XLCellValues.Number)) { ListaDeErrores.Add(new Error { ERROR = "Error de formato de numero, celda de Excel debe tener formato Number, fila: " + linea, LINEA = linea }); } if (!ValidarGPS(row.Cell(5).Value.ToString()) || !ValidarTipoCelda(row.Cell(5).DataType, XLCellValues.Text)) { ListaDeErrores.Add(new Error { ERROR = "Error de formato de GPS, celda de Excel debe tener formato (##.####, ##.####), fila: " + linea, LINEA = linea }); } if (!ValidarTipoCelda(row.Cell(6).DataType, XLCellValues.DateTime)) { ListaDeErrores.Add(new Error { ERROR = "Error de formato de fecha, celda de Excel debe tener formato Date, fila: " + linea, LINEA = linea }); } if (!(ValidarTipoCelda(row.Cell(7).DataType, XLCellValues.Number) || ValidarTipoCelda(row.Cell(7).DataType, XLCellValues.DateTime))) { ListaDeErrores.Add(new Error { ERROR = "Error de formato de Hora, celda de Excel debe tener formato Hora, fila: " + linea, LINEA = linea }); } if (!ValidarTipoCelda(row.Cell(11).DataType, XLCellValues.Number)) { ListaDeErrores.Add(new Error { ERROR = "Error de formato de cantidad, celda de Excel debe tener formato Number, fila: " + linea, LINEA = linea }); } try { if (ListaDeErrores.Count < 1) { var item = new CargaManifiesto { NumeroDocumento = row.Cell(1).Value.ToString(), CodigoCliente = "Ex|" + row.Cell(2).Value.ToString(), NombreCliente = row.Cell(3).Value.ToString(), DireccionCliente = row.Cell(4).Value.ToString(), GPSCliente = row.Cell(5).Value.ToString(), FechaVisita = Convert.ToDateTime(row.Cell(6).Value.ToString()), HoraRecomendadaVisita = row.Cell(7).DataType == XLCellValues.DateTime ? Convert.ToDateTime(row.Cell(7).Value.ToString()).TimeOfDay : TimeSpan.FromDays(Convert.ToDouble(row.Cell(7).Value.ToString())), Comentario = row.Cell(8).Value.ToString(), NombreSKU = row.Cell(9).Value.ToString(), CodigoSKU = row.Cell(10).Value.ToString(), Cantidad = Convert.ToDouble(row.Cell(11).Value.ToString()), }; CargaManifiestoExcel.Add(item); } } catch (Exception ex) { EstablecerError("Ocurrió un error inesperado de formato en la fila " + linea + ", por favor revisar sus datos.", sender); } linea++; } } if (ListaDeErrores.Count > 0) { EstablecerMultiplesErrores(ListaDeErrores, sender); } }
protected void UiBotonCargarArchivo_FileUploadComplete(object sender, FileUploadCompleteEventArgs e) { ListaDeErrores = new List <Error>(); Session["ListaDeErrores"] = ListaDeErrores; var errorEncabezado = false; var errorFecha = false; int linea = 2; try { IniciarMvx(); var filePath = HttpContext.Current.Server.MapPath("~/UploadedFiles/SalesOrders/sale_order.xlsx"); if (!Directory.Exists(HttpContext.Current.Server.MapPath("~/UploadedFiles/SalesOrders"))) { Directory.CreateDirectory( HttpContext.Current.Server.MapPath("~/UploadedFiles/SalesOrders")); } e.UploadedFile.SaveAs(filePath); var workbook = new XLWorkbook(filePath); var workSheet = workbook.Worksheets.FirstOrDefault(); var lista = new List <OrdenDeVentaExcel>(); var firstRow = true; foreach (var row in workSheet.Rows()) { if (firstRow) { if (PlantillaDocs.Where((t, i) => row.Cell(i + 1).Value.ToString() != t.VALUE).Any()) { errorEncabezado = true; EstablecerError("El encabezado no coincide con el de la Plantilla proporcionada, por favor descargar la Plantilla en esta pagina para evitar Errores", sender); break; } firstRow = false; } else { if (row.Cell(1).Value.ToString() == "" && row.Cell(2).Value.ToString() == "" && row.Cell(3).Value.ToString() == "" && row.Cell(4).Value.ToString() == "") { break; } if (!ValidarTipoCelda(row.Cell(2).DataType, XLCellValues.DateTime)) { ListaDeErrores.Add(new Error { ERROR = "Error de formato de fecha, celda de Excel debe tener formato Date, linea: " + linea, LINEA = linea }); } if (!ValidarTipoCelda(row.Cell(4).DataType, XLCellValues.Number)) { ListaDeErrores.Add(new Error { ERROR = "Error de formato de cantidad, celda de Excel debe tener formato Number, linea: " + linea, LINEA = linea }); } var item = new OrdenDeVentaExcel { CLIENT_ID = row.Cell(1).Value.ToString(), POSTED_DATETIME = row.Cell(2).Value.ToString(), SKU = row.Cell(3).Value.ToString(), QTY = row.Cell(4).Value.ToString() }; lista.Add(item); linea++; } } if (errorEncabezado == false) { var fechaDeEntrega = DateTime.Today.AddDays(1).ToString(); var idCliente = workSheet.Cell(2, 1).Value.ToString(); if (IsDateClass.IsDate(workSheet.Cell(2, 2).Value)) { fechaDeEntrega = workSheet.Cell(2, 2).Value.ToString(); Session["FechaDeEntrega"] = fechaDeEntrega; } else if (IsDateClass.IsDate(workSheet.Cell(3, 2).Value)) { fechaDeEntrega = workSheet.Cell(3, 2).Value.ToString(); Session["FechaDeEntrega"] = fechaDeEntrega; } if (workSheet.Cell(2, 1).Value.ToString() == "" && workSheet.Cell(2, 2).Value.ToString() == "" && workSheet.Cell(3, 2).Value.ToString() == "") { EstablecerError("Archivo vacio o invalido", sender); errorFecha = true; } if (errorFecha == false) { ValidarClienteYObtenerSkusDeListaDePrecios?.Invoke(sender, new ValidacionSkuPorClienteArgumento() { OrdenDeVentaDetallesExcel = lista, IdCliente = idCliente, FechaEntrega = fechaDeEntrega, login = Session["LOGIN"].ToString() }); Session["CargadoDeExcel"] = true; } } } catch (Exception ex) { EstablecerError(ex.Message, sender); } }