public static void ExportarHorario(ClsIndividuo obj, FormExportar frm) { try { Console.WriteLine("Exportando Horario a Excel"); Excel.Application AppExcel; // Inicializa la variable para la Aplicación de Excel Excel.Workbook workBook; // Inicializa la variable para los libros de Excel Excel.Worksheet workSheet; // Inicializa la variable para las hojas de Excel object opc = Type.Missing; AppExcel = new Excel.Application(); AppExcel.Visible = false; workBook = AppExcel.Workbooks.Add(); int TotalHojas = obj._SuperIndv.Aulas.GetLength(0) + obj._SuperIndv.Docentes.GetLength(0) + obj._SuperIndv.Grupos.GetLength(0); for (int i = 1; i < TotalHojas; i++) // Agrega Libros según las hojas necesarias { workBook.Worksheets.Add(opc); } for (int i = 0; i < obj._SuperIndv.BloquesDias.GetLength(0); i++) { for (int j = 0; j < obj._SuperIndv.BloquesDias[i].GetLength(0); j++) { TotalHoras++; } } IndiceHoja = 0; workSheet = workBook.Worksheets[1]; int MaxProgreso = obj._SuperIndv.Aulas.Length + obj._SuperIndv.Grupos.Length + obj._SuperIndv.Docentes.Length; frm.Invoke(new MethodInvoker(delegate() { frm.Components(MaxProgreso); })); ExportarHorarioGrupos(workBook, workSheet, obj, frm); ExportarHorarioDocente(workBook, workSheet, obj, frm); ExportarHorarioAula(workBook, workSheet, obj, frm); string path = ""; frm.Invoke(new MethodInvoker(delegate() { path = frm.ProcesoTerminado(); })); workBook.SaveAs(path, Excel.XlFileFormat.xlWorkbookNormal); workBook.Close(true); AppExcel.Quit(); Console.WriteLine("Horario Exportado con Éxito"); } catch (Exception ex) { Console.WriteLine("Error al exportar la informacion debido a: " + ex.ToString()); } }
private void Exportar() { try { string path = "", name = ""; using (var dialog = new OpenFileDialog()) { dialog.Filter = "Json files (*.json)|*.json|Text files (*.txt)|*.txt"; //dialog.InitialDirectory = @"D:\"; dialog.InitialDirectory = Environment.CurrentDirectory; dialog.Title = "Seleccione un archivo JSON"; if (dialog.ShowDialog() == DialogResult.OK && !string.IsNullOrWhiteSpace(dialog.FileName)) { path = dialog.FileName; name = System.IO.Path.GetFileNameWithoutExtension(dialog.FileName); //GSuperIndividuo.SetDb(bd, Turno); ClsIndividuo indiv = ClsTrataJSON.JSON_Individuo(path, bd); FormExportar exportar = new FormExportar(); exportar.AgregarTitulo(name); exportar.Show(); Thread hilo = new Thread(delegate() { ClsExportar.ExportarHorario(indiv, exportar); }); hilo.SetApartmentState(ApartmentState.STA); hilo.Start(); } } } catch (Exception err) { MessageBox.Show(err.ToString()); } }
private static void ExportarHorarioGrupos(Excel.Workbook workBook, Excel.Worksheet workSheet, ClsIndividuo obj, FormExportar frm) { for (int grupo = 0; grupo < obj._SuperIndv.Grupos.GetLength(0); grupo++) // se ejecuta según la cantidad de grupos que haya { Console.WriteLine(" G R U P O : " + grupo); int[,] Horario; string[,] HorarioCompleto; string nombreHoja = ""; int bloqueColocar = 0; string letra = ""; int numero = 0; int bloqueReceso = 0; IndiceHoja++; workSheet = workBook.Worksheets[IndiceHoja]; // Se posiciona en la hoja según el índice char[] nombreLetras = obj._SuperIndv.DatosGrupos[grupo, 1].ToArray(); for (int n = 0; n < obj._SuperIndv.DatosGrupos.GetLength(0); n++) { if (Int32.Parse(obj._SuperIndv.DatosGrupos[n, 0]) == obj._SuperIndv.Grupos[grupo]) { nombreLetras = obj._SuperIndv.DatosGrupos[n, 1].ToArray(); if (nombreLetras.Length >= 30) // por si el nombre sobrepasa los 30 caracteres { for (int i = 0; i < 30; i++) { nombreHoja += nombreLetras[i]; } } break; } } for (int n = 0; n < nombreLetras.Length; n++) { nombreHoja += nombreLetras[n]; } workSheet.Name = nombreHoja; //Asigna el Nombre a las hojas frm.Invoke(new MethodInvoker(delegate() { frm.Actualizar(nombreHoja); })); ImprimeEncabezadoHoras(workSheet, obj._SuperIndv.Horas, obj._SuperIndv.Dias); Horario = HorarioGrupo(obj._SuperIndv.Grupos[grupo], obj, workBook, workSheet); HorarioCompleto = CompletarHorarioGrupo(Horario, obj._SuperIndv.DatosMaterias, obj._SuperIndv.DatosAula, obj._SuperIndv.DatosDocente); for (int i = 0; i < obj._SuperIndv.DatosBloques.GetLength(0); i++) // recorre por días { letra = Letras[i + 1]; // letra en la que se va a imprimir bloqueReceso = obj._SuperIndv.BloquesReceso[i]; // obtiene el bloque de receso del día numero = 4; // número desde el cual se comenzará a imprimir for (int j = 0; j < obj._SuperIndv.DatosBloques[i].GetLength(0); j++) // recorre por horas { bloqueColocar = obj._SuperIndv.DatosBloques[i][j]; // obtiene el bloque a colocar en if (bloqueColocar == bloqueReceso) { numero++; } else { for (int m = 0; m < HorarioCompleto.GetLength(0); m++) { if (bloqueColocar == Int32.Parse(HorarioCompleto[m, 0])) { workSheet.Cells[numero, letra] = HorarioCompleto[m, 1] + "\r\n" + HorarioCompleto[m, 2] + "\r\n" + HorarioCompleto[m, 3]; } } workSheet.Cells[numero, letra].Font.Size = 8; // Tamaño de la letra workSheet.Cells[numero, letra].Borders.LineStyle = Excel.XlLineStyle.xlContinuous; //Bordes workSheet.Cells[numero, letra].VerticalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; // Alineación Vertical workSheet.Cells[numero, letra].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; // Alineación Horizontal numero++; } } } } }
private static void ExportarHorarioDocente(Excel.Workbook workBook, Excel.Worksheet workSheet, ClsIndividuo obj, FormExportar frm) { for (int docente = 0; docente < obj._SuperIndv.Docentes.GetLength(0); docente++) // se ejecuta según la cantidad de docentes que haya { Console.WriteLine(" D O C E N T E : " + docente); int[,] Horario; string[,] HorarioCompleto; string nombreHoja = ""; int bloqueColocar = 0; string letra = ""; int numero = 0; int bloqueReceso = 0; IndiceHoja++; workSheet = workBook.Worksheets[IndiceHoja]; // Se posiciona en la hoja según el índice nombreHoja = NombreDocente(obj._SuperIndv.DatosDocente[docente, 1]); workSheet.Name = nombreHoja; //Asigna el Nombre a las hojas frm.Invoke(new MethodInvoker(delegate() { frm.Actualizar(nombreHoja); })); ImprimeEncabezadoHoras(workSheet, obj._SuperIndv.Horas, obj._SuperIndv.Dias); Horario = HorarioDocente(obj._SuperIndv.Docentes[docente], obj, workBook, workSheet); HorarioCompleto = CompletarHorarioDocente(Horario, obj._SuperIndv.DatosMaterias, obj._SuperIndv.DatosGrupos, obj._SuperIndv.DatosAula); for (int m = 0; m < Horario.GetLength(0); m++) { Console.WriteLine(Horario[m, 0] + " - " + Horario[m, 1] + " - " + Horario[m, 2] + " - " + Horario[m, 3]); } for (int i = 0; i < obj._SuperIndv.DatosBloques.GetLength(0); i++) { letra = Letras[i + 1]; bloqueReceso = obj._SuperIndv.BloquesReceso[i]; numero = 4; for (int j = 0; j < obj._SuperIndv.DatosBloques[i].GetLength(0); j++) { bloqueColocar = obj._SuperIndv.DatosBloques[i][j]; if (bloqueColocar == bloqueReceso) { numero++; } else { for (int m = 0; m < HorarioCompleto.GetLength(0); m++) { if (bloqueColocar == Int32.Parse(HorarioCompleto[m, 0])) { workSheet.Cells[numero, letra] = HorarioCompleto[m, 0] + "\r\n" + HorarioCompleto[m, 1] + "\r\n" + HorarioCompleto[m, 2] + "\r\n" + HorarioCompleto[m, 3]; } } workSheet.Cells[numero, letra].Font.Size = 8; // Tamaño de la letra workSheet.Cells[numero, letra].Borders.LineStyle = Excel.XlLineStyle.xlContinuous; //Bordes workSheet.Cells[numero, letra].VerticalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; // Alineación Vertical workSheet.Cells[numero, letra].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; // Alineación Horizontal numero++; } } } } }