Example usage for org.apache.poi.hssf.usermodel HSSFCellStyle setFont

List of usage examples for org.apache.poi.hssf.usermodel HSSFCellStyle setFont

Introduction

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

Prototype

public void setFont(HSSFFont font) 

Source Link

Usage

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>.
 *//*from  w w  w  . j ava2  s .  c om*/
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:mengenUeberdeckung.tests.bib.ExcelSheet3.java

License:Open Source License

/**
 * Diese Methode scheibt eine Zeile mit Messergebnissen an die durch den
 * Parameter <CODE>row</CODE> vorgegebene Zeile.
 *
 * @param result  Menge mit Messergebnissen.
 * @param row     Zeile, in die geschrieben werden soll.
 *///from  w  w  w .  ja  v  a  2  s. c  o m
private void setRow(ResultSet3 result, HSSFRow row) {
    HSSFFont plainFont;
    HSSFCellStyle style;
    HSSFCell cell;

    plainFont = workbook.createFont();
    style = workbook.createCellStyle();
    style.setFont(plainFont);

    cell = row.createCell((short) 0);
    cell.setCellStyle(style);
    cell.setCellValue(result.getProblemName());

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

    cell = row.createCell((short) 2);
    cell.setCellStyle(style);
    cell.setCellValue(result.getSolutionCost());
}

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 w w  . ja va 2  s . co 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 .ja  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);

    //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  ww w. j  a va2s. 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 ww  .  j av  a  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("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.jav a  2s .  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.// w  w w  .  j a v a 2 s. c  o m
 *
 * @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./*from   ww  w .  ja  v a2s  .  co  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.jasperreports.engine.export.JRXlsExporter.java

License:Open Source License

protected HSSFCellStyle getLoadedCellStyle(StyleInfo style) {
    HSSFCellStyle cellStyle = loadedCellStyles.get(style);
    if (cellStyle == null) {
        cellStyle = workbook.createCellStyle();

        cellStyle.setFillForegroundColor(style.backcolor);
        cellStyle.setFillPattern(style.mode);
        cellStyle.setAlignment(style.horizontalAlignment);
        cellStyle.setVerticalAlignment(style.verticalAlignment);
        cellStyle.setRotation(style.rotation);
        cellStyle.setFont(style.font);
        cellStyle.setWrapText(style.lcWrapText);
        cellStyle.setLocked(style.lcCellLocked);
        cellStyle.setHidden(style.lcCellHidden);

        if (style.hasDataFormat()) {
            cellStyle.setDataFormat(style.getDataFormat());
        }/*from  ww w .  ja  v a  2s.  c  o m*/

        boolean isIgnoreCellBorder = getCurrentItemConfiguration().isIgnoreCellBorder();
        if (!isIgnoreCellBorder) {
            BoxStyle box = style.box;
            cellStyle.setBorderTop(box.borderStyle[BoxStyle.TOP]);
            cellStyle.setTopBorderColor(box.borderColour[BoxStyle.TOP]);
            cellStyle.setBorderLeft(box.borderStyle[BoxStyle.LEFT]);
            cellStyle.setLeftBorderColor(box.borderColour[BoxStyle.LEFT]);
            cellStyle.setBorderBottom(box.borderStyle[BoxStyle.BOTTOM]);
            cellStyle.setBottomBorderColor(box.borderColour[BoxStyle.BOTTOM]);
            cellStyle.setBorderRight(box.borderStyle[BoxStyle.RIGHT]);
            cellStyle.setRightBorderColor(box.borderColour[BoxStyle.RIGHT]);
        }

        loadedCellStyles.put(style, cellStyle);
    }
    return cellStyle;
}