protected void btnSubir_Click(object sender, EventArgs e) { if (!CargaArchivo.HasFile) { MostrarExcepcion(Constantes.MENSAJE_CAMPO_REQUERIDO_TITULO, "Es requerido subir un archivo"); return; } String ext = System.IO.Path.GetExtension(CargaArchivo.PostedFile.FileName); log.Info(String.Format("El usuario: [{0}] ha cargado el archivo de excel [{1}] para su insercion masiva", UsuarioActual.Nombre, CargaArchivo.PostedFile.FileName)); if (!ext.ToLower().Equals(Constantes.EXTENSION_EXCEL_97) && !ext.ToLower().Equals(Constantes.EXTENSION_EXCEL_2007)) { MostrarExcepcion(Constantes.MENSAJE_CAMPO_REQUERIDO_TITULO, "Solo son permitidos los archivos de Excel"); return; } CajaRegistro.Items.Clear(); CajaRegistro.Items.Add(NuevoListItem("Iniciando Proceso", Constantes.TEXTO_BLANCO)); try { IExcelDataReader excelReader = null; if (ext.ToLower().Equals(Constantes.EXTENSION_EXCEL_2007)) { CajaRegistro.Items.Add(NuevoListItem("Leyendo Archivo de Excel XLSX 2007", Constantes.TEXTO_BLANCO)); excelReader = ExcelReaderFactory.CreateOpenXmlReader(CargaArchivo.PostedFile.InputStream); } else { if (ext.ToLower().Equals(Constantes.EXTENSION_EXCEL_97)) { CajaRegistro.Items.Add(NuevoListItem("Leyendo Archivo de Excel XLS 97-2003", Constantes.TEXTO_BLANCO)); excelReader = ExcelReaderFactory.CreateBinaryReader(CargaArchivo.PostedFile.InputStream); } } excelReader.IsFirstRowAsColumnNames = true; DataSet result = excelReader.AsDataSet(); int i = 0; while (excelReader.Read()) { i++; String codigo = excelReader.GetString(0); String nombre = excelReader.GetString(1); String zona = excelReader.GetString(2); String region = excelReader.GetString(3); String plaza = excelReader.GetString(4); Boolean encontroError = false; if (i == 1) { encontroError = true; } if (!ValidarObjeto(codigo) && !encontroError) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ERROR FILA: [{0}], la columna carece de codigo", i), Constantes.TEXTO_BLANCO)); encontroError = true; } if (!ValidarObjeto(nombre) && !encontroError) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ERROR FILA: [{0}], la columna carece de nombre", i), Constantes.TEXTO_BLANCO)); encontroError = true; } if (!ValidarObjeto(zona) && !encontroError) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ERROR FILA: [{0}], la columna carece de zona", i), Constantes.TEXTO_BLANCO)); encontroError = true; } if (!ValidarObjeto(region) && !encontroError) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ERROR FILA: [{0}], la columna carece de region", i), Constantes.TEXTO_BLANCO)); encontroError = true; } if (!ValidarObjeto(plaza) && !encontroError) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ERROR FILA: [{0}], la columna carece de plaza", i), Constantes.TEXTO_BLANCO)); encontroError = true; } if (!encontroError) { try { Oficina obj = oficinaDao.GetByCodigoPlanta(codigo); Plaza objPlaza = plazaDao.GetByNombre(plaza); Zona objZona = zonaDao.GetByNombre(zona); Region objRegion = regionDao.GetByNombre(region); if (obj != null) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ADV FILA: [{0}], este codigo de oficina ya existe, se actualizara el registro", i), Constantes.TEXTO_BLANCO)); } if (objPlaza == null) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ADV FILA: [{0}], la plaza: [{1}] NO existe en la base de datos.", i, plaza), Constantes.TEXTO_BLANCO)); } if (objRegion == null) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ADV FILA: [{0}], la region: [{1}], NO existe en la base de datos.", i, region), Constantes.TEXTO_BLANCO)); } if (objZona == null) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ADV FILA: [{0}], la zona: [{1}], NO existe en la base de datos.", i, zona), Constantes.TEXTO_BLANCO)); } if (obj == null) { obj = new Oficina(); obj.Usuario_creado_por = UsuarioActual; obj.DetalleCatalogo = daoFactory.GetDetalleCatalogoDao().GetById(Constantes.DETALLE_CATALOGO_OFICINA); } obj.Usuario_modificado_por = UsuarioActual; obj.FechaModificacion = DateTime.Now; obj.Nombre = nombre; obj.CodigoPlanta = codigo; if (objPlaza != null) { obj.Plaza = objPlaza; } if (objRegion != null) { obj.Region = objRegion; } if (objZona != null) { obj.Zona = objZona; } oficinaDao.SaveOrUpdate(obj); CajaRegistro.Items.Add(NuevoListItem(String.Format("OK FILA: [{0}], registro guardado correctamente", i), Constantes.TEXTO_BLANCO)); } catch (Exception ex) { log.Info(String.Format("Error en el proceso de importar la oficina. Mensaje [{0}]", ex.Message)); CajaRegistro.Items.Add(NuevoListItem(String.Format("ERROR FILA: [{0}], error en el proceso. Detalles: [{1}] ", i, ex.Message), Constantes.TEXTO_BLANCO)); } } } CajaRegistro.Items.Add(NuevoListItem(String.Format("PROCESO OK: Se completaron: [{0}] registros", i), Constantes.TEXTO_BLANCO)); excelReader.Close(); } catch (Exception ex) { log.Info(String.Format("Error en el proceso de importar la Hoja de Excel. Mensaje [{0}]", ex.Message)); CajaRegistro.Items.Add(NuevoListItem(String.Format("ERROR: Error en el proceso. Detalles: [{0}]", ex.Message), Constantes.TEXTO_BLANCO)); ManejarExcepcion(ex); } }
protected void btnSubir_Click(object sender, EventArgs e) { if (!CargaArchivo.HasFile) { MostrarExcepcion(Constantes.MENSAJE_CAMPO_REQUERIDO_TITULO, "Es requerido subir un archivo"); return; } String ext = System.IO.Path.GetExtension(CargaArchivo.PostedFile.FileName); log.Info(String.Format("El usuario: [{0}] ha cargado el archivo de excel [{1}] para su insercion masiva", UsuarioActual.Nombre, CargaArchivo.PostedFile.FileName)); if (!ext.ToLower().Equals(Constantes.EXTENSION_EXCEL_97) && !ext.ToLower().Equals(Constantes.EXTENSION_EXCEL_2007)) { MostrarExcepcion(Constantes.MENSAJE_CAMPO_REQUERIDO_TITULO, "Solo son permitidos los archivos de Excel"); return; } CajaRegistro.Items.Clear(); CajaRegistro.Items.Add(NuevoListItem("Iniciando Proceso", Constantes.TEXTO_BLANCO)); try { IExcelDataReader excelReader = null; if (ext.ToLower().Equals(Constantes.EXTENSION_EXCEL_2007)) { CajaRegistro.Items.Add(NuevoListItem("Leyendo Archivo de Excel XLSX 2007", Constantes.TEXTO_BLANCO)); excelReader = ExcelReaderFactory.CreateOpenXmlReader(CargaArchivo.PostedFile.InputStream); } else { if (ext.ToLower().Equals(Constantes.EXTENSION_EXCEL_97)) { CajaRegistro.Items.Add(NuevoListItem("Leyendo Archivo de Excel XLS 97-2003", Constantes.TEXTO_BLANCO)); excelReader = ExcelReaderFactory.CreateBinaryReader(CargaArchivo.PostedFile.InputStream); } } excelReader.IsFirstRowAsColumnNames = true; DataSet result = excelReader.AsDataSet(); int i = 0; while (excelReader.Read()) { i++; String nomina = excelReader.GetString(0); String nombre = excelReader.GetString(1); String plaza = excelReader.GetString(2); int numeroNumina = 0; Boolean encontroError = false; if (i == 1) { encontroError = true; } if (!Int32.TryParse(nomina, out numeroNumina) && !encontroError) { numeroNumina = 0; CajaRegistro.Items.Add(NuevoListItem(String.Format("ERROR FILA: [{0}], la columna de Nomina no es numerica", i), Constantes.TEXTO_BLANCO)); encontroError = true; } if (!ValidarObjeto(nombre) && !encontroError) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ERROR FILA: [{0}], la columna carece de nombre ", i), Constantes.TEXTO_BLANCO)); encontroError = true; } if (!ValidarObjeto(plaza) && !encontroError) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ERROR FILA: [{0}], la columna carece de plaza", i), Constantes.TEXTO_BLANCO)); encontroError = true; } if (numeroNumina <= 0 && !encontroError) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ERROR FILA: [{0}], la columna carece de numero nomina", i), Constantes.TEXTO_BLANCO)); encontroError = true; } if (!encontroError) { try { Empleado obj = empleadoDao.GetByNumeroEmpleado(numeroNumina); Plaza objPlaza = plazaDao.GetByNombre(plaza); if (obj != null) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ADV FILA: [{0}], este numero de nomina ya existe, se actualizara el registro", i), Constantes.TEXTO_BLANCO)); } if (objPlaza == null) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ADV FILA: [{0}], la plaza [{1}] NO existe en la base de datos.", i, plaza), Constantes.TEXTO_BLANCO)); } if (obj == null) { obj = new Empleado(); obj.Usuario_creado_por = UsuarioActual; obj.Usuario_cve_usuario_alta = UsuarioActual; } obj.Usuario_modificado_por = UsuarioActual; obj.FechaModificacion = DateTime.Now; obj.Nombre = nombre; obj.NoEmpleado = numeroNumina; if (objPlaza != null) { obj.Plaza = objPlaza; } empleadoDao.SaveOrUpdate(obj); CajaRegistro.Items.Add(NuevoListItem(String.Format("OK FILA: [{0}], registro guardado correctamente", i), Constantes.TEXTO_BLANCO)); } catch (Exception ex) { log.Error(String.Format("Error al momento de intentar insertar un empleado importado de Excel. Mensaje: [{0}]", ex.Message)); CajaRegistro.Items.Add(NuevoListItem(String.Format("ERROR FILA: [{0}]. Error en el proceso. Detalles: [{1}]", i, ex.Message), Constantes.TEXTO_BLANCO)); } } } CajaRegistro.Items.Add(NuevoListItem(String.Format("PROCESO OK: Se completaron: [{0}] registros", i), Constantes.TEXTO_BLANCO)); excelReader.Close(); } catch (Exception ex) { CajaRegistro.Items.Add(NuevoListItem(String.Format("ERROR: Error en el proceso. Detalles: [{0}] ", ex.Message), Constantes.TEXTO_BLANCO)); log.Error(String.Format("Error al momento de intentar importar la hoja de excel de Empleados. Mensaje [{0}]", ex.Message)); ManejarExcepcion(ex); } }