/// <summary> /// Método para generar el documento excel del resumen /// </summary> /// <param name="datosResumen">Los datos a utilizar para el resumen general</param> public static void CrearDocumentoResumenExcel(DatosGeneralesResumen datosResumen, List <VacaModel> listaVacas) { //Se crea una instancia del paquete de excel del documento a utilizar ExcelPackage documentoExcel = new ExcelPackage(); //Se crea la hoja que se va a generar ExcelWorksheet hojaResumen = documentoExcel.Workbook.Worksheets.Add(TITULO_RESUMEN); //Se establece el primer rango de celdas a utilizar para la información general, con sus colores ExcelRange celdasInformacionGeneral = hojaResumen.Cells[1, 1, 8, 4]; celdasInformacionGeneral.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; celdasInformacionGeneral.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(204, 255, 204)); celdasInformacionGeneral[1, 4, 8, 4].Style.Font.Color.SetColor(Color.Red); //Se completan las celdas con sus valores respectivos celdasInformacionGeneral[1, 1].Value = "Fecha referencia"; celdasInformacionGeneral[1, 4].Value = datosResumen.fechaActual; celdasInformacionGeneral[2, 1].Value = "Número hembras consideradas"; celdasInformacionGeneral[2, 4].Value = datosResumen.hembrasConsideradas; celdasInformacionGeneral[3, 1].Value = "Hembras que han parido"; celdasInformacionGeneral[3, 4].Value = datosResumen.hembrasParido; celdasInformacionGeneral[4, 1].Value = "IEP Prom. Histórico, meses"; celdasInformacionGeneral[4, 4].Value = datosResumen.iepPromHistoricoMeses; celdasInformacionGeneral[5, 1].Value = "% parición histórico"; celdasInformacionGeneral[5, 4].Value = datosResumen.porcParicionHistorico; celdasInformacionGeneral[6, 1].Value = "Último IEP cada vaca, meses"; celdasInformacionGeneral[6, 4].Value = datosResumen.ultimoIEPVacaMeses; celdasInformacionGeneral[7, 1].Value = "Último % parición "; celdasInformacionGeneral[7, 4].Value = datosResumen.ultimoPorcParicion; celdasInformacionGeneral[8, 1].Value = "Promedio partos hato"; celdasInformacionGeneral[8, 4].Value = datosResumen.promPartosHato; //Generación de la lista de las vacas con su respectiva información ExcelRange celdasListaVacas = hojaResumen.Cells[9, 1, 9 + listaVacas.Count, 12]; //Estilos celdasListaVacas.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; celdasListaVacas[9, 1, 9, 12].Style.WrapText = true; celdasListaVacas.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; celdasListaVacas.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; celdasListaVacas[9, 1, 9, 12].Style.Fill.BackgroundColor.SetColor(Color.FromArgb(182, 221, 232)); celdasListaVacas[9, 1, 9, 12].Style.Font.Bold = true; celdasListaVacas[9, 1, 9, 12].Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; celdasListaVacas[9, 1, 9, 12].Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; celdasListaVacas[9, 1, 9, 12].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; celdasListaVacas[9, 1, 9, 12].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; //Titulos celdasListaVacas[9, 1].Value = "Número de orden"; celdasListaVacas[9, 2].Value = "Número de la vaca"; celdasListaVacas[9, 3].Value = "Número trazable de la vaca"; celdasListaVacas[9, 4].Value = "Edad a 1er parto, meses"; celdasListaVacas[9, 5].Value = "Nº partos"; celdasListaVacas[9, 6].Value = "Edad de la última cría, meses"; celdasListaVacas[9, 7].Value = "Fecha destete a 7 meses, última cría"; celdasListaVacas[9, 8].Value = "IEP promedio /cada/vaca, meses"; celdasListaVacas[9, 9].Value = "Último IEP cada vaca, meses"; celdasListaVacas[9, 10].Value = "Fecha de última monta o IA"; celdasListaVacas[9, 11].Value = "Gestación días"; celdasListaVacas[9, 12].Value = "Fecha parto"; //Se agregan las filas con la información de las vacas if (listaVacas.Count > 0) { celdasListaVacas[10, 1, 9 + listaVacas.Count, 12].Style.Fill.BackgroundColor.SetColor(Color.FromArgb(216, 216, 216)); celdasListaVacas[10, 1, 9 + listaVacas.Count, 12].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; celdasListaVacas[10, 1, 9 + listaVacas.Count, 12].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; for (int iterador = 0; iterador < listaVacas.Count; iterador++) { celdasListaVacas[10 + iterador, 1].Value = iterador + 1; celdasListaVacas[10 + iterador, 2].Value = listaVacas[iterador].nombre; celdasListaVacas[10 + iterador, 3].Value = listaVacas[iterador].pkNumeroTrazable; celdasListaVacas[10 + iterador, 4].Value = listaVacas[iterador].edadAPrimerPartoMeses; celdasListaVacas[10 + iterador, 5].Value = listaVacas[iterador].numeroDePartos; celdasListaVacas[10 + iterador, 6].Value = listaVacas[iterador].edadUltimaCria; celdasListaVacas[10 + iterador, 7].Value = listaVacas[iterador].fechaDesteteUltimaCria; celdasListaVacas[10 + iterador, 8].Value = listaVacas[iterador].iepPromedioMeses; celdasListaVacas[10 + iterador, 9].Value = listaVacas[iterador].ultimoIEPMeses; celdasListaVacas[10 + iterador, 10].Value = listaVacas[iterador].fechaUltimaMonta; celdasListaVacas[10 + iterador, 11].Value = listaVacas[iterador].gestacionDias; celdasListaVacas[10 + iterador, 12].Value = listaVacas[iterador].fechaParto; } } //Se guarda el documento string ubicacionDocumentos = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); string nombreDocumentoResumen = ubicacionDocumentos + @"\" + "Resumen_" + DateTime.Now.ToString().Replace("/", ".").Replace(":", ".").Replace(" ", "_").Replace("\\", ".") + ".xlsx"; try { documentoExcel.SaveAs(new FileInfo(nombreDocumentoResumen)); //Se muestra el mensaje que indica al usuario en donde quedó el documento Utilities.MostrarMessageBox(MENSAJE_CORRECTO + nombreDocumentoResumen, TITULO_MENSAJE, MessageBoxButtons.OK, MessageBoxIcon.None); } catch { //Se muestra el mensaje que indica al usuario en donde quedó el documento Utilities.MostrarMessageBox(Utilities.MENSAJE_ERROR, Utilities.TITULO_ERROR, MessageBoxButtons.OK, MessageBoxIcon.Error); } //Se cierra el documento documentoExcel.Dispose(); }
/// <summary> /// Método para generar el documento excel del resumen /// </summary> /// <param name="datosResumen">Los datos a utilizar para el resumen general</param> public static void CrearDocumentoResumenExcel(DatosGeneralesResumen datosResumen, List <VacaModel> listaVacas, double promedioIEPHato, List <DatosVacaGraficos> listaDatosVacas) { //Se crea una instancia del paquete de excel del documento a utilizar ExcelPackage documentoExcel = new ExcelPackage(); //Se crea la hoja que se va a generar ExcelWorksheet hojaResumen = documentoExcel.Workbook.Worksheets.Add(TITULO_RESUMEN); //Se establece el primer rango de celdas a utilizar para la información general, con sus colores ExcelRange celdasInformacionGeneral = hojaResumen.Cells[1, 1, 8, 4]; celdasInformacionGeneral.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; celdasInformacionGeneral.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(204, 255, 204)); celdasInformacionGeneral[1, 4, 8, 4].Style.Font.Color.SetColor(Color.Red); //Se completan las celdas con sus valores respectivos //Se obtiene la configuración actual de la aplicación ProgramConfiguration config = new ProgramConfiguration(); string unidadDeTiempo = config.ObtenerConfig(ProgramConfiguration.LLAVE_UNIDAD_DE_TIEMPO); switch (unidadDeTiempo) { case "Meses": celdasInformacionGeneral[6, 1].Value = "Último IEP cada vaca (meses)"; celdasInformacionGeneral[4, 1].Value = "IEP Prom. Histórico (meses)"; break; case "Semanas": celdasInformacionGeneral[6, 1].Value = "Último IEP cada vaca (semanas)"; celdasInformacionGeneral[4, 1].Value = "IEP Prom. Histórico (semanas)"; break; default: celdasInformacionGeneral[6, 1].Value = "Último IEP cada vaca (días)"; celdasInformacionGeneral[4, 1].Value = "IEP Prom. Histórico (días)"; break; } switch (datosResumen.tipoResumen) { case LLAVE_TIPO_RESUMEN_POR_FECHAS: celdasInformacionGeneral[1, 1].Value = "Periodo"; celdasInformacionGeneral[1, 2].Style.Font.Color.SetColor(Color.Red); celdasInformacionGeneral[1, 2].Value = "Desde " + datosResumen.fechaInicioResumen.ToShortDateString() + " hasta " + datosResumen.fechaFinalResumen.ToShortDateString(); break; default: celdasInformacionGeneral[1, 1].Value = "Fecha referencia"; celdasInformacionGeneral[1, 4].Value = datosResumen.fechaActual; break; } celdasInformacionGeneral[2, 1].Value = "Número hembras consideradas"; celdasInformacionGeneral[2, 4].Value = datosResumen.hembrasConsideradas; celdasInformacionGeneral[3, 1].Value = "Hembras que han parido"; celdasInformacionGeneral[3, 4].Value = datosResumen.hembrasParido; celdasInformacionGeneral[4, 4].Value = datosResumen.iepPromHistoricoMeses; celdasInformacionGeneral[5, 1].Value = "% parición histórico"; celdasInformacionGeneral[5, 4].Value = datosResumen.porcParicionHistorico; celdasInformacionGeneral[6, 4].Value = datosResumen.ultimoIEPVacaMeses; celdasInformacionGeneral[7, 1].Value = "Promedio partos hato"; celdasInformacionGeneral[7, 4].Value = datosResumen.promPartosHato; if (datosResumen.tipoResumen == LLAVE_TIPO_RESUMEN_POR_FECHAS) { celdasInformacionGeneral[8, 1].Value = "Último % parición "; celdasInformacionGeneral[8, 4].Value = datosResumen.ultimoPorcParicion; } //Generación de la lista de las vacas con su respectiva información //Se establece el segundo rango de celdas a utilizar para la lista de vacas ExcelRange celdasListaVacas = hojaResumen.Cells[9, 1, 9 + listaVacas.Count, 12]; //Estilos celdasListaVacas.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; celdasListaVacas[9, 1, 9, 12].Style.WrapText = true; celdasListaVacas.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; celdasListaVacas.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; celdasListaVacas[9, 1, 9, 12].Style.Fill.BackgroundColor.SetColor(Color.FromArgb(182, 221, 232)); celdasListaVacas[9, 1, 9, 12].Style.Font.Bold = true; celdasListaVacas[9, 1, 9, 12].Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; celdasListaVacas[9, 1, 9, 12].Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; celdasListaVacas[9, 1, 9, 12].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; celdasListaVacas[9, 1, 9, 12].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; //Titulos switch (unidadDeTiempo) { case "Meses": celdasListaVacas[9, 8].Value = "IEP promedio /cada/vaca (meses)"; celdasListaVacas[9, 9].Value = "Último IEP cada vaca (meses)"; break; case "Semanas": celdasListaVacas[9, 8].Value = "IEP promedio /cada/vaca (semanas)"; celdasListaVacas[9, 9].Value = "Último IEP cada vaca (semanas)"; break; default: celdasListaVacas[9, 8].Value = "IEP promedio /cada/vaca (días)"; celdasListaVacas[9, 9].Value = "Último IEP cada vaca (días)"; break; } celdasListaVacas[9, 1].Value = "Número de orden"; celdasListaVacas[9, 2].Value = "Número de la vaca"; celdasListaVacas[9, 3].Value = "Número trazable de la vaca"; celdasListaVacas[9, 4].Value = "Edad a 1er parto, meses"; celdasListaVacas[9, 5].Value = "Nº partos"; celdasListaVacas[9, 6].Value = "Edad de la última cría, meses"; celdasListaVacas[9, 7].Value = "Fecha destete a 7 meses, última cría"; celdasListaVacas[9, 10].Value = "Fecha de última monta o IA"; celdasListaVacas[9, 11].Value = "Gestación días"; celdasListaVacas[9, 12].Value = "Fecha parto"; //Se agregan las filas con la información de las vacas if (listaVacas.Count > 0) { celdasListaVacas[10, 1, 9 + listaVacas.Count, 12].Style.Fill.BackgroundColor.SetColor(Color.FromArgb(216, 216, 216)); celdasListaVacas[10, 1, 9 + listaVacas.Count, 12].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; celdasListaVacas[10, 1, 9 + listaVacas.Count, 12].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; for (int iterador = 0; iterador < listaVacas.Count; iterador++) { celdasListaVacas[10 + iterador, 1].Value = iterador + 1; celdasListaVacas[10 + iterador, 2].Value = listaVacas[iterador].nombre; celdasListaVacas[10 + iterador, 3].Value = listaVacas[iterador].pkNumeroTrazable; celdasListaVacas[10 + iterador, 4].Value = listaVacas[iterador].edadAPrimerPartoMeses; celdasListaVacas[10 + iterador, 5].Value = listaVacas[iterador].numeroDePartos; celdasListaVacas[10 + iterador, 6].Value = listaVacas[iterador].edadUltimaCria; celdasListaVacas[10 + iterador, 7].Value = listaVacas[iterador].fechaDesteteUltimaCria; switch (unidadDeTiempo) { case "Meses": celdasListaVacas[10 + iterador, 8].Value = Math.Round(listaVacas[iterador].iepPromedioDias / Utilities.DIAS_MES, 2); celdasListaVacas[10 + iterador, 9].Value = Math.Round(listaVacas[iterador].ultimoIEPDias / Utilities.DIAS_MES, 2); break; case "Semanas": celdasListaVacas[10 + iterador, 8].Value = Math.Round(listaVacas[iterador].iepPromedioDias / Utilities.DIAS_SEMANA, 2); celdasListaVacas[10 + iterador, 9].Value = Math.Round(listaVacas[iterador].ultimoIEPDias / Utilities.DIAS_SEMANA, 2); break; default: celdasListaVacas[10 + iterador, 8].Value = Math.Round(listaVacas[iterador].iepPromedioDias, 2); celdasListaVacas[10 + iterador, 9].Value = Math.Round(listaVacas[iterador].ultimoIEPDias, 2); break; } celdasListaVacas[10 + iterador, 10].Value = listaVacas[iterador].fechaUltimaMonta; celdasListaVacas[10 + iterador, 11].Value = listaVacas[iterador].gestacionDias; celdasListaVacas[10 + iterador, 12].Value = listaVacas[iterador].fechaParto; } } //-------------------------------Worksheet Gráfico----------------------------- //Aqui se crea el worksheet ExcelWorksheet grafico = documentoExcel.Workbook.Worksheets.Add("Gráficos"); if (listaDatosVacas.Count > 0) { ExcelRange celdasListaVacasGraficos = grafico.Cells[1, 1, 1 + listaDatosVacas.Count, 6]; //Se definen estilos celdasListaVacasGraficos.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; celdasListaVacasGraficos.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(255, 255, 255)); celdasListaVacasGraficos[1, 1, 1, 6].Style.Fill.BackgroundColor.SetColor(Color.FromArgb(211, 211, 211)); celdasListaVacasGraficos[1, 1, 1, 6].Style.WrapText = true; celdasListaVacasGraficos[1, 1, 1, 6].Style.Font.Bold = true; celdasListaVacasGraficos[1, 1, 1, 6].Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; celdasListaVacasGraficos[1, 1, 1, 6].Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; celdasListaVacasGraficos[1, 1, 1, 6].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; celdasListaVacasGraficos[1, 1, 1, 6].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; //Se le da un valor a los encabezados celdasListaVacasGraficos[1, 1].Value = "Orden"; celdasListaVacasGraficos[1, 2].Value = "Núm vaca"; celdasListaVacasGraficos[1, 4].Value = "Partos/vaca"; switch (unidadDeTiempo) { case "Meses": celdasListaVacasGraficos[1, 3].Value = "Prom hato (meses)"; celdasListaVacasGraficos[1, 5].Value = "Prom/vaca (meses)"; celdasListaVacasGraficos[1, 6].Value = "Últ/vaca (meses)"; break; case "Semanas": celdasListaVacasGraficos[1, 3].Value = "Prom hato (semanas)"; celdasListaVacasGraficos[1, 5].Value = "Prom/vaca (semanas)"; celdasListaVacasGraficos[1, 6].Value = "Últ/vaca (semanas)"; break; default: celdasListaVacasGraficos[1, 3].Value = "Prom hato (días)"; celdasListaVacasGraficos[1, 5].Value = "Prom/vaca (días)"; celdasListaVacasGraficos[1, 6].Value = "Últ/vaca (días)"; break; } //Mas estilos celdasListaVacasGraficos.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; celdasListaVacasGraficos[2, 1, 1 + listaDatosVacas.Count, 1].Style.WrapText = true; celdasListaVacasGraficos.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; celdasListaVacasGraficos.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; celdasListaVacasGraficos[2, 1, 1 + listaDatosVacas.Count, 1].Style.Fill.BackgroundColor.SetColor(Color.FromArgb(182, 221, 232)); celdasListaVacasGraficos[2, 1, 1 + listaDatosVacas.Count, 1].Style.Font.Bold = true; celdasListaVacasGraficos[2, 1, 1 + listaDatosVacas.Count, 1].Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; celdasListaVacasGraficos[2, 1, 1 + listaDatosVacas.Count, 1].Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; celdasListaVacasGraficos[2, 1, 1 + listaDatosVacas.Count, 1].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; celdasListaVacasGraficos[2, 1, 1 + listaDatosVacas.Count, 1].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; //Se recorre la lista de vacas y se carga el worksheet for (int iterador = 0; iterador < listaDatosVacas.Count; iterador++) { celdasListaVacasGraficos[2 + iterador, 1].Value = iterador + 1; celdasListaVacasGraficos[2 + iterador, 2].Value = listaDatosVacas[iterador].pkNumeroTrazableVaca.ToString(); celdasListaVacasGraficos[2 + iterador, 4].Value = listaDatosVacas[iterador].partosVaca; celdasListaVacasGraficos[2 + iterador, 5].Value = listaDatosVacas[iterador].iepPromedioVacaDias; switch (unidadDeTiempo) { case "Meses": celdasListaVacasGraficos[2 + iterador, 3].Value = Math.Round(promedioIEPHato / Utilities.DIAS_MES, 2); celdasListaVacasGraficos[2 + iterador, 5].Value = Math.Round(listaDatosVacas[iterador].iepPromedioVacaDias / Utilities.DIAS_MES, 2); celdasListaVacasGraficos[2 + iterador, 6].Value = Math.Round(listaDatosVacas[iterador].ultimoIEPVacaDias / Utilities.DIAS_MES, 2); break; case "Semanas": celdasListaVacasGraficos[2 + iterador, 3].Value = Math.Round(promedioIEPHato / Utilities.DIAS_SEMANA, 2); celdasListaVacasGraficos[2 + iterador, 5].Value = Math.Round(listaDatosVacas[iterador].iepPromedioVacaDias / Utilities.DIAS_SEMANA, 2); celdasListaVacasGraficos[2 + iterador, 6].Value = Math.Round(listaDatosVacas[iterador].ultimoIEPVacaDias / Utilities.DIAS_SEMANA, 2); break; default: celdasListaVacasGraficos[2 + iterador, 3].Value = Math.Round(promedioIEPHato, 2); celdasListaVacasGraficos[2 + iterador, 5].Value = Math.Round(listaDatosVacas[iterador].iepPromedioVacaDias, 2); celdasListaVacasGraficos[2 + iterador, 6].Value = Math.Round(listaDatosVacas[iterador].ultimoIEPVacaDias, 2); break; } } } //Se crea el gráfico var chartVacas = grafico.Drawings.AddChart("chart", OfficeOpenXml.Drawing.Chart.eChartType.ColumnClustered3D); //Valores maximos y minimos para los ejes "x" y "y" chartVacas.YAxis.MinValue = 0; chartVacas.XAxis.MaxValue = listaDatosVacas.Count; //Se declaran las series que se utilizarán para poblar el gráfico var serieHato = chartVacas.Series.Add("C2: C" + listaDatosVacas.Count + 1, "B2: B" + listaDatosVacas.Count + 1); serieHato.Header = "Promedio Hato"; var ult = chartVacas.Series.Add("D2: D" + listaDatosVacas.Count + 1, "B2: B" + listaDatosVacas.Count + 1); ult.Header = "Partos/vaca"; var prom = chartVacas.Series.Add("E2: E" + listaDatosVacas.Count + 1, "B2: B" + listaDatosVacas.Count + 1); prom.Header = "Prom c/vaca"; var partos = chartVacas.Series.Add("F2: F" + listaDatosVacas.Count + 1, "B2: B" + listaDatosVacas.Count + 1); partos.Header = "Últ c/vaca"; chartVacas.Border.Fill.Color = System.Drawing.Color.Green; chartVacas.Title.Text = "Todo el hato: comparación IEP del hato, último c/vaca y prom c/vaca"; //Tamaño del gráfico chartVacas.SetSize(500, 300); // Posicionamos el gráfico chartVacas.SetPosition(1, 1, 13, 1); //--------------------------------Worksheet Gráfico----------------------------- //Se guarda el documento string ubicacionDocumentos = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); string nombreDocumentoResumen = ubicacionDocumentos + @"\" + "Resumen_" + DateTime.Now.ToString().Replace("/", ".").Replace(":", ".").Replace(" ", "_").Replace("\\", ".") + ".xlsx"; try { documentoExcel.SaveAs(new FileInfo(nombreDocumentoResumen)); //Se muestra el mensaje que indica al usuario en donde quedó el documento Utilities.MostrarMessageBox(MENSAJE_CORRECTO + nombreDocumentoResumen, TITULO_MENSAJE, MessageBoxButtons.OK, MessageBoxIcon.None); } catch { //Se muestra el mensaje que indica al usuario en donde quedó el documento Utilities.MostrarMessageBox(Utilities.MENSAJE_ERROR, Utilities.TITULO_ERROR, MessageBoxButtons.OK, MessageBoxIcon.Error); } //Se cierra el documento documentoExcel.Dispose(); }