Example usage for org.apache.poi.hssf.usermodel HSSFFont BOLDWEIGHT_BOLD

List of usage examples for org.apache.poi.hssf.usermodel HSSFFont BOLDWEIGHT_BOLD

Introduction

In this page you can find the example usage for org.apache.poi.hssf.usermodel HSSFFont BOLDWEIGHT_BOLD.

Prototype

short BOLDWEIGHT_BOLD

To view the source code for org.apache.poi.hssf.usermodel HSSFFont BOLDWEIGHT_BOLD.

Click Source Link

Document

Bold boldness (bold)

Usage

From source file:meditsfx.tools.ResultSetToExcel.java

public ResultSetToExcel(ResultSet resultSet, FormatType[] formatTypes, String sheetName) {
    workbook = new HSSFWorkbook();
    this.resultSet = resultSet;
    sheet = workbook.createSheet(sheetName);
    boldFont = workbook.createFont();/*from ww  w . j a  v a2  s.co m*/
    boldFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    format = workbook.createDataFormat();
    this.formatTypes = formatTypes;
    this.sheetname = sheetName;
}

From source file:mengenUeberdeckung.tests.bib.ExcelSheet3.java

License:Open Source License

/**
 * Diese Methode setzt den Tabellennamen und die berschriften fr die
 * Spalten einer Excel-Tabelle und initialisiert die Attribute
 * <CODE>workbook</CODE>, <CODE>selectedSheet</CODE> und <CODE>line</CODE>.
 *///ww  w .j a va2s.c  o  m
private void initSheet() {
    HSSFFont boldFont, italicFont; // verschiedene Schriftarten
    HSSFRow row; // Zeile
    HSSFCellStyle style; // Zellenattribute als style Objekt
    HSSFCell cell; // einzelnen Zelle

    // Zeilennummer auf Anfang setzen.
    line = 0;

    // Sheet anlegen.
    // Ein workbook scheint eine Menge von Excel-Sheets zu sein.
    workbook = new HSSFWorkbook();

    // Name im Excel Tab angeben.
    selectedSheet = workbook.createSheet(tableName);

    // Initialisierung der Schriftarten.
    boldFont = workbook.createFont();
    boldFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    italicFont = workbook.createFont();
    italicFont.setItalic(true);

    // Erste Header-Zeile in bold eintragen.
    row = selectedSheet.createRow(line);
    style = workbook.createCellStyle();
    style.setFont(boldFont);

    cell = row.createCell((short) 1);
    cell.setCellStyle(style);
    cell.setCellValue(header1);

    line++;

    // Zweite Header-Zeile in bold eintragen.
    row = selectedSheet.createRow(line);
    style = workbook.createCellStyle();
    style.setFont(boldFont);

    cell = row.createCell((short) 1);
    cell.setCellStyle(style);
    cell.setCellValue(header2);

    line++;

    // Leerzeile in Tabelle aufnehmen.
    row = selectedSheet.createRow(line);

    line++;

    // Spaltentitel in italic eintragen.
    row = selectedSheet.createRow(line);
    style = workbook.createCellStyle();
    style.setFont(italicFont);

    cell = row.createCell((short) 0);
    cell.setCellStyle(style);
    cell.setCellValue("problemname");

    cell = row.createCell((short) 1);
    cell.setCellStyle(style);
    cell.setCellValue("runtime");

    cell = row.createCell((short) 2);
    cell.setCellStyle(style);
    cell.setCellValue("solutionCost");

    line++;
}

From source file:mx.avanti.siract.ui.FiltrosBeanUI.java

public void Export2ExcelSemaforoProgramasEd() throws Throwable {
    //variables listaux
    ReporteAux reporteUI = new ReporteAux();

    // objeto de hoja de excel
    HSSFWorkbook workbook = new HSSFWorkbook();
    String nombreLibro = "";
    //guardamos imagen UABC en Documento
    URL location = FiltrosBeanUI.class.getProtectionDomain().getCodeSource().getLocation();
    String path = location.getFile();
    String replace = path.replace("FiltrosBeanUI.class", "uabclogo.png");
    //InputStream uabc_image = new FileInputStream(replace);
    //InputStream uabc_image = new FileInputStream("C://decode/uabclogo.png");
    InputStream uabc_image = new FileInputStream("/home/user/decode/uabclogo.png");
    byte[] bytes = IOUtils.toByteArray(uabc_image);
    int uabcLogo = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
    uabc_image.close();//from  w ww  . j a v a 2  s  .  c  o m

    //definimos estilo a celda titulo de los encabezados con logo escuela
    HSSFCellStyle style = workbook.createCellStyle();
    HSSFFont font = workbook.createFont();
    font.setFontName(HSSFFont.FONT_ARIAL);
    font.setFontHeightInPoints((short) 20);
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    font.setColor(HSSFColor.GREEN.index);
    style.setFont(font);

    //setCellStyle(style); 

    //definimos los bordes de celdas en tabla
    HSSFCellStyle borderstabla = workbook.createCellStyle();
    borderstabla.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    borderstabla.setBorderTop(HSSFCellStyle.BORDER_THIN);
    borderstabla.setBorderRight(HSSFCellStyle.BORDER_THIN);
    borderstabla.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    font = workbook.createFont();
    borderstabla.setFont(font);

    //definimos el estilo de las cabezeras de una tabla
    HSSFCellStyle headerTabla = workbook.createCellStyle();
    HSSFFont fontwit = workbook.createFont();
    fontwit.setColor(HSSFColor.WHITE.index);
    headerTabla.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    headerTabla.setBorderTop(HSSFCellStyle.BORDER_THIN);
    headerTabla.setBorderRight(HSSFCellStyle.BORDER_THIN);
    headerTabla.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    headerTabla.setFillForegroundColor(HSSFColor.GREEN.index);
    headerTabla.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    headerTabla.setFont(fontwit);
    //aqui cambie
    headerTabla.setWrapText(true);
    //aqui cambie

    //if(criterio.equalsIgnoreCase("programa_educativo")){
    HSSFSheet sheet = workbook.createSheet("Programas Educativos");
    nombreLibro = "- Director";

    //  if(reporte.equalsIgnoreCase("entregados")){
    nombreLibro = "RACT General " + nombreLibro;

    //definimos encabezado
    sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);

    HSSFRow row1 = sheet.createRow(7);
    row1.setHeight((short) 600);
    HSSFCell cell = row1.createCell(1);
    cell.setCellValue(
            "Concentrado de Reporte de Avance de Contenido Temtico General  por Programa Educativo");
    cell.setCellStyle(style);

    //                HSSFRow row1 = sheet.createRow(14);
    //                row1.setHeightInPoints(56);
    //                HSSFRow row2 = sheet.createRow(28);
    //                row2.setHeightInPoints(56);
    //                HSSFRow row3 = sheet.createRow(42);
    //                row3.setHeightInPoints(56);

    //aqui cambie jesus ruelas
    //for(int i=0;i<28;i++){
    //                 sheet.autoSizeColumn(1);
    //                 sheet.autoSizeColumn(2);
    //                 sheet.autoSizeColumn(3);
    //                 sheet.autoSizeColumn(4);

    //merge cells de Total de RACT General de + ProgEd
    sheet.addMergedRegion(new CellRangeAddress(13, 13, 1, 5));
    sheet.addMergedRegion(new CellRangeAddress(13, 13, 7, 11));
    sheet.addMergedRegion(new CellRangeAddress(13, 13, 13, 17));
    sheet.addMergedRegion(new CellRangeAddress(13, 13, 19, 23));
    sheet.addMergedRegion(new CellRangeAddress(13, 13, 25, 29));

    sheet.addMergedRegion(new CellRangeAddress(27, 27, 1, 5));
    sheet.addMergedRegion(new CellRangeAddress(27, 27, 7, 11));
    sheet.addMergedRegion(new CellRangeAddress(27, 27, 13, 17));
    sheet.addMergedRegion(new CellRangeAddress(27, 27, 19, 23));
    sheet.addMergedRegion(new CellRangeAddress(27, 27, 25, 29));

    sheet.addMergedRegion(new CellRangeAddress(41, 41, 1, 5));
    sheet.addMergedRegion(new CellRangeAddress(41, 41, 7, 11));
    sheet.addMergedRegion(new CellRangeAddress(41, 41, 13, 17));
    sheet.addMergedRegion(new CellRangeAddress(41, 41, 19, 23));
    sheet.addMergedRegion(new CellRangeAddress(41, 41, 25, 29));

    sheet.addMergedRegion(new CellRangeAddress(55, 55, 1, 5));
    sheet.addMergedRegion(new CellRangeAddress(55, 55, 7, 11));
    sheet.addMergedRegion(new CellRangeAddress(55, 55, 13, 17));
    sheet.addMergedRegion(new CellRangeAddress(55, 55, 19, 23));
    sheet.addMergedRegion(new CellRangeAddress(55, 55, 25, 29));

    sheet.addMergedRegion(new CellRangeAddress(69, 69, 1, 5));
    sheet.addMergedRegion(new CellRangeAddress(69, 69, 7, 11));
    sheet.addMergedRegion(new CellRangeAddress(69, 69, 13, 17));
    sheet.addMergedRegion(new CellRangeAddress(69, 69, 19, 23));
    sheet.addMergedRegion(new CellRangeAddress(69, 69, 25, 29));

    //merge cells de programa educativo
    sheet.addMergedRegion(new CellRangeAddress(11, 11, 2, 3));
    sheet.addMergedRegion(new CellRangeAddress(11, 11, 8, 9));
    sheet.addMergedRegion(new CellRangeAddress(11, 11, 14, 15));
    sheet.addMergedRegion(new CellRangeAddress(11, 11, 20, 21));
    sheet.addMergedRegion(new CellRangeAddress(11, 11, 26, 27));

    sheet.addMergedRegion(new CellRangeAddress(25, 25, 2, 3));
    sheet.addMergedRegion(new CellRangeAddress(25, 25, 8, 9));
    sheet.addMergedRegion(new CellRangeAddress(25, 25, 14, 15));
    sheet.addMergedRegion(new CellRangeAddress(25, 25, 20, 21));
    sheet.addMergedRegion(new CellRangeAddress(25, 25, 26, 27));

    sheet.addMergedRegion(new CellRangeAddress(39, 39, 2, 3));
    sheet.addMergedRegion(new CellRangeAddress(39, 39, 8, 9));
    sheet.addMergedRegion(new CellRangeAddress(39, 39, 14, 15));
    sheet.addMergedRegion(new CellRangeAddress(39, 39, 20, 21));
    sheet.addMergedRegion(new CellRangeAddress(39, 39, 26, 27));

    sheet.addMergedRegion(new CellRangeAddress(53, 53, 2, 3));
    sheet.addMergedRegion(new CellRangeAddress(53, 53, 8, 9));
    sheet.addMergedRegion(new CellRangeAddress(53, 53, 14, 15));
    sheet.addMergedRegion(new CellRangeAddress(53, 53, 20, 21));
    sheet.addMergedRegion(new CellRangeAddress(53, 53, 26, 27));

    sheet.addMergedRegion(new CellRangeAddress(67, 67, 2, 3));
    sheet.addMergedRegion(new CellRangeAddress(67, 67, 8, 9));
    sheet.addMergedRegion(new CellRangeAddress(67, 67, 14, 15));
    sheet.addMergedRegion(new CellRangeAddress(67, 67, 20, 21));
    sheet.addMergedRegion(new CellRangeAddress(67, 67, 26, 27));
    //}
    //aqui cambie jesus ruelas

    //mostraremos tabla con
    // Programas educativos //  Total Racs entregados // Total Esperados
    //preparamos informacion para insertar
    List<Programaeducativo> programasByUnidad = getProgramasByUnidad();
    List<Planestudio> planesByPrograma = getPlanesByPrograma();
    ArrayList<String> listaProgEdContar = esperadosDelegate.getSemadoroProgEdValor(1);

    //setCellStyle(style); 

    //setExDat(sheet, 7, 1, "Concentrado de Reporte de Avance de Contenido Temtico General  por Programa Educativo");

    //imrpiimiremos la tabla
    // Definimos los encabezados de la tabla

    int pos = 0;

    int row = 11;
    int col = 1;

    Boolean bandPe = false;

    for (Programaeducativo pe : programasByUnidad) {
        for (String peContar : listaProgEdContar) {

            String[] contarEntEspProgEd;

            if (listaProgEdContar.size() >= pos) {
                if (peContar.contains(pe.getPednombre())) {

                    contarEntEspProgEd = listaProgEdContar.get(pos).split("-");

                    setExDat(sheet, row, col, "Clave");
                    setExDat(sheet, row, col + 1, "Programa Educativo");
                    setExDat(sheet, row, col + 3, "Plan de Estudios");
                    setExDat(sheet, row, col + 4, "Responsable");

                    //    if (contarEntEspProgEd[0].equalsIgnoreCase(programasByUnidad.get(0).getPednombre())) {

                    setExDat(sheet, row + 1, col, pe.getPedclave());
                    setExDat(sheet, row + 1, col + 1, pe.getPednombre());
                    if (!(planesByPrograma.isEmpty())) {
                        setExDat(sheet, row + 1, col + 2, planesByPrograma.get(0).getPesvigenciaPlan());
                    }
                    setExDat(sheet, row + 1, col + 3, "");

                    //   }

                    setExDat(sheet, row + 2, col,
                            "Total de RACT General de " + programasByUnidad.get(0).getPednombre());

                    setExDat(sheet, row + 3, col, "Resumen de totales \r\n por numero de RACT");
                    setExDat(sheet, row + 3, col + 1, "Total entregados");
                    setExDat(sheet, row + 3, col + 2, "%");
                    setExDat(sheet, row + 3, col + 3, "Total esperados");
                    setExDat(sheet, row + 3, col + 4, "%");

                    sheet.getRow(row + 3).getCell(1);//aqui modifique jesus ruelas

                    float porcentEnt = (Float.parseFloat(contarEntEspProgEd[1]))
                            / (Float.parseFloat(contarEntEspProgEd[2])) * 100;

                    float porcentEsp = 100 - porcentEnt;

                    //                setExDat(sheet, 15, 1, "Todos los RACTS");
                    //                setExDat(sheet, 15, 2, contarEntEspProgEd[1]);
                    //                setExDat(sheet, 15, 3, "" + porcentEnt + "%");
                    //                setExDat(sheet, 15, 4, contarEntEspProgEd[2]);
                    //                setExDat(sheet, 15, 5, ""  + porcentEsp + "%");
                    //String[] contarEntEspProgEd;
                    String[] contarEntRact1;
                    String[] contarEntRact2;
                    String[] contarEntRact3;
                    int esperadosProgEdUnicoRact = 0;

                    contarEntRact1 = contarEntEspProgEd[3].split(":");
                    contarEntRact2 = contarEntEspProgEd[4].split(":");
                    contarEntRact3 = contarEntEspProgEd[5].split(":");

                    esperadosProgEdUnicoRact = (Integer.parseInt(contarEntEspProgEd[2])) / 3;

                    float contarPorcentEntRact1 = (Float.parseFloat(contarEntRact1[1]))
                            / ((float) esperadosProgEdUnicoRact) * 100;
                    float contarPorcentEntRact2 = (Float.parseFloat(contarEntRact2[1]))
                            / ((float) esperadosProgEdUnicoRact) * 100;
                    float contarPorcentEntRact3 = (Float.parseFloat(contarEntRact3[1]))
                            / ((float) esperadosProgEdUnicoRact) * 100;

                    float contarPorcentEspRact1 = 100 - contarPorcentEntRact1;
                    float contarPorcentEspRact2 = 100 - contarPorcentEntRact2;
                    float contarPorcentEspRact3 = 100 - contarPorcentEntRact3;

                    setExDat(sheet, row + 4, col, "RACT 1");
                    setExDat(sheet, row + 4, col + 1, contarEntRact1[1]);
                    setExDat(sheet, row + 4, col + 2, "" + contarPorcentEntRact1 + "%");
                    setExDat(sheet, row + 4, col + 3, esperadosProgEdUnicoRact);
                    setExDat(sheet, row + 4, col + 4, "" + contarPorcentEspRact1 + "%");

                    setExDat(sheet, row + 5, col, "RACT 2");
                    setExDat(sheet, row + 5, col + 1, contarEntRact2[1]);
                    setExDat(sheet, row + 5, col + 2, "" + contarPorcentEntRact2 + "%");
                    setExDat(sheet, row + 5, col + 3, esperadosProgEdUnicoRact);
                    setExDat(sheet, row + 5, col + 4, "" + contarPorcentEspRact2 + "%");

                    setExDat(sheet, row + 6, col, "RACT 3");
                    setExDat(sheet, row + 6, col + 1, contarEntRact3[1]);
                    setExDat(sheet, row + 6, col + 2, "" + contarPorcentEntRact3 + "%");
                    setExDat(sheet, row + 6, col + 3, esperadosProgEdUnicoRact);
                    setExDat(sheet, row + 6, col + 4, "" + contarPorcentEspRact3 + "%");

                    setExDat(sheet, row + 7, col, "Todos los RACTS");
                    setExDat(sheet, row + 7, col + 1, contarEntEspProgEd[1]);
                    setExDat(sheet, row + 7, col + 2, "" + porcentEnt + "%");
                    setExDat(sheet, row + 7, col + 3, contarEntEspProgEd[2]);
                    setExDat(sheet, row + 7, col + 4, "" + porcentEsp + "%");

                    setStyleCell(sheet, headerTabla, row, col);
                    setStyleCell(sheet, headerTabla, row, col + 1);
                    setStyleCell(sheet, headerTabla, row, col + 2);
                    setStyleCell(sheet, headerTabla, row, col + 3);
                    setStyleCell(sheet, headerTabla, row, col + 4);

                    setStyleCell(sheet, headerTabla, row + 2, col);
                    setStyleCell(sheet, headerTabla, row + 2, col + 1);
                    setStyleCell(sheet, headerTabla, row + 2, col + 2);
                    setStyleCell(sheet, headerTabla, row + 2, col + 3);

                    setStyleCell(sheet, headerTabla, row + 3, col);
                    setStyleCell(sheet, headerTabla, row + 3, col + 1);
                    setStyleCell(sheet, headerTabla, row + 3, col + 2);
                    setStyleCell(sheet, headerTabla, row + 3, col + 3);
                    setStyleCell(sheet, headerTabla, row + 3, col + 4);

                    bandPe = true;

                    pos++;
                }

            }
            if (bandPe == true) {
                if (col >= 25) {
                    row = row + 14;
                    col = -5;
                }
                col = col + 6;
                bandPe = false;
            }
        }
    }
    /*sheet.autoSizeColumn(2);
    sheet.autoSizeColumn(3);
    sheet.autoSizeColumn(4);*/

    //imprimimos la informacion en su lugar

    int prow = 14;
    for (Programaeducativo programa : programasByUnidad) {
        if (selectProgramEducativo.contains(programa.getPedid().toString())) {
            setExDat(sheet, prow, 17, programa.getPednombre());
            setExDat(sheet, prow, 18, 75);
            setExDat(sheet, prow, 19, 100);
            prow++;
        }
    }
    //  }
    //}

    //finalizamos con
    //metodo para descargar el objeto
    System.out.println("Generando Excel");
    if (criterio != "" && reporte != "") {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        ExternalContext externalContext = facesContext.getExternalContext();
        externalContext.setResponseContentType("application/vnd.ms-excel");
        externalContext.setResponseHeader("Content-Disposition",
                "attachment; filename=\"" + nombreLibro + ".xls\"");
        workbook.write(externalContext.getResponseOutputStream());
        facesContext.responseComplete();
    } else {
        System.out.println("No se Genero por: Criterio->" + criterio + " , Reporte->" + reporte);
    }
}

From source file:mx.avanti.siract.ui.FiltrosBeanUI.java

public void Export2Excel() throws Throwable {
    //variables listaux
    ReporteAux reporteUI = new ReporteAux();

    // objeto de hoja de excel
    HSSFWorkbook workbook = new HSSFWorkbook();
    String nombreLibro = "";
    //guardamos imagen UABC en Documento
    URL location = FiltrosBeanUI.class.getProtectionDomain().getCodeSource().getLocation();
    String path = location.getFile();
    String replace = path.replace("FiltrosBeanUI.class", "uabclogo.png");
    //InputStream uabc_image = new FileInputStream(replace);
    //InputStream uabc_image = new FileInputStream("C://decode/uabclogo.png");
    InputStream uabc_image = new FileInputStream("/home/user/decode/uabclogo.png");
    byte[] bytes = IOUtils.toByteArray(uabc_image);
    int uabcLogo = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
    uabc_image.close();/*from   ww w.  j  a  v  a2s.  c o  m*/

    //definimos estilo a celda titulo de los encabezados con logo escuela
    HSSFCellStyle style = workbook.createCellStyle();
    HSSFFont font = workbook.createFont();
    font.setFontName(HSSFFont.FONT_ARIAL);
    font.setFontHeightInPoints((short) 20);
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    font.setColor(HSSFColor.GREEN.index);
    style.setFont(font);

    //definimos los bordes de celdas en tabla
    HSSFCellStyle borderstabla = workbook.createCellStyle();
    borderstabla.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    borderstabla.setBorderTop(HSSFCellStyle.BORDER_THIN);
    borderstabla.setBorderRight(HSSFCellStyle.BORDER_THIN);
    borderstabla.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    font = workbook.createFont();
    borderstabla.setFont(font);

    //definimos el estilo de las cabezeras de una tabla
    HSSFCellStyle headerTabla = workbook.createCellStyle();
    HSSFFont fontwit = workbook.createFont();
    fontwit.setColor(HSSFColor.WHITE.index);
    headerTabla.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    headerTabla.setBorderTop(HSSFCellStyle.BORDER_THIN);
    headerTabla.setBorderRight(HSSFCellStyle.BORDER_THIN);
    headerTabla.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    headerTabla.setFillForegroundColor(HSSFColor.GREEN.index);
    headerTabla.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    headerTabla.setFont(fontwit);

    if (criterio.equalsIgnoreCase("programa_educativo")) {
        HSSFSheet sheet = workbook.createSheet("Graficos");
        nombreLibro = "- Programa Educativo";

        if (reporte.equalsIgnoreCase("entregados")) {
            nombreLibro = "Entregados " + nombreLibro;

            //definimos encabezado
            sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);

            //mostraremos tabla con
            // Programas educativos //  Total Racs entregados // Total Esperados
            //preparamos informacion para insertar
            List<Programaeducativo> programasByUnidad = getProgramasByUnidad();

            //imrpiimiremos la tabla
            // Definimos los encabezados de la tabla
            setExDat(sheet, 13, 17, "Programa Educativo");
            setExDat(sheet, 13, 18, "Total de RACT Entregados");
            setExDat(sheet, 13, 19, "Total de RACT Esperados");
            setExDat(sheet, 13, 20, " ");

            setStyleCell(sheet, headerTabla, 13, 17);
            setStyleCell(sheet, headerTabla, 13, 18);
            setStyleCell(sheet, headerTabla, 13, 19);

            //imprimimos la informacion en su lugar

            int prow = 14;
            for (Programaeducativo programa : programasByUnidad) {
                if (selectProgramEducativo.contains(programa.getPedid().toString())) {
                    setExDat(sheet, prow, 17, programa.getPednombre());
                    setExDat(sheet, prow, 18, 75);
                    setExDat(sheet, prow, 19, 100);
                    prow++;
                }
            }
            //Se obtiene consulta con los parametros seleccionados
            ArrayList<String> entregados = esperadosDelegate.getFullProgramaEdu(unidadacademica.getUacid(),
                    Plan, Programa, Ciclo);

            //agregamos programacion de grafico
            if (tipografico.equalsIgnoreCase("barras")) {
                BarChartCL demo1 = new BarChartCL("Estadsticas de Reportes Entregados por Programa Educativo",
                        entregados, "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }
            if (tipografico.equalsIgnoreCase("linea")) {
                LineChartDemo1 demo1 = new LineChartDemo1(
                        "Estadsticas de Reportes Entregados por Programa Educativo", entregados,
                        "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }
            if (tipografico.equalsIgnoreCase("pastel")) {
                PieChartDemo1 demo1 = new PieChartDemo1(
                        "Estadsticas de Reportes Entregados por Programa Educativo", entregados,
                        "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }

            //Se acaba grafico
            //recorreremos todo el list aux para revisar los programas educativos que utiliza
            //aun que podemos usar el selectProgramaeducativo

            /* Programacion de Hojas*/
            for (Programaeducativo programa : programasByUnidad) {
                if (selectProgramEducativo.contains(Integer.toString(programa.getPedclave()))) {
                    //aqui creamos la hoja para el programa
                    sheet = workbook.createSheet(programa.getPednombre());
                    //sheet = cabezeraGeneralExcel(sheet,uabcLogo,style); lo moveremos al final de la hoja para que no sea mdoficada la imagen
                    setExDat(sheet, 8, 3,
                            "Concentrado de Reporte de Avance de Contenido Temtico de Entregados por Programa Educativo");

                    boolean autotam = true;

                    //informacion de programa educativo tabla
                    setExDat(sheet, 14, 1, "Clave");
                    setExDat(sheet, 14, 2, "Programa Educativo");
                    setExDat(sheet, 14, 3, "Plan de Estudios");
                    setExDat(sheet, 14, 4, "Responsable");

                    setStyleCell(sheet, headerTabla, 14, 1);
                    setStyleCell(sheet, headerTabla, 14, 2);
                    setStyleCell(sheet, headerTabla, 14, 3);
                    setStyleCell(sheet, headerTabla, 14, 4);

                    //llenado de informacion
                    List<Planestudio> planes = filtrosBeanHelper.getConsultaDelegate()
                            .getPlanesByPrograma(programa.getPedclave());
                    setExDat(sheet, 15, 1, programa.getPedclave());
                    setExDat(sheet, 15, 2, programa.getPednombre());
                    setExDat(sheet, 15, 3, planes.get(0).getPesvigenciaPlan());
                    setExDat(sheet, 15, 4, "Llenar en tabla");
                    setStyleCell(sheet, borderstabla, 15, 1);
                    setStyleCell(sheet, borderstabla, 15, 2);
                    setStyleCell(sheet, borderstabla, 15, 3);
                    setStyleCell(sheet, borderstabla, 15, 4);

                    boolean uno = true;
                    int currow = 20;

                    Planestudio planeact = new Planestudio();
                    for (Planestudio planeactn : planes) {
                        planeact = planeactn;
                        break;
                    }

                    ReporteAvanceAux tempAux = new ReporteAvanceAux();
                    for (ReporteAvanceAux aux : listaAux) {
                        tempAux = aux;
                        break;
                    }

                    //intentaremos usar un solo plan
                    setExDat(sheet, currow, 1, "?reas de conocimiento");
                    setStyleCell(sheet, headerTabla, currow, 1);
                    currow++;
                    //cada plan de estudios tiene varias areas de conocimiento
                    //List<Areaconocimiento> areasConocimiento = filtrosBeanHelper.getConsultaDelegate().getAreasByPlan( tempAux.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo().getPlanestudio().getPesid() );
                    //List<Areaconocimiento> areasConocimiento = filtrosBeanHelper.getConsultaDelegate().getAreasByPlan( planeact.getPesid() );
                    List<Areaconocimiento> areasConocimiento = filtrosBeanHelper.getConsultaDelegate()
                            .getAreasByPlanClave(programa.getPedclave(),
                                    tempAux.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getPlanestudio().getPesvigenciaPlan());

                    for (Areaconocimiento areaCon : areasConocimiento) {
                        //clave , area de conocimiento, responsable
                        setExDat(sheet, currow, 1, "Clave");
                        setExDat(sheet, currow, 2, "?rea de conocimiento");
                        setExDat(sheet, currow, 3, "Responsable");
                        setStyleCell(sheet, headerTabla, currow, 1);
                        setStyleCell(sheet, headerTabla, currow, 2);
                        setStyleCell(sheet, headerTabla, currow, 3);

                        currow++;
                        setExDat(sheet, currow, 1, areaCon.getAcoclave()); //clave
                        setExDat(sheet, currow, 2, areaCon.getAconombre()); //area conociminto
                        setExDat(sheet, currow, 3, ""); //responsable

                        currow += 2;
                        //obtenemos las unidades de aprendisake
                        setExDat(sheet, currow, 1, "Clave unidad de aprendizaje");
                        setExDat(sheet, currow, 2, "Unidad de aprendizaje");
                        setExDat(sheet, currow, 3, "No. de empleado");
                        setExDat(sheet, currow, 4, "Nombre del profesor");
                        setExDat(sheet, currow, 5, "Grupo");
                        setExDat(sheet, currow, 6, "% Avance 1er reporte");
                        setExDat(sheet, currow, 7, "Fecha de elaboracin 1er RACT");
                        setExDat(sheet, currow, 8, "% Avance 2do reporte");
                        setExDat(sheet, currow, 9, "Fecha de elaboracin 2do RACT");
                        setExDat(sheet, currow, 10, "% Avance 3er reporte");
                        setExDat(sheet, currow, 11, "Fecha de elaboracin 3er RACT");

                        //autosize para la columna
                        if (autotam) {
                            sheet.autoSizeColumn(2);
                            sheet.autoSizeColumn(4);
                            sheet.autoSizeColumn(11);
                            autotam = false;
                        }

                        // para formatear toda la linea
                        for (int i = 1; i <= 11; i++) {
                            //tenemos qu aajustar texto
                            //tenemos que centrar el texto
                            //cambiar el color de fondo
                            setStyleCell(sheet, headerTabla, currow, i);
                        }

                        currow++;
                        //List<Unidadaprendizaje> unidadesAprendisaje = filtrosBeanHelper.getConsultaDelegate().getUnidadByArea(areaCon.getAcoclave());

                        //de ls listaAux separamos los los reportes que correspondan a la unidad de aprendisaje acutal
                        ArrayList<ReporteAvanceAux> tempListAux = new ArrayList<ReporteAvanceAux>();
                        for (ReporteAvanceAux aux : listaAux) {
                            if (aux.getAreaConocimiento().getAcoclave() == areaCon.getAcoclave()
                                    && programa.getPedclave() == aux.getReporteAvance()
                                            .getUnidadaprendizajeImparteProfesor().getGrupo().getPlanestudio()
                                            .getProgramaeducativo().getPedclave()) {
                                tempListAux.add(aux);
                            }
                        }

                        //List<UnidadaprendizajeImparteProfesor> unidadesProfesor  = filtrosBeanHelper.getConsultaDelegate().getUnidadesAprendisajeImparteProf(unidadApren.getUapid());
                        int uniprofeTemp = 0;
                        for (ReporteAvanceAux auxRacs : tempListAux) {

                            String nompreP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getPronombre();
                            String apellidoPP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoPaterno();
                            String apellidoPM = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoMaterno();
                            int claveUnidadApren = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje().getUapclave();
                            String nombreUnidad = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                    .getUapnombre();

                            uniprofeTemp = claveUnidadApren;
                            setExDat(sheet, currow, 1, claveUnidadApren); //clave
                            setExDat(sheet, currow, 2, nombreUnidad); //nombre unidad
                            //reporteAvance.unidadaprendizajeImparteProfesor.profesor.pronumeroEmpleado
                            setExDat(sheet, currow, 3,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                            .getProfesor().getPronumeroEmpleado()); //numero empleado
                            setExDat(sheet, currow, 4, apellidoPP + " " + apellidoPM + " " + nompreP); //nombre maestro
                            setExDat(sheet, currow, 5,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getGponumero()
                                            + "-"
                                            + auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                                    .getUiptipoSubgrupo()
                                            + "-" + auxRacs.getReporteAvance()
                                                    .getUnidadaprendizajeImparteProfesor().getUipsubgrupo()); //grupo numero

                            //marcamos bordes
                            for (int i = 1; i <= 5; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }
                            //tienne que ser entregados/enviados
                            if (auxRacs.getStatusRact1() != null) {
                                if (auxRacs.getStatusRact1().equalsIgnoreCase("Enviado")) {
                                    System.out.println("Entro a enviados 1");
                                    setExDat(sheet, currow, (4 + (1 * 2)), auxRacs.getPorcentAvanceRact1()); //% avance 7**
                                    setExDat(sheet, currow, (4 + (1 * 2) + 1),
                                            auxRacs.getFechaElaboracRact1().toString()); //fecha elabora 8***
                                    setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2)));
                                    setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2) + 1));
                                } else {
                                    setExDat(sheet, currow, (4 + (1 * 2)), " "); //% avance 7**
                                    setExDat(sheet, currow, (4 + (1 * 2) + 1), " "); //fecha elabora 8***
                                    setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2)));
                                    setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2) + 1));
                                }
                            } else {
                                setExDat(sheet, currow, (4 + (1 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (1 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact2() != null) {
                                if (auxRacs.getStatusRact2().equalsIgnoreCase("Enviado")) {
                                    setExDat(sheet, currow, (4 + (2 * 2)), auxRacs.getPorcentAvanceRact2()); //% avance 7**
                                    setExDat(sheet, currow, (4 + (2 * 2) + 1),
                                            auxRacs.getFechaElaboracRact2().toString()); //fecha elabora 8***
                                    setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2)));
                                    setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2) + 1));
                                } else {
                                    setExDat(sheet, currow, (4 + (2 * 2)), " "); //% avance 7**
                                    setExDat(sheet, currow, (4 + (2 * 2) + 1), " "); //fecha elabora 8***
                                    setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2)));
                                    setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2) + 1));
                                }
                            } else {
                                setExDat(sheet, currow, (4 + (2 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (2 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact3() != null) {
                                if (auxRacs.getStatusRact3().equalsIgnoreCase("Enviado")) {
                                    setExDat(sheet, currow, (4 + (3 * 2)), auxRacs.getPorcentAvanceRact3()); //% avance 7**
                                    setExDat(sheet, currow, (4 + (3 * 2) + 1),
                                            auxRacs.getFechaElaboracRact3().toString()); //fecha elabora 8***
                                    setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2)));
                                    setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2) + 1));
                                } else {
                                    setExDat(sheet, currow, (4 + (3 * 2)), " "); //% avance 7**
                                    setExDat(sheet, currow, (4 + (3 * 2) + 1), " "); //fecha elabora 8***
                                    setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2)));
                                    setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2) + 1));
                                }
                            } else {
                                setExDat(sheet, currow, (4 + (3 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (3 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2) + 1));
                            }

                            currow++;
                        }

                        currow += 2;
                    }

                    //aqui modifique Jesus Ruelas  - Entregados
                    //aqui cambie
                    headerTabla.setWrapText(true);
                    //aqui cambie

                    //aqui cambie jesus ruelas

                    //for(int i=0;i<28;i++){
                    //                 sheet.autoSizeColumn(1);
                    //                 sheet.autoSizeColumn(2);
                    //                 sheet.autoSizeColumn(3);
                    //                 sheet.autoSizeColumn(4);

                    //merge cells de Total de RACT General de + ProgEd
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,1,5));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,7,11));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,13,17));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,19,23));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,25,29));

                    //}
                    //aqui cambie jesus ruelas

                    //mostraremos tabla con
                    // Programas educativos //  Total Racs entregados // Total Esperados
                    //preparamos informacion para insertar
                    //         List<Programaeducativo> programasByUnidad = getProgramasByUnidad();
                    List<Planestudio> planesByPrograma = getPlanesByPrograma();
                    int UACid = 1;
                    ArrayList<String> listaProgEdContar = esperadosDelegate.getSemadoroProgEdValor(UACid);

                    //setCellStyle(style); 

                    //setExDat(sheet, 7, 1, "Concentrado de Reporte de Avance de Contenido Temtico General  por Programa Educativo");

                    //imrpiimiremos la tabla
                    // Definimos los encabezados de la tabla

                    int pos = 0;

                    int row = currow + 4;
                    int col = 1;

                    Boolean bandPe = false;

                    //for (Programaeducativo pe : programasByUnidad) {
                    for (String peContar : listaProgEdContar) {

                        String[] contarEntEspProgEd;

                        if (listaProgEdContar.size() >= pos) {
                            if (peContar.contains(programa.getPednombre())) {

                                contarEntEspProgEd = listaProgEdContar.get(pos).split("-");

                                setExDat(sheet, row, col, "Clave");
                                setExDat(sheet, row, col + 1, "Programa Educativo");
                                setExDat(sheet, row, col + 3, "Plan de Estudios");
                                setExDat(sheet, row, col + 4, "Responsable");

                                //    if (contarEntEspProgEd[0].equalsIgnoreCase(programasByUnidad.get(0).getPednombre())) {

                                setExDat(sheet, row + 1, col, programa.getPedclave());
                                setExDat(sheet, row + 1, col + 1, programa.getPednombre());
                                if (!(planesByPrograma.isEmpty())) {
                                    setExDat(sheet, row + 1, col + 2,
                                            planesByPrograma.get(0).getPesvigenciaPlan());
                                }
                                setExDat(sheet, row + 1, col + 3, "");

                                //   }

                                //                  sheet.addMergedRegion(new CellRangeAddress(row+2,col,5,1));
                                setExDat(sheet, row + 2, col,
                                        "Total de RACT General de " + programa.getPednombre());

                                setExDat(sheet, row + 3, col, "Resumen de totales \r\n por numero de RACT");
                                setExDat(sheet, row + 3, col + 1, "Total entregados");
                                setExDat(sheet, row + 3, col + 2, "%");
                                setExDat(sheet, row + 3, col + 3, "Total esperados");
                                setExDat(sheet, row + 3, col + 4, "%");

                                sheet.getRow(row + 3).getCell(1);//aqui modifique jesus ruelas

                                float porcentEnt = (Float.parseFloat(contarEntEspProgEd[1]))
                                        / (Float.parseFloat(contarEntEspProgEd[2])) * 100;

                                float porcentEsp = 100 - porcentEnt;

                                //                setExDat(sheet, 15, 1, "Todos los RACTS");
                                //                setExDat(sheet, 15, 2, contarEntEspProgEd[1]);
                                //                setExDat(sheet, 15, 3, "" + porcentEnt + "%");
                                //                setExDat(sheet, 15, 4, contarEntEspProgEd[2]);
                                //                setExDat(sheet, 15, 5, ""  + porcentEsp + "%");
                                //String[] contarEntEspProgEd;
                                String[] contarEntRact1;
                                String[] contarEntRact2;
                                String[] contarEntRact3;
                                int esperadosProgEdUnicoRact = 0;

                                contarEntRact1 = contarEntEspProgEd[3].split(":");
                                contarEntRact2 = contarEntEspProgEd[4].split(":");
                                contarEntRact3 = contarEntEspProgEd[5].split(":");

                                esperadosProgEdUnicoRact = (Integer.parseInt(contarEntEspProgEd[2])) / 3;

                                float contarPorcentEntRact1 = (Float.parseFloat(contarEntRact1[1]))
                                        / ((float) esperadosProgEdUnicoRact) * 100;
                                float contarPorcentEntRact2 = (Float.parseFloat(contarEntRact2[1]))
                                        / ((float) esperadosProgEdUnicoRact) * 100;
                                float contarPorcentEntRact3 = (Float.parseFloat(contarEntRact3[1]))
                                        / ((float) esperadosProgEdUnicoRact) * 100;

                                float contarPorcentEspRact1 = 100 - contarPorcentEntRact1;
                                float contarPorcentEspRact2 = 100 - contarPorcentEntRact2;
                                float contarPorcentEspRact3 = 100 - contarPorcentEntRact3;

                                setExDat(sheet, row + 4, col, "RACT 1");
                                setExDat(sheet, row + 4, col + 1, contarEntRact1[1]);
                                setExDat(sheet, row + 4, col + 2, "" + contarPorcentEntRact1 + "%");
                                setExDat(sheet, row + 4, col + 3, esperadosProgEdUnicoRact);
                                setExDat(sheet, row + 4, col + 4, "" + contarPorcentEspRact1 + "%");

                                setExDat(sheet, row + 5, col, "RACT 2");
                                setExDat(sheet, row + 5, col + 1, contarEntRact2[1]);
                                setExDat(sheet, row + 5, col + 2, "" + contarPorcentEntRact2 + "%");
                                setExDat(sheet, row + 5, col + 3, esperadosProgEdUnicoRact);
                                setExDat(sheet, row + 5, col + 4, "" + contarPorcentEspRact2 + "%");

                                setExDat(sheet, row + 6, col, "RACT 3");
                                setExDat(sheet, row + 6, col + 1, contarEntRact3[1]);
                                setExDat(sheet, row + 6, col + 2, "" + contarPorcentEntRact3 + "%");
                                setExDat(sheet, row + 6, col + 3, esperadosProgEdUnicoRact);
                                setExDat(sheet, row + 6, col + 4, "" + contarPorcentEspRact3 + "%");

                                setExDat(sheet, row + 7, col, "Todos los RACTS");
                                setExDat(sheet, row + 7, col + 1, contarEntEspProgEd[1]);
                                setExDat(sheet, row + 7, col + 2, "" + porcentEnt + "%");
                                setExDat(sheet, row + 7, col + 3, contarEntEspProgEd[2]);
                                setExDat(sheet, row + 7, col + 4, "" + porcentEsp + "%");

                                setStyleCell(sheet, headerTabla, row, col);
                                setStyleCell(sheet, headerTabla, row, col + 1);
                                setStyleCell(sheet, headerTabla, row, col + 2);
                                setStyleCell(sheet, headerTabla, row, col + 3);
                                setStyleCell(sheet, headerTabla, row, col + 4);

                                setStyleCell(sheet, headerTabla, row + 2, col);
                                setStyleCell(sheet, headerTabla, row + 2, col + 1);
                                setStyleCell(sheet, headerTabla, row + 2, col + 2);
                                setStyleCell(sheet, headerTabla, row + 2, col + 3);

                                setStyleCell(sheet, headerTabla, row + 3, col);
                                setStyleCell(sheet, headerTabla, row + 3, col + 1);
                                setStyleCell(sheet, headerTabla, row + 3, col + 2);
                                setStyleCell(sheet, headerTabla, row + 3, col + 3);
                                setStyleCell(sheet, headerTabla, row + 3, col + 4);

                                bandPe = true;

                                pos++;
                            }

                        }
                        //               if (bandPe == true) {
                        //                   if (col >= 25) {
                        //                       row = row + 14;
                        //                       col = -5;
                        //                   }
                        //                   col = col + 6;
                        //                   bandPe = false;
                        //               }
                        pos++;
                    }
                    //}
                    //aqui modifique Jesus Ruelas

                    sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);
                } // fin del la comparacon de plan
            } // fin del for por plan de estudios

        } // fin de si es por entregados if(entregados)

        if (reporte.equalsIgnoreCase("noentregados")) {
            nombreLibro = "No Entregados " + nombreLibro;

            //definimos encabezado
            sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);

            //mostraremos tabla con
            // Programas educativos //  Total Racs entregados // Total Esperados
            //preparamos informacion para insertar
            List<Programaeducativo> programasByUnidad = getProgramasByUnidad();

            //imrpiimiremos la tabla
            // Definimos los encabezados de la tabla
            setExDat(sheet, 13, 17, "Programa Educativo");
            setExDat(sheet, 13, 18, "Total de RACT Entregados");
            setExDat(sheet, 13, 19, "Total de RACT Esperados");
            setExDat(sheet, 13, 20, " ");

            setStyleCell(sheet, headerTabla, 13, 17);
            setStyleCell(sheet, headerTabla, 13, 18);
            setStyleCell(sheet, headerTabla, 13, 19);

            //imprimimos la informacion en su lugar

            int prow = 14;
            for (Programaeducativo programa : programasByUnidad) {
                if (selectProgramEducativo.contains(programa.getPedid().toString())) {
                    setExDat(sheet, prow, 17, programa.getPednombre());
                    setExDat(sheet, prow, 18, 75);
                    setExDat(sheet, prow, 19, 100);
                    prow++;
                }
            }
            //Se obtiene consulta con los parametros seleccionados
            ArrayList<String> entregados = esperadosDelegate.getFullProgramaEdu(unidadacademica.getUacid(),
                    Plan, Programa, Ciclo);

            //agregamos programacion de grafico
            if (tipografico.equalsIgnoreCase("barras")) {
                BarChartCL demo1 = new BarChartCL("Estadsticas de Reportes Entregados por Programa Educativo",
                        entregados, "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }
            if (tipografico.equalsIgnoreCase("linea")) {
                LineChartDemo1 demo1 = new LineChartDemo1(
                        "Estadsticas de Reportes Entregados por Programa Educativo", entregados,
                        "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }
            if (tipografico.equalsIgnoreCase("pastel")) {
                PieChartDemo1 demo1 = new PieChartDemo1(
                        "Estadsticas de Reportes Entregados por Programa Educativo", entregados,
                        "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }

            //Se acaba grafico
            //recorreremos todo el list aux para revisar los programas educativos que utiliza
            //aun que podemos usar el selectProgramaeducativo

            /* Programacion de Hojas*/
            for (Programaeducativo programa : programasByUnidad) {
                if (selectProgramEducativo.contains(Integer.toString(programa.getPedclave()))) {
                    sheet = workbook.createSheet(programa.getPednombre());
                    sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);
                    setExDat(sheet, 8, 3,
                            "Concentrado de Reporte de Avance de Contenido Temtico de Entregados por Programa Educativo");

                    boolean autotam = true;
                    //informacion de programa educativo tabla
                    setExDat(sheet, 14, 1, "Clave");
                    setExDat(sheet, 14, 2, "Programa Educativo");
                    setExDat(sheet, 14, 3, "Plan de Estudios");
                    setExDat(sheet, 14, 4, "Responsable");

                    setStyleCell(sheet, headerTabla, 14, 1);
                    setStyleCell(sheet, headerTabla, 14, 2);
                    setStyleCell(sheet, headerTabla, 14, 3);
                    setStyleCell(sheet, headerTabla, 14, 4);

                    //llenado de informacion
                    // se tiene imprimir por cada plan de estudios???

                    setExDat(sheet, 15, 1, programa.getPedclave());
                    setExDat(sheet, 15, 2, programa.getPednombre());
                    setExDat(sheet, 15, 3, "");
                    setExDat(sheet, 15, 4, "");
                    setStyleCell(sheet, borderstabla, 15, 1);
                    setStyleCell(sheet, borderstabla, 15, 2);
                    setStyleCell(sheet, borderstabla, 15, 3);
                    setStyleCell(sheet, borderstabla, 15, 4);

                    List<Planestudio> planes = filtrosBeanHelper.getConsultaDelegate()
                            .getPlanesByPrograma(programa.getPedid());
                    boolean uno = true;
                    int currow = 20;

                    ReporteAvanceAux tempAux = new ReporteAvanceAux();
                    for (ReporteAvanceAux aux : listaAux) {
                        tempAux = aux;
                        break;
                    }

                    //intentaremos usar un solo plan
                    setExDat(sheet, currow, 1, "?reas de conocimiento");
                    setStyleCell(sheet, headerTabla, currow, 1);
                    currow++;
                    //cada plan de estudios tiene varias areas de conocimiento
                    //List<Areaconocimiento> areasConocimiento = filtrosBeanHelper.getConsultaDelegate().getAreasByPlan( tempAux.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo().getPlanestudio().getPesid() );
                    List<Areaconocimiento> areasConocimiento = filtrosBeanHelper.getConsultaDelegate()
                            .getAreasByPlanClave(programa.getPedclave(),
                                    tempAux.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getPlanestudio().getPesvigenciaPlan());
                    for (Areaconocimiento areaCon : areasConocimiento) {
                        //clave , area de conocimiento, responsable
                        setExDat(sheet, currow, 1, "Clave");
                        setExDat(sheet, currow, 2, "?rea de conocimiento");
                        setExDat(sheet, currow, 3, "Responsable");
                        setStyleCell(sheet, headerTabla, currow, 1);
                        setStyleCell(sheet, headerTabla, currow, 2);
                        setStyleCell(sheet, headerTabla, currow, 3);

                        currow++;
                        setExDat(sheet, currow, 1, areaCon.getAcoclave()); //clave
                        setExDat(sheet, currow, 2, areaCon.getAconombre()); //area conociminto
                        setExDat(sheet, currow, 3, ""); //responsable

                        currow += 2;
                        //obtenemos las unidades de aprendisake
                        setExDat(sheet, currow, 1, "Clave unidad de aprendizaje");
                        setExDat(sheet, currow, 2, "Unidad de aprendizaje");
                        setExDat(sheet, currow, 3, "No. de empleado");
                        setExDat(sheet, currow, 4, "Nombre del profesor");
                        setExDat(sheet, currow, 5, "Grupo");
                        setExDat(sheet, currow, 6, "% Avance 1er reporte");
                        setExDat(sheet, currow, 7, "Fecha de elaboracin 1er RACT");
                        setExDat(sheet, currow, 8, "% Avance 2do reporte");
                        setExDat(sheet, currow, 9, "Fecha de elaboracin 2do RACT");
                        setExDat(sheet, currow, 10, "% Avance 3er reporte");
                        setExDat(sheet, currow, 11, "Fecha de elaboracin 3er RACT");
                        //autosize para la columna
                        if (autotam) {
                            sheet.autoSizeColumn(2);
                            sheet.autoSizeColumn(4);
                            sheet.autoSizeColumn(11);
                            autotam = false;
                        }
                        // para formatear toda la linea
                        for (int i = 1; i <= 11; i++) {
                            //tenemos qu aajustar texto
                            //tenemos que centrar el texto
                            //cambiar el color de fondo
                            setStyleCell(sheet, headerTabla, currow, i);
                        }

                        currow++;
                        //List<Unidadaprendizaje> unidadesAprendisaje = filtrosBeanHelper.getConsultaDelegate().getUnidadByArea(areaCon.getAcoclave());

                        //de ls listaAux separamos los los reportes que correspondan a la unidad de aprendisaje acutal
                        ArrayList<ReporteAvanceAux> tempListAux = new ArrayList<ReporteAvanceAux>();
                        for (ReporteAvanceAux aux : listaAux) {
                            if (aux.getAreaConocimiento() != null
                                    && aux.getAreaConocimiento().getAcoclave() == areaCon.getAcoclave()
                                    && programa.getPedclave() == aux.getReporteAvance()
                                            .getUnidadaprendizajeImparteProfesor().getGrupo().getPlanestudio()
                                            .getProgramaeducativo().getPedclave()) {
                                tempListAux.add(aux);
                            }
                        }

                        //List<UnidadaprendizajeImparteProfesor> unidadesProfesor  = filtrosBeanHelper.getConsultaDelegate().getUnidadesAprendisajeImparteProf(unidadApren.getUapid());
                        int uniprofeTemp = 0;
                        for (ReporteAvanceAux auxRacs : tempListAux) {

                            String nompreP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getPronombre();
                            String apellidoPP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoPaterno();
                            String apellidoPM = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoMaterno();
                            int claveUnidadApren = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje().getUapclave();
                            String nombreUnidad = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                    .getUapnombre();

                            uniprofeTemp = claveUnidadApren;
                            setExDat(sheet, currow, 1, claveUnidadApren); //clave
                            setExDat(sheet, currow, 2, nombreUnidad); //nombre unidad
                            //reporteAvance.unidadaprendizajeImparteProfesor.profesor.pronumeroEmpleado
                            setExDat(sheet, currow, 3,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                            .getProfesor().getPronumeroEmpleado()); //numero empleado
                            setExDat(sheet, currow, 4, apellidoPP + " " + apellidoPM + " " + nompreP); //nombre maestro
                            setExDat(sheet, currow, 5,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getGponumero()
                                            + "-"
                                            + auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                                    .getUiptipoSubgrupo()
                                            + "-" + auxRacs.getReporteAvance()
                                                    .getUnidadaprendizajeImparteProfesor().getUipsubgrupo()); //grupo numero

                            //marcamos bordes
                            for (int i = 6; i <= 11; i++) {
                                setExDat(sheet, currow, i, " ");
                            }
                            for (int i = 1; i <= 11; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }

                            //hasta aqui comente Jesus Ruelas - 4 nov 2015
                            //                                        //tienne que ser entregados/enviados
                            //                                        if(auxRacs.getStatusRact1()!=null){
                            //                                            
                            //                                            System.out.println("Entro a enviados 1");
                            //                                            setExDat(sheet, currow,(4 + (1*2)), auxRacs.getPorcentAvanceRact1() ); //% avance 7**
                            //                                            setExDat(sheet, currow,(4 + (1*2)+1), auxRacs.getFechaElaboracRact1().toString() ); //fecha elabora 8***
                            //                                            setStyleCell(sheet, borderstabla, currow, (4 + (1*2)));
                            //                                            setStyleCell(sheet, borderstabla, currow, (4 + (1*2)+1));
                            //                                            
                            //                                        }
                            //                                        else{
                            //                                            setExDat(sheet, currow,(4 + (1*2)), " " ); //% avance 7**
                            //                                            setExDat(sheet, currow,(4 + (1*2)+1), " " ); //fecha elabora 8***
                            //                                            setStyleCell(sheet, borderstabla, currow, (4 + (1*2)));
                            //                                            setStyleCell(sheet, borderstabla, currow, (4 + (1*2)+1));
                            //                                        }
                            //                                        
                            //                                        
                            //                                        if(auxRacs.getStatusRact2()!=null){
                            //                                           
                            //                                            setExDat(sheet, currow,(4 + (2*2)), auxRacs.getPorcentAvanceRact2() ); //% avance 7**
                            //                                            setExDat(sheet, currow,(4 + (2*2)+1), auxRacs.getFechaElaboracRact2().toString() ); //fecha elabora 8***
                            //                                            setStyleCell(sheet, borderstabla, currow, (4 + (2*2)));
                            //                                            setStyleCell(sheet, borderstabla, currow, (4 + (2*2)+1));
                            //                                            
                            //                                        }else{
                            //                                            setExDat(sheet, currow,(4 + (2*2)), " " ); //% avance 7**
                            //                                            setExDat(sheet, currow,(4 + (2*2)+1), " " ); //fecha elabora 8***
                            //                                            setStyleCell(sheet, borderstabla, currow, (4 + (2*2)));
                            //                                            setStyleCell(sheet, borderstabla, currow, (4 + (2*2)+1));
                            //                                        }
                            //                                        
                            //                                        if(auxRacs.getStatusRact3()!=null){
                            //                                            setExDat(sheet, currow,(4 + (3*2)), auxRacs.getPorcentAvanceRact3() ); //% avance 7**
                            //                                            setExDat(sheet, currow,(4 + (3*2)+1), auxRacs.getFechaElaboracRact3().toString() ); //fecha elabora 8***
                            //                                            setStyleCell(sheet, borderstabla, currow, (4 + (3*2)));
                            //                                            setStyleCell(sheet, borderstabla, currow, (4 + (3*2)+1));
                            //                                        }
                            //                                        else{
                            //                                            setExDat(sheet, currow,(4 + (3*2)), " "  ); //% avance 7**
                            //                                            setExDat(sheet, currow,(4 + (3*2)+1), " " ); //fecha elabora 8***
                            //                                            setStyleCell(sheet, borderstabla, currow, (4 + (3*2)));
                            //                                            setStyleCell(sheet, borderstabla, currow, (4 + (3*2)+1));   
                            //                                        }
                            //hasta aqui comente Jesus Ruelas - 4 nov 2015

                            //tienne que ser entregados/enviados
                            if (auxRacs.getStatusRact1() != null) {

                                System.out.println("Entro a enviados 1");
                                setExDat(sheet, currow, (4 + (1 * 2)), auxRacs.getPorcentAvanceRact1()); //% avance 7**

                                if (auxRacs.getFechaElaboracRact1() != null) {
                                    setExDat(sheet, currow, (4 + (1 * 2) + 1),
                                            auxRacs.getFechaElaboracRact1().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (4 + (1 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (4 + (1 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (1 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact2() != null) {

                                setExDat(sheet, currow, (4 + (2 * 2)), auxRacs.getPorcentAvanceRact2()); //% avance 7**

                                if (auxRacs.getFechaElaboracRact2() != null) {
                                    setExDat(sheet, currow, (4 + (2 * 2) + 1),
                                            auxRacs.getFechaElaboracRact2().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (4 + (2 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (4 + (2 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (2 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact3() != null) {

                                setExDat(sheet, currow, (4 + (3 * 2)), auxRacs.getPorcentAvanceRact3()); //% avance 7**
                                if (auxRacs.getFechaElaboracRact3() != null) {
                                    setExDat(sheet, currow, (4 + (3 * 2) + 1),
                                            auxRacs.getFechaElaboracRact3().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (4 + (3 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (4 + (3 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (3 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2) + 1));
                            }

                            currow++;
                        }

                        currow += 2;
                    }

                    //aqui modifique Jesus Ruelas  - No entregados
                    //aqui cambie
                    headerTabla.setWrapText(true);
                    //aqui cambie

                    //aqui cambie jesus ruelas

                    //for(int i=0;i<28;i++){
                    //                 sheet.autoSizeColumn(1);
                    //                 sheet.autoSizeColumn(2);
                    //                 sheet.autoSizeColumn(3);
                    //                 sheet.autoSizeColumn(4);

                    //merge cells de Total de RACT General de + ProgEd
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,1,5));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,7,11));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,13,17));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,19,23));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,25,29));

                    //}
                    //aqui cambie jesus ruelas

                    //mostraremos tabla con
                    // Programas educativos //  Total Racs entregados // Total Esperados
                    //preparamos informacion para insertar
                    //         List<Programaeducativo> programasByUnidad = getProgramasByUnidad();
                    List<Planestudio> planesByPrograma = getPlanesByPrograma();
                    int UACid = 1;
                    ArrayList<String> listaProgEdContar = esperadosDelegate.getSemadoroProgEdValor(UACid);

                    //setCellStyle(style); 

                    //setExDat(sheet, 7, 1, "Concentrado de Reporte de Avance de Contenido Temtico General  por Programa Educativo");

                    //imrpiimiremos la tabla
                    // Definimos los encabezados de la tabla

                    int pos = 0;

                    int row = currow + 4;
                    int col = 1;

                    Boolean bandPe = false;

                    //for (Programaeducativo pe : programasByUnidad) {
                    for (String peContar : listaProgEdContar) {

                        String[] contarEntEspProgEd;

                        if (listaProgEdContar.size() >= pos) {
                            if (peContar.contains(programa.getPednombre())) {

                                contarEntEspProgEd = listaProgEdContar.get(pos).split("-");

                                setExDat(sheet, row, col, "Clave");
                                setExDat(sheet, row, col + 1, "Programa Educativo");
                                setExDat(sheet, row, col + 3, "Plan de Estudios");
                                setExDat(sheet, row, col + 4, "Responsable");

                                //    if (contarEntEspProgEd[0].equalsIgnoreCase(programasByUnidad.get(0).getPednombre())) {

                                setExDat(sheet, row + 1, col, programa.getPedclave());
                                setExDat(sheet, row + 1, col + 1, programa.getPednombre());
                                if (!(planesByPrograma.isEmpty())) {
                                    setExDat(sheet, row + 1, col + 2,
                                            planesByPrograma.get(0).getPesvigenciaPlan());
                                }
                                setExDat(sheet, row + 1, col + 3, "");

                                //   }

                                //                  sheet.addMergedRegion(new CellRangeAddress(row+2,col,5,1));
                                setExDat(sheet, row + 2, col,
                                        "Total de RACT General de " + programa.getPednombre());

                                setExDat(sheet, row + 3, col, "Resumen de totales \r\n por numero de RACT");
                                setExDat(sheet, row + 3, col + 1, "Total no entregados");
                                setExDat(sheet, row + 3, col + 2, "%");
                                setExDat(sheet, row + 3, col + 3, "Total esperados");
                                setExDat(sheet, row + 3, col + 4, "%");

                                sheet.getRow(row + 3).getCell(1);//aqui modifique jesus ruelas

                                float porcentEnt = (Float.parseFloat(contarEntEspProgEd[1]))
                                        / (Float.parseFloat(contarEntEspProgEd[2])) * 100;

                                float porcentNoEnt = ((Float.parseFloat(contarEntEspProgEd[2]))
                                        - (Float.parseFloat(contarEntEspProgEd[1])))
                                        / (Float.parseFloat(contarEntEspProgEd[2])) * 100;

                                float porcentEsp = 100 - porcentEnt;

                                //                setExDat(sheet, 15, 1, "Todos los RACTS");
                                //                setExDat(sheet, 15, 2, contarEntEspProgEd[1]);
                                //                setExDat(sheet, 15, 3, "" + porcentEnt + "%");
                                //                setExDat(sheet, 15, 4, contarEntEspProgEd[2]);
                                //                setExDat(sheet, 15, 5, ""  + porcentEsp + "%");
                                //String[] contarEntEspProgEd;
                                String[] contarEntRact1;
                                String[] contarEntRact2;
                                String[] contarEntRact3;
                                int esperadosProgEdUnicoRact = 0;

                                contarEntRact1 = contarEntEspProgEd[3].split(":");
                                contarEntRact2 = contarEntEspProgEd[4].split(":");
                                contarEntRact3 = contarEntEspProgEd[5].split(":");

                                esperadosProgEdUnicoRact = (Integer.parseInt(contarEntEspProgEd[2])) / 3;

                                int contarNoEntRact1 = esperadosProgEdUnicoRact
                                        - (Integer.parseInt(contarEntRact1[1]));
                                int contarNoEntRact2 = esperadosProgEdUnicoRact
                                        - (Integer.parseInt(contarEntRact2[1]));
                                int contarNoEntRact3 = esperadosProgEdUnicoRact
                                        - (Integer.parseInt(contarEntRact3[1]));

                                float contarPorcentEntRact1 = (Float.parseFloat(contarEntRact1[1]))
                                        / ((float) esperadosProgEdUnicoRact) * 100;
                                float contarPorcentEntRact2 = (Float.parseFloat(contarEntRact2[1]))
                                        / ((float) esperadosProgEdUnicoRact) * 100;
                                float contarPorcentEntRact3 = (Float.parseFloat(contarEntRact3[1]))
                                        / ((float) esperadosProgEdUnicoRact) * 100;

                                float contarPorcentNoEntRact1 = (((float) esperadosProgEdUnicoRact)
                                        - (Float.parseFloat(contarEntRact1[1])))
                                        / ((float) esperadosProgEdUnicoRact) * 100;
                                float contarPorcentNoEntRact2 = (((float) esperadosProgEdUnicoRact)
                                        - (Float.parseFloat(contarEntRact2[1])))
                                        / ((float) esperadosProgEdUnicoRact) * 100;
                                float contarPorcentNoEntRact3 = (((float) esperadosProgEdUnicoRact)
                                        - (Float.parseFloat(contarEntRact3[1])))
                                        / ((float) esperadosProgEdUnicoRact) * 100;

                                float contarPorcentEspRact1 = 100 - contarPorcentEntRact1;
                                float contarPorcentEspRact2 = 100 - contarPorcentEntRact2;
                                float contarPorcentEspRact3 = 100 - contarPorcentEntRact3;

                                setExDat(sheet, row + 4, col, "RACT 1");
                                setExDat(sheet, row + 4, col + 1, contarNoEntRact1);
                                setExDat(sheet, row + 4, col + 2, "" + contarPorcentNoEntRact1 + "%");
                                setExDat(sheet, row + 4, col + 3, esperadosProgEdUnicoRact);
                                setExDat(sheet, row + 4, col + 4, "" + contarPorcentEspRact1 + "%");

                                setExDat(sheet, row + 5, col, "RACT 2");
                                setExDat(sheet, row + 5, col + 1, contarNoEntRact2);
                                setExDat(sheet, row + 5, col + 2, "" + contarPorcentNoEntRact2 + "%");
                                setExDat(sheet, row + 5, col + 3, esperadosProgEdUnicoRact);
                                setExDat(sheet, row + 5, col + 4, "" + contarPorcentEspRact2 + "%");

                                setExDat(sheet, row + 6, col, "RACT 3");
                                setExDat(sheet, row + 6, col + 1, contarNoEntRact3);
                                setExDat(sheet, row + 6, col + 2, "" + contarPorcentNoEntRact3 + "%");
                                setExDat(sheet, row + 6, col + 3, esperadosProgEdUnicoRact);
                                setExDat(sheet, row + 6, col + 4, "" + contarPorcentEspRact3 + "%");

                                int totalNoEnt = (Integer.parseInt(contarEntEspProgEd[2])
                                        - (Integer.parseInt(contarEntEspProgEd[1])));

                                setExDat(sheet, row + 7, col, "Todos los RACTS");
                                setExDat(sheet, row + 7, col + 1, "" + (Integer.parseInt(contarEntEspProgEd[2])
                                        - (Integer.parseInt(contarEntEspProgEd[1]))));
                                setExDat(sheet, row + 7, col + 2, "" + porcentNoEnt + "%");
                                setExDat(sheet, row + 7, col + 3, contarEntEspProgEd[2]);
                                setExDat(sheet, row + 7, col + 4, "" + porcentEsp + "%");

                                setStyleCell(sheet, headerTabla, row, col);
                                setStyleCell(sheet, headerTabla, row, col + 1);
                                setStyleCell(sheet, headerTabla, row, col + 2);
                                setStyleCell(sheet, headerTabla, row, col + 3);
                                setStyleCell(sheet, headerTabla, row, col + 4);

                                setStyleCell(sheet, headerTabla, row + 2, col);
                                setStyleCell(sheet, headerTabla, row + 2, col + 1);
                                setStyleCell(sheet, headerTabla, row + 2, col + 2);
                                setStyleCell(sheet, headerTabla, row + 2, col + 3);

                                setStyleCell(sheet, headerTabla, row + 3, col);
                                setStyleCell(sheet, headerTabla, row + 3, col + 1);
                                setStyleCell(sheet, headerTabla, row + 3, col + 2);
                                setStyleCell(sheet, headerTabla, row + 3, col + 3);
                                setStyleCell(sheet, headerTabla, row + 3, col + 4);

                                bandPe = true;

                                pos++;
                            }

                        }
                        //               if (bandPe == true) {
                        //                   if (col >= 25) {
                        //                       row = row + 14;
                        //                       col = -5;
                        //                   }
                        //                   col = col + 6;
                        //                   bandPe = false;
                        //               }
                        pos++;
                    }
                    //}
                    //aqui modifique Jesus Ruelas                                     

                } // fin del la comparacon de plan
            } // fin del for por plan de estudios

        } // fin de si es por entregados if(entregados)

        if (reporte.equalsIgnoreCase("entregadosynoentregados")) {
            nombreLibro = "Entregados y No Entregados " + nombreLibro;

            //definimos encabezado
            sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);

            //mostraremos tabla con
            // Programas educativos //  Total Racs entregados // Total Esperados
            //preparamos informacion para insertar
            List<Programaeducativo> programasByUnidad = getProgramasByUnidad();

            //imrpiimiremos la tabla
            // Definimos los encabezados de la tabla
            setExDat(sheet, 13, 17, "Programa Educativo");
            setExDat(sheet, 13, 18, "Total de RACT Entregados");
            setExDat(sheet, 13, 19, "Total de RACT Esperados");
            setExDat(sheet, 13, 20, " ");

            setStyleCell(sheet, headerTabla, 13, 17);
            setStyleCell(sheet, headerTabla, 13, 18);
            setStyleCell(sheet, headerTabla, 13, 19);

            /*sheet.autoSizeColumn(2);
            sheet.autoSizeColumn(3);
            sheet.autoSizeColumn(4);*/

            //imprimimos la informacion en su lugar

            int prow = 14;
            for (Programaeducativo programa : programasByUnidad) {
                if (selectProgramEducativo.contains(programa.getPedid().toString())) {
                    setExDat(sheet, prow, 17, programa.getPednombre());
                    setExDat(sheet, prow, 18, 75);
                    setExDat(sheet, prow, 19, 100);
                    prow++;
                }
            }
            //Se obtiene consulta con los parametros seleccionados
            ArrayList<String> entregados = esperadosDelegate.getFullProgramaEdu(unidadacademica.getUacid(),
                    Plan, Programa, Ciclo);

            //agregamos programacion de grafico
            if (tipografico.equalsIgnoreCase("barras")) {
                BarChartCL demo1 = new BarChartCL("Estadsticas de Reportes Entregados por Programa Educativo",
                        entregados, "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }
            if (tipografico.equalsIgnoreCase("linea")) {
                LineChartDemo1 demo1 = new LineChartDemo1(
                        "Estadsticas de Reportes Entregados por Programa Educativo", entregados,
                        "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }
            if (tipografico.equalsIgnoreCase("pastel")) {
                PieChartDemo1 demo1 = new PieChartDemo1(
                        "Estadsticas de Reportes Entregados por Programa Educativo", entregados,
                        "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }

            //Se acaba grafico
            //recorreremos todo el list aux para revisar los programas educativos que utiliza
            //aun que podemos usar el selectProgramaeducativo

            /* Programacion de Hojas*/
            for (Programaeducativo programa : programasByUnidad) {
                if (selectProgramEducativo.contains(Integer.toString(programa.getPedclave()))) {
                    sheet = workbook.createSheet(programa.getPednombre());
                    sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);
                    setExDat(sheet, 8, 3,
                            "Concentrado de Reporte de Avance de Contenido Temtico de Entregados por Programa Educativo");

                    boolean autotam = true;
                    //informacion de programa educativo tabla
                    setExDat(sheet, 14, 1, "Clave");
                    setExDat(sheet, 14, 2, "Programa Educativo");
                    setExDat(sheet, 14, 3, "Plan de Estudios");
                    setExDat(sheet, 14, 4, "Responsable");

                    setStyleCell(sheet, headerTabla, 14, 1);
                    setStyleCell(sheet, headerTabla, 14, 2);
                    setStyleCell(sheet, headerTabla, 14, 3);
                    setStyleCell(sheet, headerTabla, 14, 4);

                    //llenado de informacion
                    // se tiene imprimir por cada plan de estudios???

                    //                    Responsableprogramaeducativo responsable = filtrosBeanHelper.getConsultaDelegate().getResponsableProgramaEducativoByID(programa.getPedid());

                    setExDat(sheet, 15, 1, programa.getPedclave());
                    setExDat(sheet, 15, 2, programa.getPednombre());
                    setExDat(sheet, 15, 3, "");
                    setExDat(sheet, 15, 4, "");
                    setStyleCell(sheet, borderstabla, 15, 1);
                    setStyleCell(sheet, borderstabla, 15, 2);
                    setStyleCell(sheet, borderstabla, 15, 3);
                    setStyleCell(sheet, borderstabla, 15, 4);

                    List<Planestudio> planes = filtrosBeanHelper.getConsultaDelegate()
                            .getPlanesByPrograma(programa.getPedid());
                    boolean uno = true;
                    int currow = 20;

                    ReporteAvanceAux tempAux = new ReporteAvanceAux();
                    for (ReporteAvanceAux aux : listaAux) {
                        tempAux = aux;
                        break;
                    }

                    //intentaremos usar un solo plan
                    setExDat(sheet, currow, 1, "?reas de conocimiento");
                    setStyleCell(sheet, headerTabla, currow, 1);
                    currow++;
                    //cada plan de estudios tiene varias areas de conocimiento
                    //List<Areaconocimiento> areasConocimiento = filtrosBeanHelper.getConsultaDelegate().getAreasByPlan( tempAux.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo().getPlanestudio().getPesid() );
                    List<Areaconocimiento> areasConocimiento = filtrosBeanHelper.getConsultaDelegate()
                            .getAreasByPlanClave(programa.getPedclave(),
                                    tempAux.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getPlanestudio().getPesvigenciaPlan());

                    for (Areaconocimiento areaCon : areasConocimiento) {
                        //clave , area de conocimiento, responsable
                        setExDat(sheet, currow, 1, "Clave");
                        setExDat(sheet, currow, 2, "?rea de conocimiento");
                        setExDat(sheet, currow, 3, "Responsable");
                        setStyleCell(sheet, headerTabla, currow, 1);
                        setStyleCell(sheet, headerTabla, currow, 2);
                        setStyleCell(sheet, headerTabla, currow, 3);

                        currow++;
                        setExDat(sheet, currow, 1, areaCon.getAcoclave()); //clave
                        setExDat(sheet, currow, 2, areaCon.getAconombre()); //area conociminto
                        setExDat(sheet, currow, 3, ""); //responsable

                        currow += 2;
                        //obtenemos las unidades de aprendisake
                        setExDat(sheet, currow, 1, "Clave unidad de aprendizaje");
                        setExDat(sheet, currow, 2, "Unidad de aprendizaje");
                        setExDat(sheet, currow, 3, "No. de empleado");
                        setExDat(sheet, currow, 4, "Nombre del profesor");
                        setExDat(sheet, currow, 5, "Grupo");
                        setExDat(sheet, currow, 6, "% Avance 1er reporte");
                        setExDat(sheet, currow, 7, "Fecha de elaboracin 1er RACT");
                        setExDat(sheet, currow, 8, "% Avance 2do reporte");
                        setExDat(sheet, currow, 9, "Fecha de elaboracin 2do RACT");
                        setExDat(sheet, currow, 10, "% Avance 3er reporte");
                        setExDat(sheet, currow, 11, "Fecha de elaboracin 3er RACT");
                        if (autotam) {
                            sheet.autoSizeColumn(2);
                            sheet.autoSizeColumn(4);
                            sheet.autoSizeColumn(11);
                            autotam = false;
                        }
                        // para formatear toda la linea
                        for (int i = 1; i <= 11; i++) {
                            //tenemos qu aajustar texto
                            //tenemos que centrar el texto
                            //cambiar el color de fondo
                            setStyleCell(sheet, headerTabla, currow, i);
                        }

                        currow++;
                        //List<Unidadaprendizaje> unidadesAprendisaje = filtrosBeanHelper.getConsultaDelegate().getUnidadByArea(areaCon.getAcoclave());

                        //de ls listaAux separamos los los reportes que correspondan a la unidad de aprendisaje acutal
                        ArrayList<ReporteAvanceAux> tempListAux = new ArrayList<ReporteAvanceAux>();
                        for (ReporteAvanceAux aux : listaAux) {
                            if (aux.getAreaConocimiento() != null
                                    && aux.getAreaConocimiento().getAcoclave() == areaCon.getAcoclave()
                                    && programa.getPedclave() == aux.getReporteAvance()
                                            .getUnidadaprendizajeImparteProfesor().getGrupo().getPlanestudio()
                                            .getProgramaeducativo().getPedclave()) {
                                tempListAux.add(aux);
                            }
                        }

                        //List<UnidadaprendizajeImparteProfesor> unidadesProfesor  = filtrosBeanHelper.getConsultaDelegate().getUnidadesAprendisajeImparteProf(unidadApren.getUapid());
                        int uniprofeTemp = 0;
                        for (ReporteAvanceAux auxRacs : tempListAux) {

                            //marcamos bordes
                            for (int i = 1; i <= 11; i++) {
                                setExDat(sheet, currow, i, " ");
                            }
                            for (int i = 1; i <= 11; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }

                            String nompreP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getPronombre();
                            String apellidoPP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoPaterno();
                            String apellidoPM = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoMaterno();
                            int claveUnidadApren = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje().getUapclave();
                            String nombreUnidad = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                    .getUapnombre();

                            uniprofeTemp = claveUnidadApren;
                            setExDat(sheet, currow, 1, claveUnidadApren); //clave
                            setExDat(sheet, currow, 2, nombreUnidad); //nombre unidad
                            //reporteAvance.unidadaprendizajeImparteProfesor.profesor.pronumeroEmpleado
                            setExDat(sheet, currow, 3,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                            .getProfesor().getPronumeroEmpleado()); //numero empleado
                            setExDat(sheet, currow, 4, apellidoPP + " " + apellidoPM + " " + nompreP); //nombre maestro
                            setExDat(sheet, currow, 5,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getGponumero()
                                            + "-"
                                            + auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                                    .getUiptipoSubgrupo()
                                            + "-" + auxRacs.getReporteAvance()
                                                    .getUnidadaprendizajeImparteProfesor().getUipsubgrupo()); //grupo numero

                            //marcamos bordes
                            for (int i = 1; i <= 5; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }
                            //tienne que ser entregados/enviados

                            setExDat(sheet, currow, (4 + (1 * 2)), auxRacs.getPorcentAvanceRact1()); //% avance 7**
                            if (auxRacs.getFechaElaboracRact1() != null) {
                                setExDat(sheet, currow, (4 + (1 * 2) + 1),
                                        auxRacs.getFechaElaboracRact1().toString()); //fecha elabora 8***
                            }
                            setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2)));
                            setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2) + 1));

                            setExDat(sheet, currow, (4 + (2 * 2)), auxRacs.getPorcentAvanceRact2()); //% avance 7**
                            if (auxRacs.getFechaElaboracRact2() != null) {
                                setExDat(sheet, currow, (4 + (2 * 2) + 1),
                                        auxRacs.getFechaElaboracRact2().toString()); //fecha elabora 8***
                            }
                            setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2)));
                            setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2) + 1));

                            setExDat(sheet, currow, (4 + (3 * 2)), auxRacs.getPorcentAvanceRact3()); //% avance 7**
                            if (auxRacs.getFechaElaboracRact3() != null) {
                                setExDat(sheet, currow, (4 + (3 * 2) + 1),
                                        auxRacs.getFechaElaboracRact3().toString()); //fecha elabora 8*** 
                            }
                            setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2)));
                            setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2) + 1));

                            currow++;
                        }

                        currow += 2;
                    }

                    //aqui modifique Jesus Ruelas  - Entregados Y No Entregados
                    //aqui cambie
                    headerTabla.setWrapText(true);
                    //aqui cambie

                    //aqui cambie jesus ruelas

                    //for(int i=0;i<28;i++){
                    //                 sheet.autoSizeColumn(1);
                    //                 sheet.autoSizeColumn(2);
                    //                 sheet.autoSizeColumn(3);
                    //                 sheet.autoSizeColumn(4);

                    //merge cells de Total de RACT General de + ProgEd
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,1,5));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,7,11));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,13,17));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,19,23));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,25,29));

                    //}
                    //aqui cambie jesus ruelas

                    //mostraremos tabla con
                    // Programas educativos //  Total Racs entregados // Total Esperados
                    //preparamos informacion para insertar
                    //         List<Programaeducativo> programasByUnidad = getProgramasByUnidad();
                    List<Planestudio> planesByPrograma = getPlanesByPrograma();
                    int UACid = 1;
                    ArrayList<String> listaProgEdContar = esperadosDelegate.getSemadoroProgEdValor(UACid);

                    //setCellStyle(style); 

                    //setExDat(sheet, 7, 1, "Concentrado de Reporte de Avance de Contenido Temtico General  por Programa Educativo");

                    //imrpiimiremos la tabla
                    // Definimos los encabezados de la tabla

                    int pos = 0;

                    int row = currow + 4;
                    int col = 1;

                    Boolean bandPe = false;

                    //for (Programaeducativo pe : programasByUnidad) {
                    for (String peContar : listaProgEdContar) {

                        String[] contarEntEspProgEd;

                        if (listaProgEdContar.size() >= pos) {
                            if (peContar.contains(programa.getPednombre())) {

                                contarEntEspProgEd = listaProgEdContar.get(pos).split("-");

                                setExDat(sheet, row, col, "Clave");
                                setExDat(sheet, row, col + 1, "Programa Educativo");
                                setExDat(sheet, row, col + 3, "Plan de Estudios");
                                setExDat(sheet, row, col + 4, "Responsable");

                                //    if (contarEntEspProgEd[0].equalsIgnoreCase(programasByUnidad.get(0).getPednombre())) {

                                setExDat(sheet, row + 1, col, programa.getPedclave());
                                setExDat(sheet, row + 1, col + 1, programa.getPednombre());
                                if (!(planesByPrograma.isEmpty())) {
                                    setExDat(sheet, row + 1, col + 2,
                                            planesByPrograma.get(0).getPesvigenciaPlan());
                                }
                                setExDat(sheet, row + 1, col + 3, "");

                                //   }

                                //                  sheet.addMergedRegion(new CellRangeAddress(row+2,col,5,1));
                                setExDat(sheet, row + 2, col,
                                        "Total de RACT General de " + programa.getPednombre());

                                setExDat(sheet, row + 3, col, "Resumen de totales \r\n por numero de RACT");
                                setExDat(sheet, row + 3, col + 1, "Total entregados");
                                setExDat(sheet, row + 3, col + 2, "%");
                                setExDat(sheet, row + 3, col + 3, "Total esperados");
                                setExDat(sheet, row + 3, col + 4, "%");

                                sheet.getRow(row + 3).getCell(1);//aqui modifique jesus ruelas

                                float porcentEnt = (Float.parseFloat(contarEntEspProgEd[1]))
                                        / (Float.parseFloat(contarEntEspProgEd[2])) * 100;

                                float porcentEsp = 100 - porcentEnt;

                                //                setExDat(sheet, 15, 1, "Todos los RACTS");
                                //                setExDat(sheet, 15, 2, contarEntEspProgEd[1]);
                                //                setExDat(sheet, 15, 3, "" + porcentEnt + "%");
                                //                setExDat(sheet, 15, 4, contarEntEspProgEd[2]);
                                //                setExDat(sheet, 15, 5, ""  + porcentEsp + "%");
                                //String[] contarEntEspProgEd;
                                String[] contarEntRact1;
                                String[] contarEntRact2;
                                String[] contarEntRact3;
                                int esperadosProgEdUnicoRact = 0;

                                contarEntRact1 = contarEntEspProgEd[3].split(":");
                                contarEntRact2 = contarEntEspProgEd[4].split(":");
                                contarEntRact3 = contarEntEspProgEd[5].split(":");

                                esperadosProgEdUnicoRact = (Integer.parseInt(contarEntEspProgEd[2])) / 3;

                                float contarPorcentEntRact1 = (Float.parseFloat(contarEntRact1[1]))
                                        / ((float) esperadosProgEdUnicoRact) * 100;
                                float contarPorcentEntRact2 = (Float.parseFloat(contarEntRact2[1]))
                                        / ((float) esperadosProgEdUnicoRact) * 100;
                                float contarPorcentEntRact3 = (Float.parseFloat(contarEntRact3[1]))
                                        / ((float) esperadosProgEdUnicoRact) * 100;

                                float contarPorcentEspRact1 = 100 - contarPorcentEntRact1;
                                float contarPorcentEspRact2 = 100 - contarPorcentEntRact2;
                                float contarPorcentEspRact3 = 100 - contarPorcentEntRact3;

                                setExDat(sheet, row + 4, col, "RACT 1");
                                setExDat(sheet, row + 4, col + 1, contarEntRact1[1]);
                                setExDat(sheet, row + 4, col + 2, "" + contarPorcentEntRact1 + "%");
                                setExDat(sheet, row + 4, col + 3, esperadosProgEdUnicoRact);
                                setExDat(sheet, row + 4, col + 4, "" + contarPorcentEspRact1 + "%");

                                setExDat(sheet, row + 5, col, "RACT 2");
                                setExDat(sheet, row + 5, col + 1, contarEntRact2[1]);
                                setExDat(sheet, row + 5, col + 2, "" + contarPorcentEntRact2 + "%");
                                setExDat(sheet, row + 5, col + 3, esperadosProgEdUnicoRact);
                                setExDat(sheet, row + 5, col + 4, "" + contarPorcentEspRact2 + "%");

                                setExDat(sheet, row + 6, col, "RACT 3");
                                setExDat(sheet, row + 6, col + 1, contarEntRact3[1]);
                                setExDat(sheet, row + 6, col + 2, "" + contarPorcentEntRact3 + "%");
                                setExDat(sheet, row + 6, col + 3, esperadosProgEdUnicoRact);
                                setExDat(sheet, row + 6, col + 4, "" + contarPorcentEspRact3 + "%");

                                setExDat(sheet, row + 7, col, "Todos los RACTS");
                                setExDat(sheet, row + 7, col + 1, contarEntEspProgEd[1]);
                                setExDat(sheet, row + 7, col + 2, "" + porcentEnt + "%");
                                setExDat(sheet, row + 7, col + 3, contarEntEspProgEd[2]);
                                setExDat(sheet, row + 7, col + 4, "" + porcentEsp + "%");

                                setStyleCell(sheet, headerTabla, row, col);
                                setStyleCell(sheet, headerTabla, row, col + 1);
                                setStyleCell(sheet, headerTabla, row, col + 2);
                                setStyleCell(sheet, headerTabla, row, col + 3);
                                setStyleCell(sheet, headerTabla, row, col + 4);

                                setStyleCell(sheet, headerTabla, row + 2, col);
                                setStyleCell(sheet, headerTabla, row + 2, col + 1);
                                setStyleCell(sheet, headerTabla, row + 2, col + 2);
                                setStyleCell(sheet, headerTabla, row + 2, col + 3);

                                setStyleCell(sheet, headerTabla, row + 3, col);
                                setStyleCell(sheet, headerTabla, row + 3, col + 1);
                                setStyleCell(sheet, headerTabla, row + 3, col + 2);
                                setStyleCell(sheet, headerTabla, row + 3, col + 3);
                                setStyleCell(sheet, headerTabla, row + 3, col + 4);

                                bandPe = true;

                                pos++;
                            }

                        }
                        //               if (bandPe == true) {
                        //                   if (col >= 25) {
                        //                       row = row + 14;
                        //                       col = -5;
                        //                   }
                        //                   col = col + 6;
                        //                   bandPe = false;
                        //               }
                        pos++;
                    }
                    //}
                    //aqui modifique Jesus Ruelas                 

                } // fin del la comparacon de plan
            } // fin del for por plan de estudios

        } // fin de si es por entregados y no entregados if(entregados)

        if (reporte.equalsIgnoreCase("entregadosatiempo") || reporte.equalsIgnoreCase("entregadosenfechalimite")
                || reporte.equalsIgnoreCase("entregadosdespueslimite")
                || reporte.equalsIgnoreCase("entregadosdespueslimite")
                || reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues")) {
            if (reporte.equalsIgnoreCase("entregadosatiempo")) {
                System.out.println("Entro a entregados a tiempo");
                nombreLibro = "Entregados a Tiempo " + nombreLibro;
            }

            if (reporte.equalsIgnoreCase("entregadosenfechalimite")) {
                System.out.println("Entro a entregados en fecha");
                nombreLibro = "Entregados en Fecha Limite " + nombreLibro;
            }

            if (reporte.equalsIgnoreCase("entregadosdespueslimite")) {
                System.out.println("Entro a entregados despues");
                nombreLibro = "Entregados despues Fecha Limite" + nombreLibro;
            }

            if (reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues")) {
                System.out.println("Entro a entregados a tiempo");
                nombreLibro = "Entregados a Tiempo-Limite-Despues de Fecha " + nombreLibro;
            }

            //mostraremos tabla con
            // Programas educativos //  Total Racs entregados // Total Esperados
            //preparamos informacion para insertar
            List<Programaeducativo> programasByUnidad = getProgramasByUnidad();

            //imrpiimiremos la tabla
            // Definimos los encabezados de la tabla
            setExDat(sheet, 13, 17, "Programa Educativo");
            setExDat(sheet, 13, 18, "Total de RACT Entregados");
            setExDat(sheet, 13, 19, "Total de RACT Esperados");
            setExDat(sheet, 13, 20, " ");

            setStyleCell(sheet, headerTabla, 13, 17);
            setStyleCell(sheet, headerTabla, 13, 18);
            setStyleCell(sheet, headerTabla, 13, 19);

            /*sheet.autoSizeColumn(2);
            sheet.autoSizeColumn(3);
            sheet.autoSizeColumn(4);*/

            //imprimimos la informacion en su lugar

            int prow = 14;
            for (Programaeducativo programa : programasByUnidad) {
                if (selectProgramEducativo.contains(programa.getPedid().toString())) {
                    setExDat(sheet, prow, 17, programa.getPednombre());
                    setExDat(sheet, prow, 18, 75);
                    setExDat(sheet, prow, 19, 100);
                    prow++;
                }
            }
            //Se obtiene consulta con los parametros seleccionados
            ArrayList<String> entregados = esperadosDelegate.getFullProgramaEdu(unidadacademica.getUacid(),
                    Plan, Programa, Ciclo);

            //agregamos programacion de grafico
            if (tipografico.equalsIgnoreCase("barras")) {
                BarChartCL demo1 = new BarChartCL("Estadsticas de Reportes Entregados por Programa Educativo",
                        entregados, "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }
            if (tipografico.equalsIgnoreCase("linea")) {
                LineChartDemo1 demo1 = new LineChartDemo1(
                        "Estadsticas de Reportes Entregados por Programa Educativo", entregados,
                        "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }
            if (tipografico.equalsIgnoreCase("pastel")) {
                PieChartDemo1 demo1 = new PieChartDemo1(
                        "Estadsticas de Reportes Entregados por Programa Educativo", entregados,
                        "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }

            //Se acaba grafico
            //recorreremos todo el list aux para revisar los programas educativos que utiliza
            //aun que podemos usar el selectProgramaeducativo

            /* Programacion de Hojas*/
            for (Programaeducativo programa : programasByUnidad) {
                if (selectProgramEducativo.contains(Integer.toString(programa.getPedclave()))) {

                    sheet = workbook.createSheet(programa.getPednombre());
                    sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);
                    setExDat(sheet, 8, 3,
                            "Concentrado de Reporte de Avance de Contenido Temtico de Entregados por Programa Educativo");

                    boolean autotam = true;
                    //informacion de programa educativo tabla
                    setExDat(sheet, 14, 1, "Clave");
                    setExDat(sheet, 14, 2, "Programa Educativo");
                    setExDat(sheet, 14, 3, "Plan de Estudios");
                    setExDat(sheet, 14, 4, "Responsable");

                    setStyleCell(sheet, headerTabla, 14, 1);
                    setStyleCell(sheet, headerTabla, 14, 2);
                    setStyleCell(sheet, headerTabla, 14, 3);
                    setStyleCell(sheet, headerTabla, 14, 4);

                    //llenado de informacion
                    // se tiene imprimir por cada plan de estudios???

                    //                    Responsableprogramaeducativo responsable = filtrosBeanHelper.getConsultaDelegate().getResponsableProgramaEducativoByID(programa.getPedid());

                    setExDat(sheet, 15, 1, programa.getPedclave());
                    setExDat(sheet, 15, 2, programa.getPednombre());
                    setExDat(sheet, 15, 3, "");
                    setExDat(sheet, 15, 4, "");
                    setStyleCell(sheet, borderstabla, 15, 1);
                    setStyleCell(sheet, borderstabla, 15, 2);
                    setStyleCell(sheet, borderstabla, 15, 3);
                    setStyleCell(sheet, borderstabla, 15, 4);

                    List<Planestudio> planes = filtrosBeanHelper.getConsultaDelegate()
                            .getPlanesByPrograma(programa.getPedid());
                    boolean uno = true;
                    int currow = 20;

                    ReporteAvanceAux tempAux = new ReporteAvanceAux();
                    for (ReporteAvanceAux aux : listaAux) {
                        tempAux = aux;
                        break;
                    }

                    //intentaremos usar un solo plan
                    setExDat(sheet, currow, 1, "?reas de conocimiento");
                    setStyleCell(sheet, headerTabla, currow, 1);
                    currow++;
                    //cada plan de estudios tiene varias areas de conocimiento
                    //List<Areaconocimiento> areasConocimiento = filtrosBeanHelper.getConsultaDelegate().getAreasByPlan( tempAux.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo().getPlanestudio().getPesid() );
                    List<Areaconocimiento> areasConocimiento = filtrosBeanHelper.getConsultaDelegate()
                            .getAreasByPlanClave(programa.getPedclave(),
                                    tempAux.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getPlanestudio().getPesvigenciaPlan());

                    for (Areaconocimiento areaCon : areasConocimiento) {
                        //clave , area de conocimiento, responsable
                        setExDat(sheet, currow, 1, "Clave");
                        setExDat(sheet, currow, 2, "?rea de conocimiento");
                        setExDat(sheet, currow, 3, "Responsable");
                        setStyleCell(sheet, headerTabla, currow, 1);
                        setStyleCell(sheet, headerTabla, currow, 2);
                        setStyleCell(sheet, headerTabla, currow, 3);

                        currow++;
                        setExDat(sheet, currow, 1, areaCon.getAcoclave()); //clave
                        setExDat(sheet, currow, 2, areaCon.getAconombre()); //area conociminto
                        setExDat(sheet, currow, 3, ""); //responsable

                        currow += 2;
                        //obtenemos las unidades de aprendisake
                        setExDat(sheet, currow, 1, "Clave unidad de aprendizaje");
                        setExDat(sheet, currow, 2, "Unidad de aprendizaje");
                        setExDat(sheet, currow, 3, "No. de empleado");
                        setExDat(sheet, currow, 4, "Nombre del profesor");
                        setExDat(sheet, currow, 5, "Grupo");
                        setExDat(sheet, currow, 6, "% Avance 1er reporte");
                        setExDat(sheet, currow, 7, "Fecha de elaboracin 1er RACT");
                        setExDat(sheet, currow, 8, "% Avance 2do reporte");
                        setExDat(sheet, currow, 9, "Fecha de elaboracin 2do RACT");
                        setExDat(sheet, currow, 10, "% Avance 3er reporte");
                        setExDat(sheet, currow, 11, "Fecha de elaboracin 3er RACT");
                        if (autotam) {
                            sheet.autoSizeColumn(2);
                            sheet.autoSizeColumn(4);
                            sheet.autoSizeColumn(11);
                            autotam = false;
                        }
                        // para formatear toda la linea
                        for (int i = 1; i <= 11; i++) {
                            //tenemos qu aajustar texto
                            //tenemos que centrar el texto
                            //cambiar el color de fondo
                            setStyleCell(sheet, headerTabla, currow, i);
                        }

                        currow++;
                        //List<Unidadaprendizaje> unidadesAprendisaje = filtrosBeanHelper.getConsultaDelegate().getUnidadByArea(areaCon.getAcoclave());

                        //de ls listaAux separamos los los reportes que correspondan a la unidad de aprendisaje acutal
                        ArrayList<ReporteAvanceAux> tempListAux = new ArrayList<ReporteAvanceAux>();
                        for (ReporteAvanceAux aux : listaAux) {
                            if (aux.getAreaConocimiento() != null
                                    && aux.getAreaConocimiento().getAcoclave() == areaCon.getAcoclave()
                                    && programa.getPedclave() == aux.getReporteAvance()
                                            .getUnidadaprendizajeImparteProfesor().getGrupo().getPlanestudio()
                                            .getProgramaeducativo().getPedclave()) {
                                tempListAux.add(aux);
                            }
                        }

                        //List<UnidadaprendizajeImparteProfesor> unidadesProfesor  = filtrosBeanHelper.getConsultaDelegate().getUnidadesAprendisajeImparteProf(unidadApren.getUapid());
                        int uniprofeTemp = 0;
                        for (ReporteAvanceAux auxRacs : tempListAux) {

                            //marcamos bordes
                            for (int i = 1; i <= 11; i++) {
                                setExDat(sheet, currow, i, " ");
                            }
                            for (int i = 1; i <= 11; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }

                            String nompreP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getPronombre();
                            String apellidoPP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoPaterno();
                            String apellidoPM = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoMaterno();
                            int claveUnidadApren = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje().getUapclave();
                            String nombreUnidad = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                    .getUapnombre();

                            uniprofeTemp = claveUnidadApren;
                            setExDat(sheet, currow, 1, claveUnidadApren); //clave
                            setExDat(sheet, currow, 2, nombreUnidad); //nombre unidad
                            //reporteAvance.unidadaprendizajeImparteProfesor.profesor.pronumeroEmpleado
                            setExDat(sheet, currow, 3,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                            .getProfesor().getPronumeroEmpleado()); //numero empleado
                            setExDat(sheet, currow, 4, apellidoPP + " " + apellidoPM + " " + nompreP); //nombre maestro
                            setExDat(sheet, currow, 5,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getGponumero()
                                            + "-"
                                            + auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                                    .getUiptipoSubgrupo()
                                            + "-" + auxRacs.getReporteAvance()
                                                    .getUnidadaprendizajeImparteProfesor().getUipsubgrupo()); //grupo numero

                            //marcamos bordes
                            for (int i = 1; i <= 5; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }
                            //tienne que ser entregados/enviados

                            setExDat(sheet, currow, (4 + (1 * 2)), auxRacs.getPorcentAvanceRact1()); //% avance 7**
                            if (auxRacs.getFechaElaboracRact1() != null) {
                                setExDat(sheet, currow, (4 + (1 * 2) + 1),
                                        auxRacs.getFechaElaboracRact1().toString()); //fecha elabora 8***
                            }
                            setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2)));
                            setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2) + 1));

                            setExDat(sheet, currow, (4 + (2 * 2)), auxRacs.getPorcentAvanceRact2()); //% avance 7**
                            if (auxRacs.getFechaElaboracRact2() != null) {
                                setExDat(sheet, currow, (4 + (2 * 2) + 1),
                                        auxRacs.getFechaElaboracRact2().toString()); //fecha elabora 8***
                            }
                            setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2)));
                            setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2) + 1));

                            setExDat(sheet, currow, (4 + (3 * 2)), auxRacs.getPorcentAvanceRact3()); //% avance 7**
                            if (auxRacs.getFechaElaboracRact3() != null) {
                                setExDat(sheet, currow, (4 + (3 * 2) + 1),
                                        auxRacs.getFechaElaboracRact3().toString()); //fecha elabora 8*** 
                            }
                            setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2)));
                            setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2) + 1));

                            currow++;
                        }

                        currow += 2;
                    }

                    //aqui modifique Jesus Ruelas  - Entregados A Tiempo
                    //aqui cambie
                    headerTabla.setWrapText(true);
                    //aqui cambie

                    //aqui cambie jesus ruelas

                    //for(int i=0;i<28;i++){
                    //                 sheet.autoSizeColumn(1);
                    //                 sheet.autoSizeColumn(2);
                    //                 sheet.autoSizeColumn(3);
                    //                 sheet.autoSizeColumn(4);

                    //merge cells de Total de RACT General de + ProgEd
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,1,5));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,7,11));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,13,17));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,19,23));
                    //                sheet.addMergedRegion(new CellRangeAddress(13,13,25,29));

                    //}
                    //aqui cambie jesus ruelas

                    //mostraremos tabla con
                    // Programas educativos //  Total Racs entregados // Total Esperados
                    //preparamos informacion para insertar
                    //         List<Programaeducativo> programasByUnidad = getProgramasByUnidad();
                    List<Planestudio> planesByPrograma = getPlanesByPrograma();
                    int UACid = 1;
                    ArrayList<String> listaProgEdContar = esperadosDelegate.getSemadoroProgEdValor(UACid);

                    //setCellStyle(style); 

                    //setExDat(sheet, 7, 1, "Concentrado de Reporte de Avance de Contenido Temtico General  por Programa Educativo");

                    //imrpiimiremos la tabla
                    // Definimos los encabezados de la tabla

                    int pos = 0;

                    int row = currow + 4;
                    int col = 1;

                    Boolean bandPe = false;

                    //for (Programaeducativo pe : programasByUnidad) {
                    for (String peContar : listaProgEdContar) {

                        String[] contarEntEspProgEd;

                        if (listaProgEdContar.size() >= pos) {
                            if (peContar.contains(programa.getPednombre())) {

                                contarEntEspProgEd = listaProgEdContar.get(pos).split("-");

                                setExDat(sheet, row, col, "Clave");
                                setExDat(sheet, row, col + 1, "Programa Educativo");
                                setExDat(sheet, row, col + 3, "Plan de Estudios");
                                setExDat(sheet, row, col + 4, "Responsable");

                                //    if (contarEntEspProgEd[0].equalsIgnoreCase(programasByUnidad.get(0).getPednombre())) {

                                setExDat(sheet, row + 1, col, programa.getPedclave());
                                setExDat(sheet, row + 1, col + 1, programa.getPednombre());
                                if (!(planesByPrograma.isEmpty())) {
                                    setExDat(sheet, row + 1, col + 2,
                                            planesByPrograma.get(0).getPesvigenciaPlan());
                                }
                                setExDat(sheet, row + 1, col + 3, "");

                                //   }

                                //                  sheet.addMergedRegion(new CellRangeAddress(row+2,col,5,1));
                                setExDat(sheet, row + 2, col,
                                        "Total de RACT General de " + programa.getPednombre());

                                setExDat(sheet, row + 3, col, "Resumen de totales \r\n por numero de RACT");
                                setExDat(sheet, row + 3, col + 1, "Total entregados");
                                setExDat(sheet, row + 3, col + 2, "%");
                                setExDat(sheet, row + 3, col + 3, "Total esperados");
                                setExDat(sheet, row + 3, col + 4, "%");

                                sheet.getRow(row + 3).getCell(1);//aqui modifique jesus ruelas

                                float porcentEnt = (Float.parseFloat(contarEntEspProgEd[1]))
                                        / (Float.parseFloat(contarEntEspProgEd[2])) * 100;

                                float porcentEsp = 100 - porcentEnt;

                                //                setExDat(sheet, 15, 1, "Todos los RACTS");
                                //                setExDat(sheet, 15, 2, contarEntEspProgEd[1]);
                                //                setExDat(sheet, 15, 3, "" + porcentEnt + "%");
                                //                setExDat(sheet, 15, 4, contarEntEspProgEd[2]);
                                //                setExDat(sheet, 15, 5, ""  + porcentEsp + "%");
                                //String[] contarEntEspProgEd;
                                String[] contarEntRact1;
                                String[] contarEntRact2;
                                String[] contarEntRact3;
                                int esperadosProgEdUnicoRact = 0;

                                contarEntRact1 = contarEntEspProgEd[3].split(":");
                                contarEntRact2 = contarEntEspProgEd[4].split(":");
                                contarEntRact3 = contarEntEspProgEd[5].split(":");

                                esperadosProgEdUnicoRact = (Integer.parseInt(contarEntEspProgEd[2])) / 3;

                                float contarPorcentEntRact1 = (Float.parseFloat(contarEntRact1[1]))
                                        / ((float) esperadosProgEdUnicoRact) * 100;
                                float contarPorcentEntRact2 = (Float.parseFloat(contarEntRact2[1]))
                                        / ((float) esperadosProgEdUnicoRact) * 100;
                                float contarPorcentEntRact3 = (Float.parseFloat(contarEntRact3[1]))
                                        / ((float) esperadosProgEdUnicoRact) * 100;

                                float contarPorcentEspRact1 = 100 - contarPorcentEntRact1;
                                float contarPorcentEspRact2 = 100 - contarPorcentEntRact2;
                                float contarPorcentEspRact3 = 100 - contarPorcentEntRact3;

                                setExDat(sheet, row + 4, col, "RACT 1");
                                setExDat(sheet, row + 4, col + 1, contarEntRact1[1]);
                                setExDat(sheet, row + 4, col + 2, "" + contarPorcentEntRact1 + "%");
                                setExDat(sheet, row + 4, col + 3, esperadosProgEdUnicoRact);
                                setExDat(sheet, row + 4, col + 4, "" + contarPorcentEspRact1 + "%");

                                setExDat(sheet, row + 5, col, "RACT 2");
                                setExDat(sheet, row + 5, col + 1, contarEntRact2[1]);
                                setExDat(sheet, row + 5, col + 2, "" + contarPorcentEntRact2 + "%");
                                setExDat(sheet, row + 5, col + 3, esperadosProgEdUnicoRact);
                                setExDat(sheet, row + 5, col + 4, "" + contarPorcentEspRact2 + "%");

                                setExDat(sheet, row + 6, col, "RACT 3");
                                setExDat(sheet, row + 6, col + 1, contarEntRact3[1]);
                                setExDat(sheet, row + 6, col + 2, "" + contarPorcentEntRact3 + "%");
                                setExDat(sheet, row + 6, col + 3, esperadosProgEdUnicoRact);
                                setExDat(sheet, row + 6, col + 4, "" + contarPorcentEspRact3 + "%");

                                setExDat(sheet, row + 7, col, "Todos los RACTS");
                                setExDat(sheet, row + 7, col + 1, contarEntEspProgEd[1]);
                                setExDat(sheet, row + 7, col + 2, "" + porcentEnt + "%");
                                setExDat(sheet, row + 7, col + 3, contarEntEspProgEd[2]);
                                setExDat(sheet, row + 7, col + 4, "" + porcentEsp + "%");

                                setStyleCell(sheet, headerTabla, row, col);
                                setStyleCell(sheet, headerTabla, row, col + 1);
                                setStyleCell(sheet, headerTabla, row, col + 2);
                                setStyleCell(sheet, headerTabla, row, col + 3);
                                setStyleCell(sheet, headerTabla, row, col + 4);

                                setStyleCell(sheet, headerTabla, row + 2, col);
                                setStyleCell(sheet, headerTabla, row + 2, col + 1);
                                setStyleCell(sheet, headerTabla, row + 2, col + 2);
                                setStyleCell(sheet, headerTabla, row + 2, col + 3);

                                setStyleCell(sheet, headerTabla, row + 3, col);
                                setStyleCell(sheet, headerTabla, row + 3, col + 1);
                                setStyleCell(sheet, headerTabla, row + 3, col + 2);
                                setStyleCell(sheet, headerTabla, row + 3, col + 3);
                                setStyleCell(sheet, headerTabla, row + 3, col + 4);

                                bandPe = true;

                                pos++;
                            }

                        }
                        //               if (bandPe == true) {
                        //                   if (col >= 25) {
                        //                       row = row + 14;
                        //                       col = -5;
                        //                   }
                        //                   col = col + 6;
                        //                   bandPe = false;
                        //               }
                        pos++;
                    }
                    //}
                    //aqui modifique Jesus Ruelas                                                          

                } // fin del la comparacon de plan
            } // fin del for por plan de estudios

            //definimos encabezado
            sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);
        } // fin de si es por entregados a tiempoif(entregados)

        //Porcentaje de Avance Global Incompleto
        if (reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo")
                || reporte.equalsIgnoreCase("Porcentaje de Avance Global Incompleto")
                || reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo e Incompleto")) {
            nombreLibro = reporte + nombreLibro;

            //definimos encabezado
            sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);

            //mostraremos tabla con
            // Programas educativos //  Total Racs entregados // Total Esperados
            //preparamos informacion para insertar
            List<Programaeducativo> programasByUnidad = getProgramasByUnidad();

            //imrpiimiremos la tabla
            // Definimos los encabezados de la tabla
            setExDat(sheet, 13, 17, "Programa Educativo");
            setExDat(sheet, 13, 18, "Total de RACT Entregados");
            setExDat(sheet, 13, 19, "Total de RACT Esperados");
            setExDat(sheet, 13, 20, " ");

            setStyleCell(sheet, headerTabla, 13, 17);
            setStyleCell(sheet, headerTabla, 13, 18);
            setStyleCell(sheet, headerTabla, 13, 19);

            /*sheet.autoSizeColumn(2);
            sheet.autoSizeColumn(3);
            sheet.autoSizeColumn(4);*/

            //imprimimos la informacion en su lugar

            int prow = 14;
            for (Programaeducativo programa : programasByUnidad) {
                if (selectProgramEducativo.contains(programa.getPedid().toString())) {
                    setExDat(sheet, prow, 17, programa.getPednombre());
                    setExDat(sheet, prow, 18, 75);
                    setExDat(sheet, prow, 19, 100);
                    prow++;
                }
            }
            //Se obtiene consulta con los parametros seleccionados
            ArrayList<String> entregados = esperadosDelegate.getFullProgramaEdu(unidadacademica.getUacid(),
                    Plan, Programa, Ciclo);

            //agregamos programacion de grafico
            if (tipografico.equalsIgnoreCase("barras")) {
                BarChartCL demo1 = new BarChartCL("Estadsticas de Reportes Entregados por Programa Educativo",
                        entregados, "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }
            if (tipografico.equalsIgnoreCase("linea")) {
                LineChartDemo1 demo1 = new LineChartDemo1(
                        "Estadsticas de Reportes Entregados por Programa Educativo", entregados,
                        "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }
            if (tipografico.equalsIgnoreCase("pastel")) {
                PieChartDemo1 demo1 = new PieChartDemo1(
                        "Estadsticas de Reportes Entregados por Programa Educativo", entregados,
                        "ExcelPOIGrafica1");
                demo1.addChartToExcel(demo1.createChart(demo1.createDataset()), workbook);
            }

            //Se acaba grafico
            //recorreremos todo el list aux para revisar los programas educativos que utiliza
            //aun que podemos usar el selectProgramaeducativo

            /* Programacion de Hojas*/
            for (Programaeducativo programa : programasByUnidad) {
                if (selectProgramEducativo.contains(Integer.toString(programa.getPedclave()))) {
                    //sheet = cabezeraGeneralExcel(sheet,uabcLogo,style); lo moveremos al final de la hoja para que no sea mdoficada la imagen
                    sheet = workbook.createSheet(programa.getPednombre());
                    sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);
                    //setExDat(sheet, 8, 3, "Concentrado de Reporte de Avance de Contenido Temtico de Entregados por Programa Educativo");

                    boolean autotam = true;

                    //informacion de programa educativo tabla
                    setExDat(sheet, 14, 1, "Clave");
                    setExDat(sheet, 14, 2, "Programa Educativo");
                    setExDat(sheet, 14, 3, "Plan de Estudios");
                    setExDat(sheet, 14, 4, "Responsable");

                    setStyleCell(sheet, headerTabla, 14, 1);
                    setStyleCell(sheet, headerTabla, 14, 2);
                    setStyleCell(sheet, headerTabla, 14, 3);
                    setStyleCell(sheet, headerTabla, 14, 4);

                    //llenado de informacion
                    // se tiene imprimir por cada plan de estudios???

                    //                    Responsableprogramaeducativo responsable = filtrosBeanHelper.getConsultaDelegate().getResponsableProgramaEducativoByID(programa.getPedid());

                    setExDat(sheet, 15, 1, programa.getPedclave());
                    setExDat(sheet, 15, 2, programa.getPednombre());
                    setExDat(sheet, 15, 3, "");
                    setExDat(sheet, 15, 4, "");
                    setStyleCell(sheet, borderstabla, 15, 1);
                    setStyleCell(sheet, borderstabla, 15, 2);
                    setStyleCell(sheet, borderstabla, 15, 3);
                    setStyleCell(sheet, borderstabla, 15, 4);

                    List<Planestudio> planes = filtrosBeanHelper.getConsultaDelegate()
                            .getPlanesByPrograma(programa.getPedid());
                    boolean uno = true;
                    int currow = 20;

                    Planestudio planeact = new Planestudio();
                    for (Planestudio planeactn : planes) {
                        planeact = planeactn;
                        break;
                    }

                    ReporteAvanceAux tempAux = new ReporteAvanceAux();
                    for (ReporteAvanceAux aux : listaAux) {
                        tempAux = aux;
                        break;
                    }

                    //intentaremos usar un solo plan
                    setExDat(sheet, currow, 1, "?reas de conocimiento");
                    setStyleCell(sheet, headerTabla, currow, 1);
                    currow++;
                    List<Areaconocimiento> areasConocimiento = filtrosBeanHelper.getConsultaDelegate()
                            .getAreasByPlanClave(programa.getPedclave(),
                                    tempAux.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getPlanestudio().getPesvigenciaPlan());

                    for (Areaconocimiento areaCon : areasConocimiento) {
                        //clave , area de conocimiento, responsable
                        setExDat(sheet, currow, 1, "Clave");
                        setExDat(sheet, currow, 2, "?rea de conocimiento");
                        setExDat(sheet, currow, 3, "Responsable");
                        setStyleCell(sheet, headerTabla, currow, 1);
                        setStyleCell(sheet, headerTabla, currow, 2);
                        setStyleCell(sheet, headerTabla, currow, 3);

                        currow++;
                        setExDat(sheet, currow, 1, areaCon.getAcoclave()); //clave
                        setExDat(sheet, currow, 2, areaCon.getAconombre()); //area conociminto
                        setExDat(sheet, currow, 3, ""); //responsable

                        currow += 2;
                        //obtenemos las unidades de aprendisake
                        setExDat(sheet, currow, 1, "Clave unidad de aprendizaje");
                        setExDat(sheet, currow, 2, "Unidad de aprendizaje");
                        setExDat(sheet, currow, 3, "No. de empleado");
                        setExDat(sheet, currow, 4, "Nombre del profesor");
                        setExDat(sheet, currow, 5, "Grupo");
                        setExDat(sheet, currow, 6, "% Avance 1er reporte");
                        setExDat(sheet, currow, 7, "Fecha de elaboracin 1er RACT");
                        setExDat(sheet, currow, 8, "% Avance 2do reporte");
                        setExDat(sheet, currow, 9, "Fecha de elaboracin 2do RACT");
                        setExDat(sheet, currow, 10, "% Avance 3er reporte");
                        setExDat(sheet, currow, 11, "Fecha de elaboracin 3er RACT");

                        //autosize para la columna
                        if (autotam) {
                            sheet.autoSizeColumn(2);
                            sheet.autoSizeColumn(4);
                            sheet.autoSizeColumn(11);
                            autotam = false;
                        }

                        // para formatear toda la linea
                        for (int i = 1; i <= 11; i++) {
                            //tenemos qu aajustar texto
                            //tenemos que centrar el texto
                            //cambiar el color de fondo
                            setStyleCell(sheet, headerTabla, currow, i);
                        }

                        currow++;
                        //List<Unidadaprendizaje> unidadesAprendisaje = filtrosBeanHelper.getConsultaDelegate().getUnidadByArea(areaCon.getAcoclave());

                        //de ls listaAux separamos los los reportes que correspondan a la unidad de aprendisaje acutal
                        ArrayList<ReporteAvanceAux> tempListAux = new ArrayList<ReporteAvanceAux>();
                        for (ReporteAvanceAux aux : listaAux) {
                            if (aux.getAreaConocimiento().getAcoclave() == areaCon.getAcoclave()
                                    && programa.getPedclave() == aux.getReporteAvance()
                                            .getUnidadaprendizajeImparteProfesor().getGrupo().getPlanestudio()
                                            .getProgramaeducativo().getPedclave()) {
                                tempListAux.add(aux);
                            }
                        }

                        //List<UnidadaprendizajeImparteProfesor> unidadesProfesor  = filtrosBeanHelper.getConsultaDelegate().getUnidadesAprendisajeImparteProf(unidadApren.getUapid());
                        int uniprofeTemp = 0;
                        for (ReporteAvanceAux auxRacs : tempListAux) {

                            String nompreP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getPronombre();
                            String apellidoPP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoPaterno();
                            String apellidoPM = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoMaterno();
                            int claveUnidadApren = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje().getUapclave();
                            String nombreUnidad = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                    .getUapnombre();

                            uniprofeTemp = claveUnidadApren;
                            setExDat(sheet, currow, 1, claveUnidadApren); //clave
                            setExDat(sheet, currow, 2, nombreUnidad); //nombre unidad
                            //reporteAvance.unidadaprendizajeImparteProfesor.profesor.pronumeroEmpleado
                            setExDat(sheet, currow, 3,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                            .getProfesor().getPronumeroEmpleado()); //numero empleado
                            setExDat(sheet, currow, 4, apellidoPP + " " + apellidoPM + " " + nompreP); //nombre maestro
                            setExDat(sheet, currow, 5,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getGponumero()
                                            + "-"
                                            + auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                                    .getUiptipoSubgrupo()
                                            + "-" + auxRacs.getReporteAvance()
                                                    .getUnidadaprendizajeImparteProfesor().getUipsubgrupo()); //grupo numero

                            //marcamos bordes
                            for (int i = 1; i <= 5; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }
                            float totalpor = 0;
                            if (auxRacs.getStatusRact1() != null && auxRacs.getStatusRact2() != null
                                    && auxRacs.getStatusRact3() != null) {
                                totalpor = auxRacs.getPorcentAvanceRact1() + auxRacs.getPorcentAvanceRact2()
                                        + auxRacs.getPorcentAvanceRact3();
                            }

                            //tienne que ser entregados/enviados
                            if (auxRacs.getStatusRact1() != null) {

                                System.out.println("Entro a enviados 1");
                                setExDat(sheet, currow, (4 + (1 * 2)), auxRacs.getPorcentAvanceRact1()); //% avance 7**

                                if (auxRacs.getFechaElaboracRact1() != null) {
                                    setExDat(sheet, currow, (4 + (1 * 2) + 1),
                                            auxRacs.getFechaElaboracRact1().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (4 + (1 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (4 + (1 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (1 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact2() != null) {

                                setExDat(sheet, currow, (4 + (2 * 2)), auxRacs.getPorcentAvanceRact2()); //% avance 7**

                                if (auxRacs.getFechaElaboracRact2() != null) {
                                    setExDat(sheet, currow, (4 + (2 * 2) + 1),
                                            auxRacs.getFechaElaboracRact2().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (4 + (2 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (4 + (2 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (2 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact3() != null) {

                                setExDat(sheet, currow, (4 + (3 * 2)), auxRacs.getPorcentAvanceRact3()); //% avance 7**
                                if (auxRacs.getFechaElaboracRact3() != null) {
                                    setExDat(sheet, currow, (4 + (3 * 2) + 1),
                                            auxRacs.getFechaElaboracRact3().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (4 + (3 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (4 + (3 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (3 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2) + 1));
                            }

                            currow++;
                        }

                        currow += 2;
                    }

                    //cabeceran excel                         
                    //sheet = cabezeraGeneralExcel(sheet,uabcLogo,style);
                } // fin del la comparacon de plan
            } // fin del for por plan de estudios

        } // fin de si es por entregados if(entregados)

    } //fin de programas educativos

    if (criterio.equalsIgnoreCase("area_conocimiento")) {
        HSSFSheet sheet = workbook.createSheet("Graficos");
        nombreLibro = "- Area de conocimiento";

        if (reporte.equalsIgnoreCase("entregados") || reporte.equalsIgnoreCase("noentregados")
                || reporte.equalsIgnoreCase("entregadosynoentregados") ||
                //Aqui modifique Jesus Ruelas 26 oct 2015
                reporte.equalsIgnoreCase("entregadosatiempo")
                || reporte.equalsIgnoreCase("entregadosdespueslimite")
                || reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues") ||
                //Aqui modifique Jesus Ruelas 26 oct 2015
                reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo")
                || reporte.equalsIgnoreCase("Porcentaje de Avance Global Incompleto")
                || reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo e Incompleto")) {

            if (reporte.equalsIgnoreCase("entregados"))
                nombreLibro = "Entregados " + nombreLibro;

            if (reporte.equalsIgnoreCase("noentregados"))
                nombreLibro = "No Entregados " + nombreLibro;

            if (reporte.equalsIgnoreCase("entregadosynoentregados"))
                nombreLibro = "Entregados Y No Entregados " + nombreLibro;

            //Aqui modifique Jesus Ruelas 26 oct 2015               
            if (reporte.equalsIgnoreCase("entregadosatiempo"))
                nombreLibro = "Entregados a tiempo " + nombreLibro;

            if (reporte.equalsIgnoreCase("entregadosdespueslimite"))
                nombreLibro = "Entregados despus de fecha lmite " + nombreLibro;

            if (reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues"))
                nombreLibro = "Entregados a tiempo y despues de fecha lmite " + nombreLibro;
            //Aqui modifique Jesus Ruelas 26 oct 2015

            if (reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo"))
                nombreLibro = "Porcentaje de Avance Global Completo " + nombreLibro;

            if (reporte.equalsIgnoreCase("Porcentaje de Avance Global Incompleto"))
                nombreLibro = "Porcentaje de Avance Global Incompleto " + nombreLibro;

            if (reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo e Incompleto"))
                nombreLibro = "Porcentaje de Avance Global Completo e Incompleto " + nombreLibro;

            //definimos encabezado
            //sheet = cabezeraGeneralExcel(sheet,uabcLogo,style);

            //mostraremos tabla con
            // Programas educativos //  Total Racs entregados // Total Esperados
            //preparamos informacion para insertar
            List<Programaeducativo> programasByUnidad = getProgramasByUnidad();
            List<Areaconocimiento> areasByUnidad = getAreasByPlanesEstudioClave();

            /* Programacion de Hojas*/
            for (Areaconocimiento areaConocimiento : areasByUnidad) {
                if (selectAreaConocimiento.contains(Integer.toString(areaConocimiento.getAcoclave()))) {
                    //aqui creamos la hoja para el programa

                    ArrayList<ReporteAvanceAux> tempListAux = new ArrayList<ReporteAvanceAux>();
                    for (ReporteAvanceAux aux : listaAux) {
                        if (aux.getAreaConocimiento().getAcoclave() == areaConocimiento.getAcoclave()) {
                            tempListAux.add(aux);
                        }
                    }

                    //// de este for
                    // para no imprirmir hojas vacias
                    if (tempListAux.size() > 0) {

                        sheet = workbook.createSheet(areaConocimiento.getAconombre());
                        //sheet = cabezeraGeneralExcel(sheet,uabcLogo,style); lo moveremos al final de la hoja para que no sea mdoficada la imagen
                        setExDat(sheet, 8, 3,
                                "Concentrado de Reporte de Avance de Contenido Temtico de Entregados por Area de conocimiento");

                        boolean autotam = true;

                        int currow = 18;

                        //Aqui modifique Jesus Ruelas 26 oct 2015
                        if (reporte.equalsIgnoreCase("entregadosatiempo")
                                || reporte.equalsIgnoreCase("entregadosdespueslimite")
                                || reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues")) {
                            if (ract.equalsIgnoreCase("1") || ract.equalsIgnoreCase("2")
                                    || ract.equalsIgnoreCase("3")) {
                                setExDat(sheet, currow, 1, "Fecha Corte");
                                setExDat(sheet, currow, 2, "Fecha Lmite");
                                setStyleCell(sheet, headerTabla, currow, 1);
                                setStyleCell(sheet, headerTabla, currow, 2);
                                currow++;
                                setExDat(sheet, currow, 1, tempListAux.get(0).getFechaCorte().toString());
                                setExDat(sheet, currow, 2, tempListAux.get(0).getFechaLimite().toString());
                                currow++;
                                currow++;
                            } else {
                                ReporteAux rep1 = new ReporteAux();
                                ReporteAux rep2 = new ReporteAux();
                                ReporteAux rep3 = new ReporteAux();

                                rep1.setNumRact(1);
                                rep2.setNumRact(2);
                                rep3.setNumRact(3);

                                rep1.setCescicloEscolar(tempListAux.get(0).getReporteAvance()
                                        .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                        .getCicloescolar().getCescicloEscolar());
                                rep2.setCescicloEscolar(tempListAux.get(0).getReporteAvance()
                                        .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                        .getCicloescolar().getCescicloEscolar());
                                rep3.setCescicloEscolar(tempListAux.get(0).getReporteAvance()
                                        .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                        .getCicloescolar().getCescicloEscolar());

                                ReporteAvanceAux ra1 = new ReporteAvanceAux();
                                ReporteAvanceAux ra2 = new ReporteAvanceAux();
                                ReporteAvanceAux ra3 = new ReporteAvanceAux();

                                ra1 = filtrosBeanHelper.TiempoLimiteYCorte(rep1);
                                ra2 = filtrosBeanHelper.TiempoLimiteYCorte(rep2);
                                ra3 = filtrosBeanHelper.TiempoLimiteYCorte(rep3);

                                setExDat(sheet, currow, 1, "Fecha Corte Ract 1");
                                setExDat(sheet, currow, 2, "Fecha Lmite Ract 1");
                                setStyleCell(sheet, headerTabla, currow, 1);
                                setStyleCell(sheet, headerTabla, currow, 2);
                                currow++;
                                setExDat(sheet, currow, 1, ra1.getFechaCorte().toString());
                                setExDat(sheet, currow, 2, ra1.getFechaLimite().toString());
                                //currow++;                       
                                setExDat(sheet, currow - 1, 4, "Fecha Corte Ract 2");
                                setExDat(sheet, currow - 1, 5, "Fecha Lmite Ract 2");
                                setStyleCell(sheet, headerTabla, currow - 1, 4);
                                setStyleCell(sheet, headerTabla, currow - 1, 5);
                                //currow++;                            
                                setExDat(sheet, currow, 4, ra2.getFechaCorte().toString());
                                setExDat(sheet, currow, 5, ra2.getFechaLimite().toString());
                                //currow++;                       
                                setExDat(sheet, currow - 1, 7, "Fecha Corte Ract 3");
                                setExDat(sheet, currow - 1, 8, "Fecha Lmite Ract 3");
                                setStyleCell(sheet, headerTabla, currow - 1, 7);
                                setStyleCell(sheet, headerTabla, currow - 1, 8);
                                //currow++;                            
                                setExDat(sheet, currow, 7, ra3.getFechaCorte().toString());
                                setExDat(sheet, currow, 8, ra3.getFechaLimite().toString());
                                currow++;
                                currow++;
                            }
                        }
                        //Aqui modifique Jesus Ruelas 26 oct 2015

                        setExDat(sheet, currow, 1, "Clave unidad de aprendizaje");
                        setExDat(sheet, currow, 2, "Unidad de aprendizaje");
                        setExDat(sheet, currow, 3, "No. de empleado");
                        setExDat(sheet, currow, 4, "Nombre del profesor");
                        setExDat(sheet, currow, 5, "Grupo");
                        setExDat(sheet, currow, 6, "% Avance 1er reporte");
                        setExDat(sheet, currow, 7, "Fecha de elaboracin 1er RACT");
                        setExDat(sheet, currow, 8, "% Avance 2do reporte");
                        setExDat(sheet, currow, 9, "Fecha de elaboracin 2do RACT");
                        setExDat(sheet, currow, 10, "% Avance 3er reporte");
                        setExDat(sheet, currow, 11, "Fecha de elaboracin 3er RACT");

                        //autosize para la columna
                        if (autotam) {
                            sheet.autoSizeColumn(2);
                            sheet.autoSizeColumn(4);
                            sheet.autoSizeColumn(11);
                            autotam = false;
                        }
                        // para formatear toda la linea
                        for (int i = 1; i <= 11; i++) {
                            setStyleCell(sheet, headerTabla, currow, i);
                        }
                        currow++;

                        int uniprofeTemp = 0;
                        for (ReporteAvanceAux auxRacs : tempListAux) {

                            //marcamos bordes
                            for (int i = 1; i <= 11; i++) {
                                setExDat(sheet, currow, i, " ");
                            }
                            for (int i = 1; i <= 11; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }

                            String nompreP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getPronombre();
                            String apellidoPP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoPaterno();
                            String apellidoPM = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoMaterno();
                            int claveUnidadApren = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje().getUapclave();
                            String nombreUnidad = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                    .getUapnombre();

                            uniprofeTemp = claveUnidadApren;
                            setExDat(sheet, currow, 1, claveUnidadApren); //clave
                            setExDat(sheet, currow, 2, nombreUnidad); //nombre unidad
                            //reporteAvance.unidadaprendizajeImparteProfesor.profesor.pronumeroEmpleado
                            setExDat(sheet, currow, 3,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                            .getProfesor().getPronumeroEmpleado()); //numero empleado
                            setExDat(sheet, currow, 4, apellidoPP + " " + apellidoPM + " " + nompreP); //nombre maestro
                            setExDat(sheet, currow, 5,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getGponumero()
                                            + "-"
                                            + auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                                    .getUiptipoSubgrupo()
                                            + "-" + auxRacs.getReporteAvance()
                                                    .getUnidadaprendizajeImparteProfesor().getUipsubgrupo()); //grupo numero

                            //marcamos bordes
                            for (int i = 1; i <= 5; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }
                            //tienne que ser entregados/enviados
                            if (auxRacs.getStatusRact1() != null) {

                                System.out.println("Entro a enviados 1");
                                setExDat(sheet, currow, (4 + (1 * 2)), auxRacs.getPorcentAvanceRact1()); //% avance 7**

                                if (auxRacs.getFechaElaboracRact1() != null) {
                                    setExDat(sheet, currow, (4 + (1 * 2) + 1),
                                            auxRacs.getFechaElaboracRact1().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (4 + (1 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (4 + (1 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (1 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact2() != null) {

                                setExDat(sheet, currow, (4 + (2 * 2)), auxRacs.getPorcentAvanceRact2()); //% avance 7**

                                if (auxRacs.getFechaElaboracRact2() != null) {
                                    setExDat(sheet, currow, (4 + (2 * 2) + 1),
                                            auxRacs.getFechaElaboracRact2().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (4 + (2 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (4 + (2 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (2 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact3() != null) {

                                setExDat(sheet, currow, (4 + (3 * 2)), auxRacs.getPorcentAvanceRact3()); //% avance 7**
                                if (auxRacs.getFechaElaboracRact3() != null) {
                                    setExDat(sheet, currow, (4 + (3 * 2) + 1),
                                            auxRacs.getFechaElaboracRact3().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (4 + (3 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (4 + (3 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (3 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2) + 1));
                            }

                            currow++;
                        }
                    }
                    // delfindelfor

                    //fin de codigo e imrpesion de cabezera
                    sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);
                }

            } // fin del for por plan de estudios     
        } // fin de si es por entregados if(entregados)
    } //fin de areas de conocimiento

    if (criterio.equalsIgnoreCase("unidad_aprendizaje")) {
        HSSFSheet sheet = workbook.createSheet("Graficos");
        nombreLibro = "- Unidad de aprendizaje";

        if (reporte.equalsIgnoreCase("entregados") || reporte.equalsIgnoreCase("noentregados")
                || reporte.equalsIgnoreCase("entregadosynoentregados") ||
                //Aqui modifique Jesus Ruelas 26 oct 2015
                reporte.equalsIgnoreCase("entregadosatiempo")
                || reporte.equalsIgnoreCase("entregadosdespueslimite")
                || reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues") ||
                //Aqui modifique Jesus Ruelas 26 oct 2015
                reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo")
                || reporte.equalsIgnoreCase("Porcentaje de Avance Global Incompleto")
                || reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo e Incompleto")) {

            if (reporte.equalsIgnoreCase("entregados"))
                nombreLibro = "Entregados " + nombreLibro;

            if (reporte.equalsIgnoreCase("noentregados"))
                nombreLibro = "No Entregados " + nombreLibro;

            if (reporte.equalsIgnoreCase("entregadosynoentregados"))
                nombreLibro = "Entregados Y No Entregados " + nombreLibro;

            //Aqui modifique Jesus Ruelas 26 oct 2015               
            if (reporte.equalsIgnoreCase("entregadosatiempo"))
                nombreLibro = "Entregados a tiempo " + nombreLibro;

            if (reporte.equalsIgnoreCase("entregadosdespueslimite"))
                nombreLibro = "Entregados despus de fecha lmite " + nombreLibro;

            if (reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues"))
                nombreLibro = "Entregados a tiempo y despues de fecha lmite " + nombreLibro;
            //Aqui modifique Jesus Ruelas 26 oct 2015

            if (reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo"))
                nombreLibro = "Porcentaje de Avance Global Completo " + nombreLibro;

            if (reporte.equalsIgnoreCase("Porcentaje de Avance Global Incompleto"))
                nombreLibro = "Porcentaje de Avance Global Incompleto " + nombreLibro;

            if (reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo e Incompleto"))
                nombreLibro = "Porcentaje de Avance Global Completo e Incompleto " + nombreLibro;

            //definimos encabezado
            //sheet = cabezeraGeneralExcel(sheet,uabcLogo,style);

            //mostraremos tabla con
            // Programas educativos //  Total Racs entregados // Total Esperados
            //preparamos informacion para insertar
            List<Programaeducativo> programasByUnidad = getProgramasByUnidad();
            List<Unidadaprendizaje> unidadesByArea = getUnidadesByAreaAconocimientoClave();

            /* Programacion de Hojas*/
            for (Unidadaprendizaje unidadAprend : unidadesByArea) {
                if (selectUnidadAprendisaje.contains(Integer.toString(unidadAprend.getUapclave()))) {
                    //aqui creamos la hoja para el programa

                    ArrayList<ReporteAvanceAux> tempListAux = new ArrayList<ReporteAvanceAux>();
                    for (ReporteAvanceAux aux : listaAux) {
                        if (aux.reporteAvance.getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                .getUapclave() == unidadAprend.getUapclave()) {
                            tempListAux.add(aux);
                        }
                    }

                    //// de este for
                    // para no imprirmir hojas vacias
                    if (tempListAux.size() > 0) {

                        sheet = workbook.createSheet(unidadAprend.getUapnombre());
                        //sheet = cabezeraGeneralExcel(sheet,uabcLogo,style); lo moveremos al final de la hoja para que no sea mdoficada la imagen
                        setExDat(sheet, 8, 3,
                                "Concentrado de Reporte de Avance de Contenido Temtico de Entregados por Unidad de aprendizaje");

                        boolean autotam = true;

                        int currow = 18;

                        //Aqui modifique Jesus Ruelas 26 oct 2015
                        if (reporte.equalsIgnoreCase("entregadosatiempo")
                                || reporte.equalsIgnoreCase("entregadosdespueslimite")
                                || reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues")) {
                            if (ract.equalsIgnoreCase("1") || ract.equalsIgnoreCase("2")
                                    || ract.equalsIgnoreCase("3")) {

                                setExDat(sheet, currow, 1, "Fecha Corte");
                                setExDat(sheet, currow, 2, "Fecha Lmite");
                                setStyleCell(sheet, headerTabla, currow, 1);
                                setStyleCell(sheet, headerTabla, currow, 2);
                                currow++;
                                setExDat(sheet, currow, 1, tempListAux.get(0).getFechaCorte().toString());
                                setExDat(sheet, currow, 2, tempListAux.get(0).getFechaLimite().toString());
                                currow++;
                                currow++;
                            } else {
                                ReporteAux rep1 = new ReporteAux();
                                ReporteAux rep2 = new ReporteAux();
                                ReporteAux rep3 = new ReporteAux();

                                rep1.setNumRact(1);
                                rep2.setNumRact(2);
                                rep3.setNumRact(3);

                                rep1.setCescicloEscolar(tempListAux.get(0).getReporteAvance()
                                        .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                        .getCicloescolar().getCescicloEscolar());
                                rep2.setCescicloEscolar(tempListAux.get(0).getReporteAvance()
                                        .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                        .getCicloescolar().getCescicloEscolar());
                                rep3.setCescicloEscolar(tempListAux.get(0).getReporteAvance()
                                        .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                        .getCicloescolar().getCescicloEscolar());

                                ReporteAvanceAux ra1 = new ReporteAvanceAux();
                                ReporteAvanceAux ra2 = new ReporteAvanceAux();
                                ReporteAvanceAux ra3 = new ReporteAvanceAux();

                                ra1 = filtrosBeanHelper.TiempoLimiteYCorte(rep1);
                                ra2 = filtrosBeanHelper.TiempoLimiteYCorte(rep2);
                                ra3 = filtrosBeanHelper.TiempoLimiteYCorte(rep3);

                                setExDat(sheet, currow, 1, "Fecha Corte Ract 1");
                                setExDat(sheet, currow, 2, "Fecha Lmite Ract 1");
                                setStyleCell(sheet, headerTabla, currow, 1);
                                setStyleCell(sheet, headerTabla, currow, 2);
                                currow++;
                                setExDat(sheet, currow, 1, ra1.getFechaCorte().toString());
                                setExDat(sheet, currow, 2, ra1.getFechaLimite().toString());
                                //currow++;                       

                                setExDat(sheet, currow - 1, 4, "Fecha Corte Ract 2");
                                setExDat(sheet, currow - 1, 5, "Fecha Lmite Ract 2");
                                setStyleCell(sheet, headerTabla, currow - 1, 4);
                                setStyleCell(sheet, headerTabla, currow - 1, 5);
                                //currow++;                            
                                setExDat(sheet, currow, 4, ra2.getFechaCorte().toString());
                                setExDat(sheet, currow, 5, ra2.getFechaLimite().toString());
                                //currow++;                       

                                setExDat(sheet, currow - 1, 7, "Fecha Corte Ract 3");
                                setExDat(sheet, currow - 1, 8, "Fecha Lmite Ract 3");
                                setStyleCell(sheet, headerTabla, currow - 1, 7);
                                setStyleCell(sheet, headerTabla, currow - 1, 8);
                                //currow++;                            
                                setExDat(sheet, currow, 7, ra3.getFechaCorte().toString());
                                setExDat(sheet, currow, 8, ra3.getFechaLimite().toString());
                                currow++;
                                currow++;
                            }
                        }
                        //Aqui modifique Jesus Ruelas 26 oct 2015

                        setExDat(sheet, currow, 1, "Clave unidad de aprendizaje");
                        setExDat(sheet, currow, 2, "Unidad de aprendizaje");
                        setStyleCell(sheet, headerTabla, currow, 1);
                        setStyleCell(sheet, headerTabla, currow, 2);
                        currow++;
                        int claveUnidadApren = tempListAux.get(0).getReporteAvance()
                                .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje().getUapclave();
                        String nombreUnidad = tempListAux.get(0).getReporteAvance()
                                .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje().getUapnombre();

                        int uniprofeTemp = 0;

                        uniprofeTemp = claveUnidadApren;
                        setExDat(sheet, currow, 1, claveUnidadApren); //clave
                        setExDat(sheet, currow, 2, nombreUnidad); //nombre unidad
                        currow++;

                        //autosize para la columna
                        if (autotam) {
                            sheet.autoSizeColumn(2);
                            sheet.autoSizeColumn(4);
                            sheet.autoSizeColumn(11);
                            autotam = false;
                        }

                        setExDat(sheet, currow, 1, "No. de empleado");
                        setExDat(sheet, currow, 2, "Nombre del profesor");
                        setExDat(sheet, currow, 3, "Grupo");
                        setExDat(sheet, currow, 4, "% Avance 1er reporte");
                        setExDat(sheet, currow, 5, "Fecha de elaboracin 1er RACT");
                        setExDat(sheet, currow, 6, "% Avance 2do reporte");
                        setExDat(sheet, currow, 7, "Fecha de elaboracin 2do RACT");
                        setExDat(sheet, currow, 8, "% Avance 3er reporte");
                        setExDat(sheet, currow, 9, "Fecha de elaboracin 3er RACT");
                        // para formatear toda la linea
                        for (int i = 1; i <= 9; i++) {
                            setStyleCell(sheet, headerTabla, currow, i);
                        }
                        //currow++;
                        currow++;

                        for (ReporteAvanceAux auxRacs : tempListAux) {

                            //marcamos bordes
                            for (int i = 1; i <= 9; i++) {
                                setExDat(sheet, currow, i, " ");
                            }
                            for (int i = 1; i <= 9; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }

                            String nompreP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getPronombre();
                            String apellidoPP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoPaterno();
                            String apellidoPM = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoMaterno();

                            //reporteAvance.unidadaprendizajeImparteProfesor.profesor.pronumeroEmpleado
                            setExDat(sheet, currow, 1,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                            .getProfesor().getPronumeroEmpleado()); //numero empleado
                            setExDat(sheet, currow, 2, apellidoPP + " " + apellidoPM + " " + nompreP); //nombre maestro
                            setExDat(sheet, currow, 3,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getGponumero()
                                            + "-"
                                            + auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                                    .getUiptipoSubgrupo()
                                            + "-" + auxRacs.getReporteAvance()
                                                    .getUnidadaprendizajeImparteProfesor().getUipsubgrupo()); //grupo numero

                            //marcamos bordes
                            for (int i = 1; i <= 5; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }
                            //tienne que ser entregados/enviados
                            if (auxRacs.getStatusRact1() != null) {

                                System.out.println("Entro a enviados 1");
                                setExDat(sheet, currow, (2 + (1 * 2)), auxRacs.getPorcentAvanceRact1()); //% avance 7**

                                if (auxRacs.getFechaElaboracRact1() != null) {
                                    setExDat(sheet, currow, (2 + (1 * 2) + 1),
                                            auxRacs.getFechaElaboracRact1().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (2 + (1 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (2 + (1 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (2 + (1 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (2 + (1 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (2 + (1 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (2 + (1 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (2 + (1 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact2() != null) {

                                setExDat(sheet, currow, (2 + (2 * 2)), auxRacs.getPorcentAvanceRact2()); //% avance 7**

                                if (auxRacs.getFechaElaboracRact2() != null) {
                                    setExDat(sheet, currow, (2 + (2 * 2) + 1),
                                            auxRacs.getFechaElaboracRact2().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (2 + (2 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (2 + (2 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (2 + (2 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (2 + (2 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (2 + (2 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (2 + (2 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (2 + (2 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact3() != null) {

                                setExDat(sheet, currow, (2 + (3 * 2)), auxRacs.getPorcentAvanceRact3()); //% avance 7**
                                if (auxRacs.getFechaElaboracRact3() != null) {
                                    setExDat(sheet, currow, (2 + (3 * 2) + 1),
                                            auxRacs.getFechaElaboracRact3().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (2 + (3 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (2 + (3 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (2 + (3 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (2 + (3 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (2 + (3 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (2 + (3 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (2 + (3 * 2) + 1));
                            }

                            currow++;
                        }
                    }
                    // delfindelfor

                    //fin de codigo e imrpesion de cabezera
                    sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);
                }

            } // fin del for por plan de estudios     
        } // fin de si es por entregados if(entregados)
    } //fin de unidad de aprendizaje

    if (criterio.equalsIgnoreCase("profesor")) {
        HSSFSheet sheet = workbook.createSheet("Graficos");
        nombreLibro = "- Profesor";

        if (reporte.equalsIgnoreCase("entregados") || reporte.equalsIgnoreCase("noentregados")
                || reporte.equalsIgnoreCase("entregadosynoentregados") ||
                //Aqui modifique Jesus Ruelas 26 oct 2015
                reporte.equalsIgnoreCase("entregadosatiempo")
                || reporte.equalsIgnoreCase("entregadosdespueslimite")
                || reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues") ||
                //Aqui modifique Jesus Ruelas 26 oct 2015
                reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo")
                || reporte.equalsIgnoreCase("Porcentaje de Avance Global Incompleto")
                || reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo e Incompleto")) {

            if (reporte.equalsIgnoreCase("entregados"))
                nombreLibro = "Entregados " + nombreLibro;

            if (reporte.equalsIgnoreCase("noentregados"))
                nombreLibro = "No Entregados " + nombreLibro;

            if (reporte.equalsIgnoreCase("entregadosynoentregados"))
                nombreLibro = "Entregados Y No Entregados " + nombreLibro;

            //Aqui modifique Jesus Ruelas 26 oct 2015               
            if (reporte.equalsIgnoreCase("entregadosatiempo"))
                nombreLibro = "Entregados a tiempo " + nombreLibro;

            if (reporte.equalsIgnoreCase("entregadosdespueslimite"))
                nombreLibro = "Entregados despus de fecha lmite " + nombreLibro;

            if (reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues"))
                nombreLibro = "Entregados a tiempo y despues de fecha lmite " + nombreLibro;
            //Aqui modifique Jesus Ruelas 26 oct 2015

            if (reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo"))
                nombreLibro = "Porcentaje de Avance Global Completo " + nombreLibro;

            if (reporte.equalsIgnoreCase("Porcentaje de Avance Global Incompleto"))
                nombreLibro = "Porcentaje de Avance Global Incompleto " + nombreLibro;

            if (reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo e Incompleto"))
                nombreLibro = "Porcentaje de Avance Global Completo e Incompleto " + nombreLibro;

            //definimos encabezado
            //sheet = cabezeraGeneralExcel(sheet,uabcLogo,style);

            //mostraremos tabla con
            // Programas educativos //  Total Racs entregados // Total Esperados
            //preparamos informacion para insertar
            List<Programaeducativo> programasByUnidad = getProgramasByUnidad();
            List<Profesor> profesoresByUAprend = getProfesoresByUnidadAprendisajeClave();

            /* Programacion de Hojas*/
            for (Profesor prof : profesoresByUAprend) {
                if (selectProfesor.contains(Integer.toString(prof.getPronumeroEmpleado()))) {
                    //aqui creamos la hoja para el programa

                    ArrayList<ReporteAvanceAux> tempListAux = new ArrayList<ReporteAvanceAux>();
                    for (ReporteAvanceAux aux : listaAux) {
                        if (aux.reporteAvance.getUnidadaprendizajeImparteProfesor().getProfesor()
                                .getPronumeroEmpleado() == prof.getPronumeroEmpleado()) {
                            tempListAux.add(aux);
                        }
                    }

                    //// de este for
                    // para no imprirmir hojas vacias
                    if (tempListAux.size() > 0) {

                        String nompreP = tempListAux.get(0).getReporteAvance()
                                .getUnidadaprendizajeImparteProfesor().getProfesor().getPronombre();
                        String apellidoPP = tempListAux.get(0).getReporteAvance()
                                .getUnidadaprendizajeImparteProfesor().getProfesor().getProapellidoPaterno();
                        String apellidoPM = tempListAux.get(0).getReporteAvance()
                                .getUnidadaprendizajeImparteProfesor().getProfesor().getProapellidoMaterno();

                        sheet = workbook.createSheet(String.valueOf(prof.getPronumeroEmpleado()));
                        //sheet = cabezeraGeneralExcel(sheet,uabcLogo,style); lo moveremos al final de la hoja para que no sea mdoficada la imagen
                        setExDat(sheet, 8, 3,
                                "Concentrado de Reporte de Avance de Contenido Temtico de Entregados por Profesor "
                                        + prof.getPronumeroEmpleado() + " " + apellidoPP + " " + apellidoPM
                                        + " " + nompreP);

                        boolean autotam = true;

                        int currow = 18;

                        //Aqui modifique Jesus Ruelas 26 oct 2015
                        if (reporte.equalsIgnoreCase("entregadosatiempo")
                                || reporte.equalsIgnoreCase("entregadosdespueslimite")
                                || reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues")) {
                            if (ract.equalsIgnoreCase("1") || ract.equalsIgnoreCase("2")
                                    || ract.equalsIgnoreCase("3")) {

                                setExDat(sheet, currow, 1, "Fecha Corte");
                                setExDat(sheet, currow, 2, "Fecha Lmite");
                                setStyleCell(sheet, headerTabla, currow, 1);
                                setStyleCell(sheet, headerTabla, currow, 2);
                                currow++;
                                setExDat(sheet, currow, 1, tempListAux.get(0).getFechaCorte().toString());
                                setExDat(sheet, currow, 2, tempListAux.get(0).getFechaLimite().toString());
                                currow++;
                                currow++;
                            } else {
                                ReporteAux rep1 = new ReporteAux();
                                ReporteAux rep2 = new ReporteAux();
                                ReporteAux rep3 = new ReporteAux();

                                rep1.setNumRact(1);
                                rep2.setNumRact(2);
                                rep3.setNumRact(3);

                                rep1.setCescicloEscolar(tempListAux.get(0).getReporteAvance()
                                        .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                        .getCicloescolar().getCescicloEscolar());
                                rep2.setCescicloEscolar(tempListAux.get(0).getReporteAvance()
                                        .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                        .getCicloescolar().getCescicloEscolar());
                                rep3.setCescicloEscolar(tempListAux.get(0).getReporteAvance()
                                        .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                        .getCicloescolar().getCescicloEscolar());

                                ReporteAvanceAux ra1 = new ReporteAvanceAux();
                                ReporteAvanceAux ra2 = new ReporteAvanceAux();
                                ReporteAvanceAux ra3 = new ReporteAvanceAux();

                                ra1 = filtrosBeanHelper.TiempoLimiteYCorte(rep1);
                                ra2 = filtrosBeanHelper.TiempoLimiteYCorte(rep2);
                                ra3 = filtrosBeanHelper.TiempoLimiteYCorte(rep3);

                                setExDat(sheet, currow, 1, "Fecha Corte Ract 1");
                                setExDat(sheet, currow, 2, "Fecha Lmite Ract 1");
                                setStyleCell(sheet, headerTabla, currow, 1);
                                setStyleCell(sheet, headerTabla, currow, 2);
                                currow++;
                                setExDat(sheet, currow, 1, ra1.getFechaCorte().toString());
                                setExDat(sheet, currow, 2, ra1.getFechaLimite().toString());
                                //currow++;                       

                                setExDat(sheet, currow - 1, 4, "Fecha Corte Ract 2");
                                setExDat(sheet, currow - 1, 5, "Fecha Lmite Ract 2");
                                setStyleCell(sheet, headerTabla, currow - 1, 4);
                                setStyleCell(sheet, headerTabla, currow - 1, 5);
                                //currow++;                            
                                setExDat(sheet, currow, 4, ra2.getFechaCorte().toString());
                                setExDat(sheet, currow, 5, ra2.getFechaLimite().toString());
                                //currow++;                       

                                setExDat(sheet, currow - 1, 7, "Fecha Corte Ract 3");
                                setExDat(sheet, currow - 1, 8, "Fecha Lmite Ract 3");
                                setStyleCell(sheet, headerTabla, currow - 1, 7);
                                setStyleCell(sheet, headerTabla, currow - 1, 8);
                                //currow++;                            
                                setExDat(sheet, currow, 7, ra3.getFechaCorte().toString());
                                setExDat(sheet, currow, 8, ra3.getFechaLimite().toString());
                                currow++;
                                currow++;
                            }
                        }
                        //Aqui modifique Jesus Ruelas 26 oct 2015

                        //autosize para la columna
                        if (autotam) {
                            sheet.autoSizeColumn(2);
                            sheet.autoSizeColumn(4);
                            sheet.autoSizeColumn(11);
                            autotam = false;
                        }

                        //reporteAvance.unidadaprendizajeImparteProfesor.profesor.pronumeroEmpleado
                        //                                setExDat(sheet, currow,3, tempListAux.get(0).getReporteAvance().getUnidadaprendizajeImparteProfesor().getProfesor().getPronumeroEmpleado() ); //numero empleado
                        //                                setExDat(sheet, currow,4, apellidoPP+ " "+apellidoPM+ " "+nompreP ); //nombre maestro
                        //                                setExDat(sheet, currow,5, tempListAux.get(0).getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo().getGponumero() + "-"+ auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor().getUiptipoSubgrupo()  + "-"+ auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor().getUipsubgrupo() ); //grupo numero

                        setExDat(sheet, currow, 1, "Clave unidad de aprendizaje");
                        setExDat(sheet, currow, 2, "Unidad de aprendizaje");
                        setExDat(sheet, currow, 3, "Area de conocimiento");
                        setExDat(sheet, currow, 4, "Grupo");
                        setExDat(sheet, currow, 5, "% Avance 1er reporte");
                        setExDat(sheet, currow, 6, "Fecha de elaboracin 1er RACT");
                        setExDat(sheet, currow, 7, "% Avance 2do reporte");
                        setExDat(sheet, currow, 8, "Fecha de elaboracin 2do RACT");
                        setExDat(sheet, currow, 9, "% Avance 3er reporte");
                        setExDat(sheet, currow, 10, "Fecha de elaboracin 3er RACT");
                        // para formatear toda la linea
                        for (int i = 1; i <= 10; i++) {
                            setStyleCell(sheet, headerTabla, currow, i);
                        }
                        //currow++;
                        currow++;

                        for (ReporteAvanceAux auxRacs : tempListAux) {

                            //marcamos bordes
                            for (int i = 1; i <= 10; i++) {
                                setExDat(sheet, currow, i, " ");
                            }
                            for (int i = 1; i <= 10; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }

                            //currow++;
                            int claveUnidadApren = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje().getUapclave();
                            String nombreUnidad = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                    .getUapnombre();
                            String areaCon = auxRacs.getAreaConocimiento().getAconombre();
                            //String grupo = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo().getAreaConocimiento();

                            int uniprofeTemp = 0;

                            uniprofeTemp = claveUnidadApren;
                            setExDat(sheet, currow, 1, claveUnidadApren); //clave
                            setExDat(sheet, currow, 2, nombreUnidad); //clave
                            setExDat(sheet, currow, 3, areaCon); //nombre unidad                           
                            setExDat(sheet, currow, 4,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getGponumero()
                                            + "-"
                                            + auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                                    .getUiptipoSubgrupo()
                                            + "-" + auxRacs.getReporteAvance()
                                                    .getUnidadaprendizajeImparteProfesor().getUipsubgrupo()); //grupo numero

                            //marcamos bordes
                            for (int i = 1; i <= 5; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }
                            //tienne que ser entregados/enviados
                            if (auxRacs.getStatusRact1() != null) {

                                System.out.println("Entro a enviados 1");
                                setExDat(sheet, currow, (3 + (1 * 2)), auxRacs.getPorcentAvanceRact1()); //% avance 7**

                                if (auxRacs.getFechaElaboracRact1() != null) {
                                    setExDat(sheet, currow, (3 + (1 * 2) + 1),
                                            auxRacs.getFechaElaboracRact1().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (3 + (1 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (3 + (1 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (3 + (1 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (3 + (1 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (3 + (1 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (3 + (1 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (3 + (1 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact2() != null) {

                                setExDat(sheet, currow, (3 + (2 * 2)), auxRacs.getPorcentAvanceRact2()); //% avance 7**

                                if (auxRacs.getFechaElaboracRact2() != null) {
                                    setExDat(sheet, currow, (3 + (2 * 2) + 1),
                                            auxRacs.getFechaElaboracRact2().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (3 + (2 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (3 + (2 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (3 + (2 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (3 + (2 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (3 + (2 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (3 + (2 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (3 + (2 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact3() != null) {

                                setExDat(sheet, currow, (3 + (3 * 2)), auxRacs.getPorcentAvanceRact3()); //% avance 7**
                                if (auxRacs.getFechaElaboracRact3() != null) {
                                    setExDat(sheet, currow, (3 + (3 * 2) + 1),
                                            auxRacs.getFechaElaboracRact3().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (3 + (3 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (3 + (3 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (3 + (3 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (3 + (3 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (3 + (3 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (3 + (3 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (3 + (3 * 2) + 1));
                            }

                            currow++;
                        }
                    }
                    // delfindelfor

                    //fin de codigo e imrpesion de cabezera
                    sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);
                }

            } // fin del for por plan de estudios     
        } // fin de si es por entregados if(entregados)
    } //fin de profesor

    if (criterio.equalsIgnoreCase("area_administrativa")) {
        HSSFSheet sheet = workbook.createSheet("Graficos");
        nombreLibro = "- Area administrativa";

        if (reporte.equalsIgnoreCase("entregados") || reporte.equalsIgnoreCase("noentregados")
                || reporte.equalsIgnoreCase("entregadosynoentregados") ||
                //Aqui modifique Jesus Ruelas 26 oct 2015
                reporte.equalsIgnoreCase("entregadosatiempo")
                || reporte.equalsIgnoreCase("entregadosdespueslimite")
                || reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues") ||
                //Aqui modifique Jesus Ruelas 26 oct 2015
                reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo")
                || reporte.equalsIgnoreCase("Porcentaje de Avance Global Incompleto")
                || reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo e Incompleto")) {

            if (reporte.equalsIgnoreCase("entregados"))
                nombreLibro = "Entregados " + nombreLibro;

            if (reporte.equalsIgnoreCase("noentregados"))
                nombreLibro = "No Entregados " + nombreLibro;

            if (reporte.equalsIgnoreCase("entregadosynoentregados"))
                nombreLibro = "Entregados Y No Entregados " + nombreLibro;

            //Aqui modifique Jesus Ruelas 26 oct 2015               
            if (reporte.equalsIgnoreCase("entregadosatiempo"))
                nombreLibro = "Entregados a tiempo " + nombreLibro;

            if (reporte.equalsIgnoreCase("entregadosdespueslimite"))
                nombreLibro = "Entregados despus de fecha lmite " + nombreLibro;

            if (reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues"))
                nombreLibro = "Entregados a tiempo y despues de fecha lmite " + nombreLibro;
            //Aqui modifique Jesus Ruelas 26 oct 2015

            if (reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo"))
                nombreLibro = "Porcentaje de Avance Global Completo " + nombreLibro;

            if (reporte.equalsIgnoreCase("Porcentaje de Avance Global Incompleto"))
                nombreLibro = "Porcentaje de Avance Global Incompleto " + nombreLibro;

            if (reporte.equalsIgnoreCase("Porcentaje de Avance Global Completo e Incompleto"))
                nombreLibro = "Porcentaje de Avance Global Completo e Incompleto " + nombreLibro;

            //definimos encabezado
            //sheet = cabezeraGeneralExcel(sheet,uabcLogo,style);

            //mostraremos tabla con
            // Programas educativos //  Total Racs entregados // Total Esperados
            //preparamos informacion para insertar
            List<Programaeducativo> programasByUnidad = getProgramasByUnidad();
            List<Areaadministrativa> areasByProgEd = getAreasAdminByProgEdClave();

            //Aqui modifique Jesus Ruelas 28 oct 2015
            sheet = workbook.createSheet("Hoja 1");
            int currow = 15;
            //Aqui modifique Jesus Ruelas 28 oct 2015

            /* Programacion de Hojas*/
            for (Areaadministrativa areaAdmin : areasByProgEd) {
                if (selectAreaAdministrativa.contains(Integer.toString(areaAdmin.getAadid()))) {
                    //aqui creamos la hoja para el programa

                    ArrayList<ReporteAvanceAux> tempListAux = new ArrayList<ReporteAvanceAux>();

                    for (ReporteAvanceAux aux : listaAux) {
                        if (aux.CAAnombre.equalsIgnoreCase(areaAdmin.getAadnombre())) {
                            tempListAux.add(aux);
                        }
                    }

                    //// de este for
                    // para no imprirmir hojas vacias
                    if (tempListAux.size() > 0) {

                        //comente esta linea de abajo Jesus Ruelas - 28 oct 2015
                        //sheet = workbook.createSheet(areaConocimiento.getAconombre());

                        //sheet = cabezeraGeneralExcel(sheet,uabcLogo,style); lo moveremos al final de la hoja para que no sea mdoficada la imagen
                        setExDat(sheet, 8, 3,
                                "Concentrado de Reporte de Avance de Contenido Temtico de Entregados por Area administrativa");

                        boolean autotam = true;

                        //currow = currow + 3;

                        //Aqui modifique Jesus Ruelas 26 oct 2015
                        if (reporte.equalsIgnoreCase("entregadosatiempo")
                                || reporte.equalsIgnoreCase("entregadosdespueslimite")
                                || reporte.equalsIgnoreCase("entregadosatiempoenfechalimiteydespues")) {
                            if (ract.equalsIgnoreCase("1") || ract.equalsIgnoreCase("2")
                                    || ract.equalsIgnoreCase("3")) {

                                setExDat(sheet, currow, 1, "Fecha Corte");
                                setExDat(sheet, currow, 2, "Fecha Lmite");
                                setStyleCell(sheet, headerTabla, currow, 1);
                                setStyleCell(sheet, headerTabla, currow, 2);
                                currow++;
                                setExDat(sheet, currow, 1, tempListAux.get(0).getFechaCorte().toString());
                                setExDat(sheet, currow, 2, tempListAux.get(0).getFechaLimite().toString());
                                currow++;
                                currow++;
                            } else {
                                ReporteAux rep1 = new ReporteAux();
                                ReporteAux rep2 = new ReporteAux();
                                ReporteAux rep3 = new ReporteAux();

                                rep1.setNumRact(1);
                                rep2.setNumRact(2);
                                rep3.setNumRact(3);

                                rep1.setCescicloEscolar(tempListAux.get(0).getReporteAvance()
                                        .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                        .getCicloescolar().getCescicloEscolar());
                                rep2.setCescicloEscolar(tempListAux.get(0).getReporteAvance()
                                        .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                        .getCicloescolar().getCescicloEscolar());
                                rep3.setCescicloEscolar(tempListAux.get(0).getReporteAvance()
                                        .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                        .getCicloescolar().getCescicloEscolar());

                                ReporteAvanceAux ra1 = new ReporteAvanceAux();
                                ReporteAvanceAux ra2 = new ReporteAvanceAux();
                                ReporteAvanceAux ra3 = new ReporteAvanceAux();

                                ra1 = filtrosBeanHelper.TiempoLimiteYCorte(rep1);
                                ra2 = filtrosBeanHelper.TiempoLimiteYCorte(rep2);
                                ra3 = filtrosBeanHelper.TiempoLimiteYCorte(rep3);

                                setExDat(sheet, currow, 1, "Fecha Corte Ract 1");
                                setExDat(sheet, currow, 2, "Fecha Lmite Ract 1");
                                setStyleCell(sheet, headerTabla, currow, 1);
                                setStyleCell(sheet, headerTabla, currow, 2);
                                currow++;
                                setExDat(sheet, currow, 1, ra1.getFechaCorte().toString());
                                setExDat(sheet, currow, 2, ra1.getFechaLimite().toString());
                                //currow++;                       

                                setExDat(sheet, currow - 1, 4, "Fecha Corte Ract 2");
                                setExDat(sheet, currow - 1, 5, "Fecha Lmite Ract 2");
                                setStyleCell(sheet, headerTabla, currow - 1, 4);
                                setStyleCell(sheet, headerTabla, currow - 1, 5);
                                //currow++;                            
                                setExDat(sheet, currow, 4, ra2.getFechaCorte().toString());
                                setExDat(sheet, currow, 5, ra2.getFechaLimite().toString());
                                //currow++;                       

                                setExDat(sheet, currow - 1, 7, "Fecha Corte Ract 3");
                                setExDat(sheet, currow - 1, 8, "Fecha Lmite Ract 3");
                                setStyleCell(sheet, headerTabla, currow - 1, 7);
                                setStyleCell(sheet, headerTabla, currow - 1, 8);
                                //currow++;                            
                                setExDat(sheet, currow, 7, ra3.getFechaCorte().toString());
                                setExDat(sheet, currow, 8, ra3.getFechaLimite().toString());
                                currow++;
                                currow++;
                            }
                        }
                        //Aqui modifique Jesus Ruelas 26 oct 2015

                        //autosize para la columna
                        if (autotam) {
                            sheet.autoSizeColumn(2);
                            sheet.autoSizeColumn(4);
                            sheet.autoSizeColumn(11);
                            autotam = false;
                        }
                        // para formatear toda la linea
                        for (int i = 1; i <= 11; i++) {
                            setStyleCell(sheet, headerTabla, currow, i);
                        }
                        currow++;

                        //Boolean siguienteAreaAdmin = true;
                        String CAAnombreActual = "";

                        int uniprofeTemp = 0;
                        for (ReporteAvanceAux auxRacs : tempListAux) {

                            if (!(CAAnombreActual.equalsIgnoreCase(auxRacs.getCAAnombre()))) {
                                CAAnombreActual = auxRacs.getCAAnombre();
                                // currow=currow+2;

                                setExDat(sheet, currow, 1, "Area de conocimiento");
                                setExDat(sheet, currow, 2, "Area administrativa");
                                setStyleCell(sheet, headerTabla, currow, 1);
                                setStyleCell(sheet, headerTabla, currow, 2);
                                currow++;
                                setExDat(sheet, currow, 1, auxRacs.getAreaConocimiento().getAconombre()); //clave
                                setExDat(sheet, currow, 2, auxRacs.getCAAnombre()); //nombre unidad                            
                                currow = currow + 2;

                                //marcamos bordes
                                for (int i = 1; i <= 11; i++) {
                                    setExDat(sheet, currow, i, " ");
                                }
                                for (int i = 1; i <= 11; i++) {
                                    setStyleCell(sheet, borderstabla, currow, i);
                                }

                                setExDat(sheet, currow, 1, "Clave unidad de aprendizaje");
                                setExDat(sheet, currow, 2, "Unidad de aprendizaje");
                                setExDat(sheet, currow, 3, "No. de empleado");
                                setExDat(sheet, currow, 4, "Nombre del profesor");
                                setExDat(sheet, currow, 5, "Grupo");
                                setExDat(sheet, currow, 6, "% Avance 1er reporte");
                                setExDat(sheet, currow, 7, "Fecha de elaboracin 1er RACT");
                                setExDat(sheet, currow, 8, "% Avance 2do reporte");
                                setExDat(sheet, currow, 9, "Fecha de elaboracin 2do RACT");
                                setExDat(sheet, currow, 10, "% Avance 3er reporte");
                                setExDat(sheet, currow, 11, "Fecha de elaboracin 3er RACT");
                                // para formatear toda la linea
                                for (int i = 1; i <= 11; i++) {
                                    //tenemos qu aajustar texto
                                    //tenemos que centrar el texto
                                    //cambiar el color de fondo
                                    setStyleCell(sheet, headerTabla, currow, i);
                                }
                                currow++;
                            }
                            String nompreP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getPronombre();
                            String apellidoPP = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoPaterno();
                            String apellidoPM = auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                    .getProfesor().getProapellidoMaterno();
                            int claveUnidadApren = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje().getUapclave();
                            String nombreUnidad = auxRacs.getReporteAvance()
                                    .getUnidadaprendizajeImparteProfesor().getUnidadaprendizaje()
                                    .getUapnombre();

                            uniprofeTemp = claveUnidadApren;
                            setExDat(sheet, currow, 1, claveUnidadApren); //clave
                            setExDat(sheet, currow, 2, nombreUnidad); //nombre unidad
                            //reporteAvance.unidadaprendizajeImparteProfesor.profesor.pronumeroEmpleado
                            setExDat(sheet, currow, 3,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                            .getProfesor().getPronumeroEmpleado()); //numero empleado
                            setExDat(sheet, currow, 4, apellidoPP + " " + apellidoPM + " " + nompreP); //nombre maestro
                            setExDat(sheet, currow, 5,
                                    auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor().getGrupo()
                                            .getGponumero()
                                            + "-"
                                            + auxRacs.getReporteAvance().getUnidadaprendizajeImparteProfesor()
                                                    .getUiptipoSubgrupo()
                                            + "-" + auxRacs.getReporteAvance()
                                                    .getUnidadaprendizajeImparteProfesor().getUipsubgrupo()); //grupo numero

                            //marcamos bordes
                            for (int i = 1; i <= 5; i++) {
                                setStyleCell(sheet, borderstabla, currow, i);
                            }
                            //tienne que ser entregados/enviados
                            if (auxRacs.getStatusRact1() != null) {

                                System.out.println("Entro a enviados 1");
                                setExDat(sheet, currow, (4 + (1 * 2)), auxRacs.getPorcentAvanceRact1()); //% avance 7**

                                if (auxRacs.getFechaElaboracRact1() != null) {
                                    setExDat(sheet, currow, (4 + (1 * 2) + 1),
                                            auxRacs.getFechaElaboracRact1().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (4 + (1 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (4 + (1 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (1 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (1 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact2() != null) {

                                setExDat(sheet, currow, (4 + (2 * 2)), auxRacs.getPorcentAvanceRact2()); //% avance 7**

                                if (auxRacs.getFechaElaboracRact2() != null) {
                                    setExDat(sheet, currow, (4 + (2 * 2) + 1),
                                            auxRacs.getFechaElaboracRact2().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (4 + (2 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (4 + (2 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (2 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (2 * 2) + 1));
                            }

                            if (auxRacs.getStatusRact3() != null) {

                                setExDat(sheet, currow, (4 + (3 * 2)), auxRacs.getPorcentAvanceRact3()); //% avance 7**
                                if (auxRacs.getFechaElaboracRact3() != null) {
                                    setExDat(sheet, currow, (4 + (3 * 2) + 1),
                                            auxRacs.getFechaElaboracRact3().toString()); //fecha elabora 8***
                                } else {
                                    setExDat(sheet, currow, (4 + (3 * 2) + 1), " "); //fecha elabora 8***
                                }
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2) + 1));

                            } else {
                                setExDat(sheet, currow, (4 + (3 * 2)), " "); //% avance 7**
                                setExDat(sheet, currow, (4 + (3 * 2) + 1), " "); //fecha elabora 8***
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2)));
                                setStyleCell(sheet, borderstabla, currow, (4 + (3 * 2) + 1));
                            }

                            currow++;
                        }
                    }
                    // delfindelfor

                    //fin de codigo e imrpesion de cabezera
                    sheet = cabezeraGeneralExcel(sheet, uabcLogo, style);
                }

            } // fin del for por plan de estudios     
        } // fin de si es por entregados if(entregados)
    } //fin de areas administrativas

    //finalizamos con
    //metodo para descargar el objeto
    System.out.println("Generando Excel");
    if (criterio != "" && reporte != "") {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        ExternalContext externalContext = facesContext.getExternalContext();
        externalContext.setResponseContentType("application/vnd.ms-excel");
        externalContext.setResponseHeader("Content-Disposition",
                "attachment; filename=\"" + nombreLibro + ".xls\"");
        //genera libro
        workbook.write(externalContext.getResponseOutputStream());
        facesContext.responseComplete();
    } else {
        System.out.println("No se Genero por: Criterio->" + criterio + " , Reporte->" + reporte);
    }
}

From source file:neg.JRViewerComercial.java

License:Open Source License

private static void crearCabeceraHojaExcel(HSSFWorkbook libro, HSSFSheet hoja) {
    HSSFRow fila = null;/*from   w  ww.  j  a va  2s  .c o  m*/
    HSSFCell celda = null;

    // Modificamos la fuente por defecto para que salga en negrita
    HSSFCellStyle cs = libro.createCellStyle();
    HSSFFont f = libro.createFont();
    f.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    f.setColor(HSSFColor.WHITE.index);
    cs.setFont(f);
    //cs.setFillBackgroundColor(HSSFColor.GREEN.index);
    cs.setFillForegroundColor(HSSFColor.GREEN.index);
    cs.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    cs.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
    cs.setBottomBorderColor(HSSFColor.BLACK.index);
    cs.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
    cs.setLeftBorderColor(HSSFColor.BLACK.index);
    cs.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
    cs.setRightBorderColor(HSSFColor.BLACK.index);
    cs.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
    cs.setTopBorderColor(HSSFColor.BLACK.index);

    cs.setAlignment(HSSFCellStyle.ALIGN_CENTER);

    // Creamos la cabecera de las columnas
    fila = hoja.createRow(0);

    celda = fila.createCell((short) 0);
    celda.setCellStyle(cs);
    HSSFRichTextString texto = new HSSFRichTextString("CLIENTE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 0, (short) ((220 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 1);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("ENERO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 1, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 2);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("FEBRERO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 2, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 3);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("MARZO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 3, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 4);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("ABRIL");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 4, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 5);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("MAYO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 5, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 6);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("JUNIO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 6, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 7);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("JULIO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 7, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 8);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("AGOSTO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 8, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 9);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("SEPTIEMBRE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 9, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 10);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("OCTUBRE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 10, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 11);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("NOVIEMBRE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 11, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 12);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("DICIEMBRE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 12, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 13);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("IMPORTE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 13, (short) ((90 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 14);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("MARGEN");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 14, (short) ((90 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 15);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("MARGEN %");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 15, (short) ((90 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 16);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("M.G. PEDIDO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 16, (short) ((90 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 17);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("NM.PEDIDOS");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 17, (short) ((90 * 2) / ((double) 1 / 20)));

}

From source file:neg.JRViewerComercialProveedor.java

License:Open Source License

private static void crearCabeceraHojaExcel(HSSFWorkbook libro, HSSFSheet hoja) {
    HSSFRow fila = null;/*from w  w w . j av a2s .co  m*/
    HSSFCell celda = null;

    // Modificamos la fuente por defecto para que salga en negrita
    HSSFCellStyle cs = libro.createCellStyle();
    HSSFFont f = libro.createFont();
    f.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    f.setColor(HSSFColor.WHITE.index);
    cs.setFont(f);
    //cs.setFillBackgroundColor(HSSFColor.GREEN.index);
    cs.setFillForegroundColor(HSSFColor.GREEN.index);
    cs.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    cs.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
    cs.setBottomBorderColor(HSSFColor.BLACK.index);
    cs.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
    cs.setLeftBorderColor(HSSFColor.BLACK.index);
    cs.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
    cs.setRightBorderColor(HSSFColor.BLACK.index);
    cs.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
    cs.setTopBorderColor(HSSFColor.BLACK.index);

    cs.setAlignment(HSSFCellStyle.ALIGN_CENTER);

    // Creamos la cabecera de las columnas
    fila = hoja.createRow(0);

    celda = fila.createCell((short) 0);
    celda.setCellStyle(cs);
    HSSFRichTextString texto = new HSSFRichTextString("PROVEEDOR");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 0, (short) ((220 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 1);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("ENERO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 1, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 2);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("FEBRERO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 2, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 3);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("MARZO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 3, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 4);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("ABRIL");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 4, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 5);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("MAYO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 5, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 6);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("JUNIO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 6, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 7);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("JULIO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 7, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 8);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("AGOSTO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 8, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 9);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("SEPTIEMBRE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 9, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 10);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("OCTUBRE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 10, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 11);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("NOVIEMBRE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 11, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 12);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("DICIEMBRE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 12, (short) ((70 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 13);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("IMPORTE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 13, (short) ((90 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 14);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("% TURISMOS");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 14, (short) ((90 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 15);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("% FUNCIONAN");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 15, (short) ((90 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 16);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("%GRA UNITARIA");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 16, (short) ((90 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 17);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("NM.PEDIDOS");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 17, (short) ((90 * 2) / ((double) 1 / 20)));

}

From source file:neg.JRViewerInformeUnitario.java

License:Open Source License

private static void crearCabeceraHojaExcel(HSSFWorkbook libro, HSSFSheet hoja) {
    HSSFRow fila = null;/*from  w  w  w .  j  av a  2 s .  c  om*/
    HSSFCell celda = null;

    // Modificamos la fuente por defecto para que salga en negrita
    HSSFCellStyle cs = libro.createCellStyle();
    HSSFFont f = libro.createFont();
    f.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    f.setColor(HSSFColor.WHITE.index);
    cs.setFont(f);
    //cs.setFillBackgroundColor(HSSFColor.GREEN.index);
    cs.setFillForegroundColor(HSSFColor.GREEN.index);
    cs.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    cs.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
    cs.setBottomBorderColor(HSSFColor.BLACK.index);
    cs.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
    cs.setLeftBorderColor(HSSFColor.BLACK.index);
    cs.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
    cs.setRightBorderColor(HSSFColor.BLACK.index);
    cs.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
    cs.setTopBorderColor(HSSFColor.BLACK.index);

    cs.setAlignment(HSSFCellStyle.ALIGN_RIGHT);

    // Creamos la cabecera de las columnas
    fila = hoja.createRow(0);

    celda = fila.createCell((short) 0);
    celda.setCellStyle(cs);
    HSSFRichTextString texto = new HSSFRichTextString("DATOS");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 0, (short) ((60 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 1);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("ENERO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 1, (short) ((60 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 2);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("FEBRERO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 2, (short) ((80 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 3);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("MARZO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 3, (short) ((200 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 4);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("ABRIL");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 4, (short) ((130 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 5);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("MAYO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 5, (short) ((60 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 6);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("JUNIO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 6, (short) ((130 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 7);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("JULIO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 7, (short) ((60 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 8);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("AGOSTO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 8, (short) ((80 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 9);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("SEPTIEMBRE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 9, (short) ((40 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 10);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("OCTUBRE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 10, (short) ((120 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 11);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("NOVIEMBRE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 11, (short) ((110 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 12);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("DICIEMBRE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 12, (short) ((130 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 13);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("M.G.");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 13, (short) ((130 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 14);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("M.G. PEDIDO");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 14, (short) ((130 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 15);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("NUM.PEDIDOS");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 15, (short) ((40 * 2) / ((double) 1 / 20)));

    celda = fila.createCell((short) 16);
    celda.setCellStyle(cs);
    texto = new HSSFRichTextString("IMPORTE");
    celda.setCellValue(texto);
    hoja.setColumnWidth((short) 16, (short) ((200 * 2) / ((double) 1 / 20)));

}

From source file:net.chaosserver.timelord.data.ExcelDataReaderWriter.java

License:Open Source License

/**
 * Builds a map of style name to HSSFCellStyle objects that can be used to
 * mark cells with similar styles.//from w ww .j a  va  2s.  c om
 *
 * @param wb the workbook needed to create the objects
 * @return the map of styles
 */
protected Map<String, HSSFCellStyle> buildStyleMap(HSSFWorkbook wb) {
    Map<String, HSSFCellStyle> styleMap = new HashMap<String, HSSFCellStyle>();

    HSSFCellStyle style;
    HSSFFont font;

    style = wb.createCellStyle();
    font = wb.createFont();
    // font.setItalic(true);
    font.setColor((short) 0xc); // blue
    style.setFont(font);
    styleMap.put("taskNoteStyle", style);

    style = wb.createCellStyle();
    font = wb.createFont();
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    style.setFont(font);
    style.setBorderLeft(HSSFCellStyle.BORDER_DOUBLE);
    style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    styleMap.put("taskNameHeaderStyle", style);

    style = wb.createCellStyle();
    style.setBorderLeft(HSSFCellStyle.BORDER_DOUBLE);
    styleMap.put("taskNameStyle", style);

    style = wb.createCellStyle();
    style.setBorderTop(HSSFCellStyle.BORDER_DOUBLE);
    style.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
    styleMap.put("topRowStyle", style);

    style = wb.createCellStyle();
    style.setBorderTop(HSSFCellStyle.BORDER_DOUBLE);
    style.setBorderLeft(HSSFCellStyle.BORDER_DOUBLE);
    styleMap.put("topLeftStyle", style);

    style = wb.createCellStyle();
    style.setBorderTop(HSSFCellStyle.BORDER_DOUBLE);
    style.setBorderRight(HSSFCellStyle.BORDER_DOUBLE);
    styleMap.put("topRightStyle", style);

    style = wb.createCellStyle();
    font = wb.createFont();
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    style.setFont(font);
    style.setBorderRight(HSSFCellStyle.BORDER_DOUBLE);
    style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    style.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
    styleMap.put("totalHeaderStyle", style);

    style = wb.createCellStyle();
    style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    style.setBorderRight(HSSFCellStyle.BORDER_DOUBLE);
    styleMap.put("totalColumnStyle", style);

    style = wb.createCellStyle();
    style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
    style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    style.setFont(font);
    styleMap.put("boldDateStyle", style);

    style = wb.createCellStyle();
    style.setBorderTop(HSSFCellStyle.BORDER_THIN);
    style.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);
    style.setBorderLeft(HSSFCellStyle.BORDER_DOUBLE);
    styleMap.put("bottomLeftStyle", style);

    style = wb.createCellStyle();
    style.setBorderTop(HSSFCellStyle.BORDER_THIN);
    style.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);
    style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    style.setBorderRight(HSSFCellStyle.BORDER_DOUBLE);
    styleMap.put("bottomRightStyle", style);

    style = wb.createCellStyle();
    style.setBorderTop(HSSFCellStyle.BORDER_THIN);
    style.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);
    styleMap.put("bottomStyle", style);

    return styleMap;
}

From source file:net.mindengine.oculus.frontend.service.report.ExcelTestSearchReportGenerator.java

License:Open Source License

/**
 * Generates Excel spreadsheet./*w  w  w .j ava  2 s.  c  o  m*/
 *
 * @param searchResult Search result for test or document (test-case)
 * @throws Exception 
 */
public void writeExcelReports(BrowseResult<?> searchResult, Long projectId, HttpServletRequest request,
        HttpServletResponse response) throws Exception {

    int cellOffset = 5;
    /*
     * Customizations which will be exported to XLS spreadsheet.
     */
    Collection<Customization> customizationsExport = new LinkedList<Customization>();

    /*
     * Here will be cell ids stored for each customization. This is needed because there might be a lot of merged cells for list customizations
     */
    Map<Long, Integer> customizationCells = new HashMap<Long, Integer>();

    if (projectId != null && projectId > 0) {
        Collection<Customization> customizations = customizationDAO.getCustomizations(projectId, unit);
        for (Customization customization : customizations) {

            //Checking if the user has selected this specific customization for exporting
            if ("on".equals(request.getParameter("cexport" + customization.getId()))) {

                customizationCells.put(customization.getId(), cellOffset);

                //Checking if the customization contains possible values and fetching them all
                if (customization.getType().equals(Customization.TYPE_CHECKLIST)
                        || customization.getType().equals(Customization.TYPE_LIST)) {
                    customization.setPossibleValues(
                            customizationDAO.getCustomizationPossibleValues(customization.getId()));
                    cellOffset += customization.getPossibleValues().size();
                } else {
                    cellOffset += 1;
                }

                customizationsExport.add(customization);
            }
        }
    }

    /*
     * Generating the Excel spreadsheet
     */

    OutputStream outputStream = response.getOutputStream();
    response.setContentType("application/ms-excel");

    HSSFWorkbook workBook = new HSSFWorkbook();

    HSSFSheet sheet = workBook.createSheet();

    HSSFFont fontHeader = workBook.createFont();
    fontHeader.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    fontHeader.setColor(HSSFColor.WHITE.index);

    HSSFCellStyle columnHeaderStyle = workBook.createCellStyle();
    columnHeaderStyle.setBorderTop((short) 2);
    columnHeaderStyle.setBorderLeft((short) 2);
    columnHeaderStyle.setBorderRight((short) 2);
    columnHeaderStyle.setBorderBottom((short) 2);
    columnHeaderStyle.setFillForegroundColor(HSSFColor.GREY_50_PERCENT.index);
    columnHeaderStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

    columnHeaderStyle.setFont(fontHeader);

    HSSFCellStyle columnRootHeaderStyle = workBook.createCellStyle();

    //columnRootHeaderStyle.cloneStyleFrom(columnHeaderStyle);
    columnRootHeaderStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

    HSSFCell cell;

    HSSFRow headerRow = sheet.createRow(0);
    HSSFRow header2Row = sheet.createRow(1);

    sheet.addMergedRegion(new Region((short) 0, (short) 0, (short) 0, (short) 4));
    cell = headerRow.createCell((short) 0);
    cell.setCellValue("Common");
    cell.setCellStyle(columnRootHeaderStyle);

    cell = header2Row.createCell((short) 0);
    cell.setCellValue("Test");
    cell.setCellStyle(columnHeaderStyle);

    cell = header2Row.createCell((short) 1);
    cell.setCellValue("Project");
    cell.setCellStyle(columnHeaderStyle);

    cell = header2Row.createCell((short) 2);
    cell.setCellValue("Sub-Project");
    cell.setCellStyle(columnHeaderStyle);

    cell = header2Row.createCell((short) 3);
    cell.setCellValue("Author");
    cell.setCellStyle(columnHeaderStyle);

    cell = header2Row.createCell((short) 4);
    cell.setCellValue("Created");
    cell.setCellStyle(columnHeaderStyle);

    for (Customization customization : customizationsExport) {
        int cellId = customizationCells.get(customization.getId());
        if (customization.getPossibleValues() != null) {
            int size = customization.getPossibleValues().size();
            if (size > 1) {
                sheet.addMergedRegion(
                        new Region((short) 0, (short) 0, (short) cellId, (short) (cellId + size - 1)));
            }

            /*
             * Exporting possible values 
             */
            int offset = 0;
            for (CustomizationPossibleValue cpv : customization.getPossibleValues()) {
                cell = header2Row.createCell((short) (cellId + offset));
                cell.setCellValue(cpv.getPossibleValue());
                cell.setCellStyle(columnHeaderStyle);
                offset++;
            }
        } else {
            cell = header2Row.createCell((short) cellId);
            cell.setCellStyle(columnHeaderStyle);
        }
        cell = headerRow.createCell((short) cellId);
        cell.setCellValue(customization.getName());
        cell.setCellStyle(columnRootHeaderStyle);
    }

    HSSFCellStyle cellStyle = workBook.createCellStyle();

    HSSFCellStyle checkboxStyle = workBook.createCellStyle();
    checkboxStyle.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
    checkboxStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    checkboxStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

    HSSFFont fontCheckbox = workBook.createFont();
    fontCheckbox.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    fontCheckbox.setColor(HSSFColor.BLACK.index);
    checkboxStyle.setFont(fontCheckbox);

    HSSFCellStyle boolYesStyle = workBook.createCellStyle();
    boolYesStyle.setFillForegroundColor(HSSFColor.LIGHT_GREEN.index);
    boolYesStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

    HSSFCellStyle boolNoStyle = workBook.createCellStyle();
    boolNoStyle.setFillForegroundColor(HSSFColor.LIGHT_ORANGE.index);
    boolNoStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

    /*
     * Used in order to cache user names. Key = ID, Value = User name
     */
    Map<Long, String> usersCache = new HashMap<Long, String>();

    int j = 2;
    for (Object object : searchResult.getResults()) {
        HSSFRow row = sheet.createRow(j);

        String name, parentProjectName, projectName, authorName;
        Date date;
        Long objectId;

        if (object instanceof Test) {
            Test test = (Test) object;
            name = test.getName();
            parentProjectName = test.getParentProjectName();
            projectName = test.getProjectName();
            authorName = test.getAuthorName();
            objectId = test.getId();
            date = test.getDate();
        } else
            throw new IllegalArgumentException(object.getClass().getName());

        cell = row.createCell((short) 0);
        cell.setCellValue(name);
        cell.setCellStyle(cellStyle);

        cell = row.createCell((short) 1);
        cell.setCellValue(parentProjectName);
        cell.setCellStyle(cellStyle);

        cell = row.createCell((short) 2);
        cell.setCellValue(projectName);
        cell.setCellStyle(cellStyle);

        cell = row.createCell((short) 3);
        cell.setCellValue(authorName);
        cell.setCellStyle(cellStyle);

        cell = row.createCell((short) 4);
        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
        cell.setCellValue(sdf.format(date));
        cell.setCellStyle(cellStyle);

        int offset = 5;

        for (Customization customization : customizationsExport) {
            UnitCustomizationValue ucv = customizationDAO.getUnitCustomizationValue(customization.getId(),
                    objectId);

            if (customization.getType().equals(Customization.TYPE_CHECKLIST)
                    || customization.getType().equals(Customization.TYPE_LIST)) {
                for (CustomizationPossibleValue cpv : customization.getPossibleValues()) {

                    boolean matches = false;

                    if (customization.getType().equals(Customization.TYPE_LIST)) {
                        if (ucv != null && ucv.getValue() != null && ucv.getValue().equals("" + cpv.getId())) {
                            matches = true;
                        }
                    } else {
                        String s = "(" + cpv.getId() + ")";
                        if (ucv != null && ucv.getValue() != null && ucv.getValue().contains(s)) {
                            matches = true;
                        }
                    }

                    if (matches) {
                        cell = row.createCell((short) offset);
                        cell.setCellValue("X");
                        cell.setCellStyle(checkboxStyle);
                    }
                    offset++;
                }
            } else {
                if (ucv != null) {
                    cell = row.createCell((short) offset);
                    cell.setCellStyle(cellStyle);

                    if (customization.getType().equals(Customization.TYPE_ASSIGNEE)) {
                        if (ucv.getValue() != null && !ucv.getValue().isEmpty()) {
                            try {
                                Long userId = Long.parseLong(ucv.getValue());
                                /*
                                 * Chaching user names by their ids
                                 */
                                String userName = null;
                                if (!usersCache.containsKey(userId)) {
                                    User user = userDAO.getUserById(userId);
                                    if (user != null) {
                                        userName = user.getName();
                                    } else
                                        userName = "";

                                    usersCache.put(userId, userName);
                                } else
                                    userName = usersCache.get(userId);

                                cell.setCellValue(userName);
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    } else if (customization.getType().equals(Customization.TYPE_CHECKBOX)) {
                        if (ucv.getValue() != null) {
                            if (ucv.getValue().equals("true")) {
                                cell.setCellValue("Yes");
                                cell.setCellStyle(boolYesStyle);
                            } else {
                                cell.setCellValue("No");
                                cell.setCellStyle(boolNoStyle);
                            }
                        }
                    } else {
                        cell.setCellValue(ucv.getValue());
                    }

                }
                offset++;
            }
        }
        j++;
    }

    /*
     * Making the text to fit in all cells 
     */
    for (short i = 0; i < (short) cellOffset + 1; i++) {
        sheet.autoSizeColumn(i);
    }

    workBook.write(outputStream);
    outputStream.flush();
    outputStream.close();
}

From source file:net.sf.infrared.web.report.ExcelSummaryReport.java

License:Apache License

private void setUpColumnHeadingStyle() {
    columnHeadingStyle = wb.createCellStyle();
    HSSFFont columnHeadingFont = wb.createFont();
    columnHeadingFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    columnHeadingFont.setFontHeightInPoints((short) 10);
    columnHeadingStyle.setFont(columnHeadingFont);
    columnHeadingStyle.setWrapText(true);
    columnHeadingStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    columnHeadingStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    columnHeadingStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    columnHeadingStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
    columnHeadingStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
    columnHeadingStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    columnHeadingStyle.setFillPattern(HSSFCellStyle.NO_FILL);
    columnHeadingStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
}