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

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

Introduction

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

Prototype

String FONT_ARIAL

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

Click Source Link

Document

Arial font

Usage

From source file:Controller.Sonstiges.ExcelController.java

private void makeTitleOfTable() {
    this.row = this.sheet.createRow(this.firstRow);
    CellStyle cellStyle = this.wb.createCellStyle();
    // font //from w w w . j  a v  a  2  s  .c om
    Font font = this.wb.createFont();
    font.setFontHeightInPoints((short) 10);
    font.setFontName(HSSFFont.FONT_ARIAL);

    font.setBold(true);
    font.setColor(HSSFColor.BLACK.index);

    cellStyle.setFont(font);
    this.saveDataInExcel(0, "Urz", cellStyle);
    this.saveDataInExcel(1, "Vorname", cellStyle);
    this.saveDataInExcel(2, "Name", cellStyle);
    this.saveDataInExcel(3, "Fakultt", cellStyle);
    this.saveDataInExcel(4, "Geburtsdatum", cellStyle);
    this.saveDataInExcel(5, "E-Mail", cellStyle);
    this.saveDataInExcel(6, "Telefonnummer", cellStyle);
    this.saveDataInExcel(7, "Aktivitten-ID", cellStyle);
    this.saveDataInExcel(8, "Aktivittenname", cellStyle);
    this.saveDataInExcel(9, "Zeitraum", cellStyle);
    this.saveDataInExcel(10, "Art", cellStyle);
    this.saveDataInExcel(11, "Durchfhrung", cellStyle);
    this.saveDataInExcel(12, "Bemerkung", cellStyle);
    this.saveDataInExcel(13, "Status", cellStyle);

}

From source file:Documentos.ClaseAlmacenGeneral.java

private static void createTituloCell(HSSFWorkbook wb, Row row, int column, short halign, short valign,
        String strContenido) {/*  w  w  w . java 2  s  .  c  om*/
    CreationHelper ch = wb.getCreationHelper();
    Cell cell = row.createCell(column);
    cell.setCellValue(ch.createRichTextString(strContenido));

    HSSFFont cellFont = wb.createFont();
    cellFont.setFontHeightInPoints((short) 11);
    cellFont.setFontName(HSSFFont.FONT_ARIAL);
    cellFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

    CellStyle cellStyle = wb.createCellStyle();
    cellStyle.setAlignment(halign);
    cellStyle.setVerticalAlignment(valign);
    cellStyle.setFont(cellFont);
    cell.setCellStyle(cellStyle);

}

From source file:easyoffice.powerpoint.PPTMaker.java

private static void replaceContent(XSLFTextShape shape, SlideText data) {
    /*//from  w  w w .jav  a2 s  .  c  o  m
    Given a slide shape, replace it content with SlideText data
     */
    String textInShape = shape.getText();
    String newText = textInShape.replace(String.format(STRING_FORMAT, data.key), data.value);

    XSLFTextRun addedText = shape.setText(newText.replace("\r", "")); // not include break line
    addedText.setFontFamily(HSSFFont.FONT_ARIAL);
    addedText.setFontColor(Color.BLACK);
}

From source file:mat.server.service.impl.XLSGenerator.java

/** Creates the sheet.
 * //  w  w  w  .j a  v  a  2s. c  om
 * @param wkbk -HSSFWorkbook.
 * @param style -HSSFCellStyle.
 * @param sheetName - String.
 * @return HSSFSheet. * */

protected final HSSFSheet createSheet(final HSSFWorkbook wkbk, final HSSFCellStyle style,
        final String sheetName) {

    HSSFSheet wkst = wkbk.createSheet(sheetName);
    int heightPoint = 10;
    HSSFFont font = wkbk.createFont();
    font.setFontName(HSSFFont.FONT_ARIAL);
    font.setFontHeightInPoints((short) heightPoint);
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    font.setColor(HSSFColor.BLACK.index);
    style.setFont(font);
    style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
    style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    style.setBorderBottom((short) 1);

    return wkst;
}

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  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);

    //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();/* w  w  w.j av 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:org.exoplatform.addon.pulse.service.ws.RestActivitiesStatistic.java

License:Open Source License

private HSSFWorkbook buildExportDataForExcel(String maxColumn, String filter, Date fromDate,
        boolean isExportNewUsersData, boolean isExportLoginCountData, boolean isExportForumActiveUsersData,
        boolean isExportNewForumPostsData, boolean isExportPlfDownloadsData, boolean isExportUserConnectionData,
        boolean isExportSocialPostData, boolean isExportEmailNotificationData) throws Exception {
    ChartData data = buildExportData(maxColumn, filter, fromDate, isExportPlfDownloadsData);
    String fileName = "export_" + maxColumn + "_" + filter + "_from_" + partString(fromDate, "yyyy.MM.dd")
            + ".xls";

    HSSFWorkbook workbook = new HSSFWorkbook();
    HSSFSheet worksheet = workbook.createSheet(fileName);

    // index from 0,0... cell A1 is cell(0,0)

    HSSFCellStyle headerCellStyle = workbook.createCellStyle();
    HSSFFont hSSFFont = workbook.createFont();
    hSSFFont.setFontName(HSSFFont.FONT_ARIAL);
    hSSFFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    hSSFFont.setColor(HSSFColor.BLACK.index);
    headerCellStyle.setFont(hSSFFont);//w  ww .  j av a 2s.  c  om

    HSSFRow headerRow = worksheet.createRow((short) 0);
    HSSFCell cellA1 = headerRow.createCell(0);
    cellA1.setCellValue("Statistics");
    cellA1.setCellStyle(headerCellStyle);

    for (int i = 0; i < data.getListTitle().size(); i++) {
        HSSFCell cell = headerRow.createCell(i + 1);
        cell.setCellValue(data.getListTitle().get(i));
        cell.setCellStyle(headerCellStyle);
    }

    HSSFCell totalCell = headerRow.createCell(data.getListTitle().size() + 1);
    totalCell.setCellValue("Total");
    totalCell.setCellStyle(headerCellStyle);

    int rowIndex = 1;
    if (isExportNewUsersData) {
        HSSFRow metricRow = worksheet.createRow(rowIndex);
        HSSFCell metricCell = metricRow.createCell(0);
        metricCell.setCellValue("New Users Registration");
        Long total = 0L;
        for (int i = 0; i < data.getNewUsersData().size(); i++) {
            total += data.getNewUsersData().get(i);
            HSSFCell cell = metricRow.createCell(i + 1);
            cell.setCellValue(data.getNewUsersData().get(i));
        }
        HSSFCell metricTotalCell = metricRow.createCell(data.getNewUsersData().size() + 1);
        metricTotalCell.setCellValue(total);

        rowIndex++;
    }

    if (isExportLoginCountData) {
        HSSFRow metricRow = worksheet.createRow(rowIndex);
        HSSFCell metricCell = metricRow.createCell(0);
        metricCell.setCellValue("Nb Unique Login");
        Long total = 0L;
        for (int i = 0; i < data.getLoginCountData().size(); i++) {
            total += data.getLoginCountData().get(i);
            HSSFCell cell = metricRow.createCell(i + 1);
            cell.setCellValue(data.getLoginCountData().get(i));
        }
        HSSFCell metricTotalCell = metricRow.createCell(data.getLoginCountData().size() + 1);
        metricTotalCell.setCellValue(total);

        rowIndex++;
    }

    if (isExportForumActiveUsersData) {
        HSSFRow metricRow = worksheet.createRow(rowIndex);
        HSSFCell metricCell = metricRow.createCell(0);
        metricCell.setCellValue("Forum Active Users Average");
        Long total = 0L;
        int itemHasData = 0;
        for (int i = 0; i < data.getForumActiveUsersData().size(); i++) {
            total += data.getForumActiveUsersData().get(i);
            if (data.getForumActiveUsersData().get(i) > 0)
                itemHasData++;
            HSSFCell cell = metricRow.createCell(i + 1);
            cell.setCellValue(data.getForumActiveUsersData().get(i));
        }
        HSSFCell metricTotalCell = metricRow.createCell(data.getForumActiveUsersData().size() + 1);
        Long average = itemHasData > 0 ? total / itemHasData : 0L;
        metricTotalCell.setCellValue(average);

        rowIndex++;
    }

    if (isExportNewForumPostsData) {
        HSSFRow metricRow = worksheet.createRow(rowIndex);
        HSSFCell metricCell = metricRow.createCell(0);
        metricCell.setCellValue("New Forum Posts");
        Long total = 0L;
        for (int i = 0; i < data.getNewForumPostsData().size(); i++) {
            total += data.getNewForumPostsData().get(i);
            HSSFCell cell = metricRow.createCell(i + 1);
            cell.setCellValue(data.getNewForumPostsData().get(i));
        }
        HSSFCell metricTotalCell = metricRow.createCell(data.getNewForumPostsData().size() + 1);
        metricTotalCell.setCellValue(total);

        rowIndex++;
    }

    if (isExportUserConnectionData) {
        HSSFRow metricRow = worksheet.createRow(rowIndex);
        HSSFCell metricCell = metricRow.createCell(0);
        metricCell.setCellValue("New User connections");
        Long total = 0L;
        for (int i = 0; i < data.getUserConnectionData().size(); i++) {
            total += data.getUserConnectionData().get(i);
            HSSFCell cell = metricRow.createCell(i + 1);
            cell.setCellValue(data.getUserConnectionData().get(i));
        }
        HSSFCell metricTotalCell = metricRow.createCell(data.getUserConnectionData().size() + 1);
        metricTotalCell.setCellValue(total);

        rowIndex++;
    }

    if (isExportSocialPostData) {
        HSSFRow metricRow = worksheet.createRow(rowIndex);
        HSSFCell metricCell = metricRow.createCell(0);
        metricCell.setCellValue("New posts in activities stream");
        Long total = 0L;
        for (int i = 0; i < data.getSocialPostData().size(); i++) {
            total += data.getSocialPostData().get(i);
            HSSFCell cell = metricRow.createCell(i + 1);
            cell.setCellValue(data.getSocialPostData().get(i));
        }
        HSSFCell metricTotalCell = metricRow.createCell(data.getSocialPostData().size() + 1);
        metricTotalCell.setCellValue(total);

        rowIndex++;
    }

    if (isExportEmailNotificationData) {
        HSSFRow metricRow = worksheet.createRow(rowIndex);
        HSSFCell metricCell = metricRow.createCell(0);
        metricCell.setCellValue("Number of notification emails sent");
        Long total = 0L;
        for (int i = 0; i < data.getEmailNotificationData().size(); i++) {
            total += data.getEmailNotificationData().get(i);
            HSSFCell cell = metricRow.createCell(i + 1);
            cell.setCellValue(data.getEmailNotificationData().get(i));
        }
        HSSFCell metricTotalCell = metricRow.createCell(data.getEmailNotificationData().size() + 1);
        metricTotalCell.setCellValue(total);

        rowIndex++;
    }

    if (isExportPlfDownloadsData) {
        HSSFRow metricRow = worksheet.createRow(rowIndex);
        HSSFCell metricCell = metricRow.createCell(0);
        metricCell.setCellValue("PLF Downloads");
        Long total = 0L;
        for (int i = 0; i < data.getPlfDownloadsData().size(); i++) {
            total += data.getPlfDownloadsData().get(i);
            HSSFCell cell = metricRow.createCell(i + 1);
            cell.setCellValue(data.getPlfDownloadsData().get(i));
        }
        HSSFCell metricTotalCell = metricRow.createCell(data.getPlfDownloadsData().size() + 1);
        metricTotalCell.setCellValue(total);

        rowIndex++;
    }
    return workbook;
}

From source file:org.extremecomponents.table.view.ExtendXlsView.java

License:Apache License

private Map initStyles(HSSFWorkbook wb, short fontHeight) {
    Map result = new HashMap();
    HSSFCellStyle titleStyle = wb.createCellStyle();
    HSSFCellStyle textStyle = wb.createCellStyle();
    HSSFCellStyle boldStyle = wb.createCellStyle();
    HSSFCellStyle numericStyle = wb.createCellStyle();
    HSSFCellStyle numericStyleBold = wb.createCellStyle();
    HSSFCellStyle moneyStyle = wb.createCellStyle();
    HSSFCellStyle moneyStyleBold = wb.createCellStyle();
    HSSFCellStyle percentStyle = wb.createCellStyle();
    HSSFCellStyle percentStyleBold = wb.createCellStyle();

    result.put("titleStyle", titleStyle);
    result.put("textStyle", textStyle);
    result.put("boldStyle", boldStyle);
    result.put("numericStyle", numericStyle);
    result.put("numericStyleBold", numericStyleBold);
    result.put("moneyStyle", moneyStyle);
    result.put("moneyStyleBold", moneyStyleBold);
    result.put("percentStyle", percentStyle);
    result.put("percentStyleBold", percentStyleBold);

    HSSFDataFormat format = wb.createDataFormat();

    // Global fonts
    HSSFFont font = wb.createFont();//from   ww w  . j a  v a2s.co  m
    font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
    font.setColor(HSSFColor.BLACK.index);
    font.setFontName(HSSFFont.FONT_ARIAL);
    font.setFontHeightInPoints(fontHeight);

    HSSFFont fontBold = wb.createFont();
    fontBold.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    fontBold.setColor(HSSFColor.BLACK.index);
    fontBold.setFontName(HSSFFont.FONT_ARIAL);
    fontBold.setFontHeightInPoints(fontHeight);

    // Money Style
    moneyStyle.setFont(font);
    moneyStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
    moneyStyle.setDataFormat(format.getFormat(moneyFormat));

    // Money Style Bold
    moneyStyleBold.setFont(fontBold);
    moneyStyleBold.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
    moneyStyleBold.setDataFormat(format.getFormat(moneyFormat));

    // Percent Style
    percentStyle.setFont(font);
    percentStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
    percentStyle.setDataFormat(format.getFormat(percentFormat));

    // Percent Style Bold
    percentStyleBold.setFont(fontBold);
    percentStyleBold.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
    percentStyleBold.setDataFormat(format.getFormat(percentFormat));

    // Standard Numeric Style
    numericStyle.setFont(font);
    numericStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);

    // Standard Numeric Style Bold
    numericStyleBold.setFont(fontBold);
    numericStyleBold.setAlignment(HSSFCellStyle.ALIGN_RIGHT);

    // Title Style
    titleStyle.setFont(font);
    titleStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
    titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    titleStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    titleStyle.setBottomBorderColor(HSSFColor.BLACK.index);
    titleStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    titleStyle.setLeftBorderColor(HSSFColor.BLACK.index);
    titleStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
    titleStyle.setRightBorderColor(HSSFColor.BLACK.index);
    titleStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
    titleStyle.setTopBorderColor(HSSFColor.BLACK.index);
    titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

    // Standard Text Style
    textStyle.setFont(font);
    textStyle.setWrapText(true);

    // Standard Text Style
    boldStyle.setFont(fontBold);
    boldStyle.setWrapText(true);

    return result;
}

From source file:org.oep.cmon.report.portlet.util.ActionUtil.java

License:Apache License

/**
 * This is function excel report detail//from  w  ww .java  2  s.  c o m
 * Version: 1.0
 *  
 * History: 
 *   DATE        AUTHOR      DESCRIPTION 
 *  ------------------------------------------------- 
 *  3-March-2013  Nam Dinh    Create new
 * @param resourceRequest
 * @param resourceResponse
 */
public static void excelbaocaochitiet(ResourceRequest resourceRequest, ResourceResponse resourceResponse) {
    try {
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("new sheet");
        HSSFFont Row2_font = workbook.createFont();
        Row2_font.setFontName(HSSFFont.FONT_ARIAL);
        Row2_font.setFontHeightInPoints((short) 13);
        Row2_font.setUnderline(HSSFFont.U_SINGLE);

        HSSFFont ngaythang_font = workbook.createFont();
        ngaythang_font.setFontName(HSSFFont.FONT_ARIAL);
        ngaythang_font.setFontHeightInPoints((short) 13);
        ngaythang_font.setItalic(true);

        HSSFFont style_font = workbook.createFont();
        style_font.setFontHeightInPoints((short) 13);

        HSSFFont trangthai_font = workbook.createFont();
        trangthai_font.setFontName(HSSFFont.FONT_ARIAL);
        trangthai_font.setFontHeightInPoints((short) 11);
        trangthai_font.setItalic(true);

        /*define a cell style*/
        HSSFFont tableHeaderFont = (HSSFFont) workbook.createFont();
        tableHeaderFont.setBoldweight((short) 3500);
        HSSFFont titleFont = (HSSFFont) workbook.createFont();
        titleFont.setBoldweight((short) 3500);
        titleFont.setFontHeightInPoints((short) 13);

        HSSFFont titleTongStyle_font = (HSSFFont) workbook.createFont();
        titleTongStyle_font.setFontHeightInPoints((short) 13);
        titleTongStyle_font.setBoldweight((short) 3500);

        HSSFCellStyle styleCellCenter = (HSSFCellStyle) workbook.createCellStyle();
        styleCellCenter.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        styleCellCenter.setBorderTop(HSSFCellStyle.BORDER_THIN);
        styleCellCenter.setBorderRight(HSSFCellStyle.BORDER_THIN);
        styleCellCenter.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        styleCellCenter.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        styleCellCenter.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        styleCellCenter.setWrapText(true);

        HSSFCellStyle styleCellLeft = (HSSFCellStyle) workbook.createCellStyle();
        styleCellLeft.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        styleCellLeft.setBorderTop(HSSFCellStyle.BORDER_THIN);
        styleCellLeft.setBorderRight(HSSFCellStyle.BORDER_THIN);
        styleCellLeft.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        styleCellLeft.setAlignment(HSSFCellStyle.ALIGN_LEFT);
        styleCellLeft.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        styleCellLeft.setWrapText(true);

        HSSFCellStyle styleCellRight = (HSSFCellStyle) workbook.createCellStyle();
        styleCellRight.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        styleCellRight.setBorderTop(HSSFCellStyle.BORDER_THIN);
        styleCellRight.setBorderRight(HSSFCellStyle.BORDER_THIN);
        styleCellRight.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        styleCellRight.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
        styleCellRight.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        styleCellRight.setWrapText(true);

        HSSFCellStyle titleTongStyle = (HSSFCellStyle) workbook.createCellStyle();
        titleTongStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        titleTongStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
        titleTongStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
        titleTongStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        titleTongStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
        titleTongStyle.setFont(titleTongStyle_font);

        HSSFCellStyle titleLinhvucStyle = (HSSFCellStyle) workbook.createCellStyle();
        titleLinhvucStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        titleLinhvucStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
        titleLinhvucStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
        titleLinhvucStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        titleLinhvucStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
        titleLinhvucStyle.setFont(titleTongStyle_font);

        HSSFCellStyle styleQuochieu = (HSSFCellStyle) workbook.createCellStyle();
        styleQuochieu.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        styleQuochieu.setFont(style_font);

        HSSFCellStyle styleRow2 = (HSSFCellStyle) workbook.createCellStyle();
        styleRow2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        styleRow2.setFont(Row2_font);

        HSSFCellStyle ngaythang_style = (HSSFCellStyle) workbook.createCellStyle();
        ngaythang_style.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
        ngaythang_style.setFont(ngaythang_font);

        HSSFCellStyle style_trangthai = (HSSFCellStyle) workbook.createCellStyle();
        style_trangthai.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        style_trangthai.setFont(trangthai_font);

        HSSFCellStyle style_tungay_denngay = (HSSFCellStyle) workbook.createCellStyle();
        style_tungay_denngay.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        style_tungay_denngay.setFont(trangthai_font);

        HSSFCellStyle styleHeader = (HSSFCellStyle) workbook.createCellStyle();
        styleHeader.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        styleHeader.setBorderTop(HSSFCellStyle.BORDER_THIN);
        styleHeader.setBorderRight(HSSFCellStyle.BORDER_THIN);
        styleHeader.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        styleHeader.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        styleHeader.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        styleHeader.setFont(tableHeaderFont);
        styleHeader.setWrapText(true);

        HSSFCellStyle styleTitle = (HSSFCellStyle) workbook.createCellStyle();
        styleTitle.setFont(titleFont);
        styleTitle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        styleTitle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

        /*end style*/
        int rowNum = 0;
        String[] header = { "STT", "Lnh vc",
                LanguageUtil.get(
                        (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                        resourceRequest.getLocale(), "vn.dtt.cmon.report.baocaochitiet.tenhoso"),
                LanguageUtil.get(
                        (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                        resourceRequest.getLocale(), "vn.dtt.cmon.report.baocaochitiet.sohoso"),
                LanguageUtil.get(
                        (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                        resourceRequest.getLocale(), "vn.dtt.cmon.report.baocaochitiet.trangthai"),
                LanguageUtil.get(
                        (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                        resourceRequest.getLocale(), "vn.dtt.cmon.report.baocaochitiet.diachi"),
                LanguageUtil.get(
                        (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                        resourceRequest.getLocale(), "vn.dtt.cmon.report.baocaochitiet.dienthoai"),
                LanguageUtil.get(
                        (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                        resourceRequest.getLocale(), "vn.dtt.cmon.report.baocaochitiet.nguoinophoso"),
                LanguageUtil.get(
                        (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                        resourceRequest.getLocale(), "vn.dtt.cmon.report.baocaochitiet.chuhoso"),
                LanguageUtil.get(
                        (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                        resourceRequest.getLocale(), "vn.dtt.cmon.report.baocaochitiet.ngaynhan"),
                LanguageUtil.get(
                        (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                        resourceRequest.getLocale(), "vn.dtt.cmon.report.baocaochitiet.ngaytra"),
                "Tnh trng\n h s",
                LanguageUtil.get(
                        (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                        resourceRequest.getLocale(), "vn.dtt.cmon.report.baocaochitiet.ghichu") };
        int[] width = { 1200, 3750, 3750, 4200, 3650, 3650, 3650, 3650, 3750, 3750, 3750, 3750, 3750 };

        String[] listloaihoso = null;
        if (Validator.isNotNull(ParamUtil.getParameterValues(resourceRequest, "chon_hoso"))) {
            listloaihoso = ParamUtil.getParameterValues(resourceRequest, "chon_hoso");
        }
        String ngaynhan_tungay = "";
        if (Validator.isNotNull(ParamUtil.getString(resourceRequest, "ngaynhan_tungay"))) {
            ngaynhan_tungay = ParamUtil.getString(resourceRequest, "ngaynhan_tungay");
        }
        String ngaynhan_denngay = "";
        if (Validator.isNotNull(ParamUtil.getString(resourceRequest, "ngaynhan_denngay"))) {
            ngaynhan_denngay = ParamUtil.getString(resourceRequest, "ngaynhan_denngay");
        }
        String trangthai_hoso = "";
        if (Validator.isNotNull(ParamUtil.getString(resourceRequest, "trangthai_hoso"))) {
            trangthai_hoso = ParamUtil.getString(resourceRequest, "trangthai_hoso");
        }
        String tinhtrang = "";
        if (Validator.isNotNull(ParamUtil.getString(resourceRequest, "tinhtrang_hoso"))) {
            tinhtrang = ParamUtil.getString(resourceRequest, "tinhtrang_hoso");
        }
        String loaidangky = "";
        if (Validator.isNotNull(ParamUtil.getString(resourceRequest, "loaidangky_hoso"))) {
            loaidangky = ParamUtil.getString(resourceRequest, "loaidangky_hoso");
        }
        String ten_donvi = "";
        if (Validator.isNotNull(ParamUtil.getString(resourceRequest, "chon_donvi"))) {
            ten_donvi = ParamUtil.getString(resourceRequest, "chon_donvi");
        }
        List<Baocaochitiet> list = BaocaochitietLocalServiceUtil.hienthiDanhsachBaocao(listloaihoso,
                ngaynhan_tungay, ngaynhan_denngay, trangthai_hoso, tinhtrang, loaidangky, QueryUtil.ALL_POS,
                QueryUtil.ALL_POS);

        sheet.addMergedRegion(new Region(rowNum, (short) 0, (short) 0, (short) 2));
        HSSFRow Quochieu = sheet.createRow(rowNum);
        HSSFCell Quochieucell_1 = Quochieu.createCell(0);
        HSSFCell Quochieucell_2 = Quochieu.createCell(3);
        Quochieucell_1.setCellStyle(styleQuochieu);
        Quochieucell_2.setCellStyle(styleQuochieu);
        Quochieucell_1.setCellValue(LanguageUtil.get(
                (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.qlc"));
        sheet.addMergedRegion(new Region(rowNum, (short) 3, (short) 0, (short) 12));
        Quochieucell_2.setCellValue(LanguageUtil.get(
                (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.chxhcnvn"));
        rowNum = rowNum + 1;

        sheet.addMergedRegion(new Region(rowNum, (short) 0, (short) 1, (short) 2));
        HSSFRow Row_2 = sheet.createRow(rowNum);
        //HSSFCell Quan = Row_2.createCell(0);
        //Quan.setCellValue(LanguageUtil.get((PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG) ,resourceRequest.getLocale(),"vn.dtt.cmon.report.excel.qlc"));
        //Quan.setCellStyle(styleRow2);

        sheet.addMergedRegion(new Region(rowNum, (short) 3, (short) 1, (short) 12));
        HSSFCell Tieungu = Row_2.createCell(3);
        Tieungu.setCellValue(LanguageUtil.get(
                (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.dltdhp"));
        Tieungu.setCellStyle(styleRow2);
        rowNum = rowNum + 1;

        Calendar dateTime = Calendar.getInstance();
        SimpleDateFormat ngay_format = new SimpleDateFormat("dd");
        SimpleDateFormat thang_format = new SimpleDateFormat("MM");
        SimpleDateFormat nam_format = new SimpleDateFormat("yyyy");
        Date time = dateTime.getTime();
        String day = ngay_format.format(time);
        String month = thang_format.format(time);
        String year = nam_format.format(time);
        sheet.addMergedRegion(new Region(rowNum, (short) 0, (short) 2, (short) 10));
        HSSFRow Row_3 = sheet.createRow(rowNum);
        HSSFCell ngaythang = Row_3.createCell(0);
        ngaythang.setCellValue(ten_donvi + ", "
                + LanguageUtil.get(
                        (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                        resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.ngay")
                + " " + day + " "
                + LanguageUtil
                        .get((PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                                resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.thang")
                + " " + month + " "
                + LanguageUtil.get(
                        (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                        resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.nam")
                + " " + year);
        ngaythang.setCellStyle(ngaythang_style);
        rowNum = rowNum + 1;

        sheet.addMergedRegion(new Region(rowNum, (short) 0, rowNum, (short) 10));
        HSSFRow titleRow = sheet.createRow(rowNum);
        HSSFCell titleCell = titleRow.createCell(0);
        titleCell.setCellValue(LanguageUtil.get(
                (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                resourceRequest.getLocale(), "vn.dtt.cmon.report.baocaochitiet.tieude"));
        titleCell.setCellStyle(styleTitle);
        if (ngaynhan_tungay != "" && ngaynhan_denngay != "") {
            rowNum = rowNum + 1;
            sheet.addMergedRegion(new Region(rowNum, (short) 0, rowNum, (short) 10));
            HSSFRow TimeReportRow = sheet.createRow(rowNum);
            HSSFCell TimeReportCell = TimeReportRow.createCell(0);
            TimeReportCell.setCellValue(LanguageUtil.get(
                    (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                    resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.tungay") + ": " + ngaynhan_tungay
                    + " "
                    + LanguageUtil.get(
                            (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                            resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.denngay")
                    + ": " + ngaynhan_denngay);
            TimeReportCell.setCellStyle(style_tungay_denngay);
        } else if (ngaynhan_tungay != "" && ngaynhan_denngay == "") {
            rowNum = rowNum + 1;
            ngaynhan_denngay = "01/12/" + ngaynhan_tungay.substring(6, 10);
            sheet.addMergedRegion(new Region(rowNum, (short) 0, rowNum, (short) 10));
            HSSFRow TimeReportRow = sheet.createRow(rowNum);
            HSSFCell TimeReportCell = TimeReportRow.createCell(0);
            TimeReportCell.setCellValue(LanguageUtil.get(
                    (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                    resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.tungay") + ": " + ngaynhan_tungay
                    + " "
                    + LanguageUtil.get(
                            (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                            resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.denngay")
                    + ": " + ngaynhan_denngay);
            TimeReportCell.setCellStyle(style_tungay_denngay);
        } else if (ngaynhan_tungay == "" && ngaynhan_denngay != "") {
            rowNum = rowNum + 1;
            ngaynhan_tungay = "01/01/" + ngaynhan_denngay.substring(6, 10);
            sheet.addMergedRegion(new Region(rowNum, (short) 0, rowNum, (short) 10));
            HSSFRow TimeReportRow = sheet.createRow(rowNum);
            HSSFCell TimeReportCell = TimeReportRow.createCell(0);
            TimeReportCell.setCellValue(LanguageUtil.get(
                    (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                    resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.tungay") + ": " + ngaynhan_tungay
                    + " "
                    + LanguageUtil.get(
                            (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                            resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.denngay")
                    + ": " + ngaynhan_denngay);
            TimeReportCell.setCellStyle(style_tungay_denngay);
        } else {
            rowNum = rowNum + 1;
            ngaynhan_tungay = "01/01/" + year;
            ngaynhan_denngay = "01/12/" + year;
            sheet.addMergedRegion(new Region(rowNum, (short) 0, rowNum, (short) 10));
            HSSFRow TimeReportRow = sheet.createRow(rowNum);
            HSSFCell TimeReportCell = TimeReportRow.createCell(0);
            TimeReportCell.setCellValue(LanguageUtil.get(
                    (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                    resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.tungay") + ": " + ngaynhan_tungay
                    + " "
                    + LanguageUtil.get(
                            (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                            resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.denngay")
                    + ": " + ngaynhan_denngay);
            TimeReportCell.setCellStyle(style_tungay_denngay);
        }
        if (!trangthai_hoso.equals("")) {
            rowNum = rowNum + 1;
            sheet.addMergedRegion(new Region(rowNum, (short) 0, rowNum, (short) 10));
            HSSFRow TimeReportRow = sheet.createRow(rowNum);
            HSSFCell TimeReportCell = TimeReportRow.createCell(0);
            TimeReportCell
                    .setCellValue("("
                            + LanguageUtil.get(
                                    (PortletConfig) resourceRequest
                                            .getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                                    resourceRequest.getLocale(), "vn.dtt.cmon.report.baocaochitiet.trangthai")
                            + ": " + TrangThaiHoSoLocalServiceUtil
                                    .getTrangThaiHoSo(Long.parseLong(trangthai_hoso)).getTrangThai()
                            + ")");
            TimeReportCell.setCellStyle(style_trangthai);
        }
        rowNum = rowNum + 3;
        HSSFRow headerRow = (HSSFRow) sheet.createRow(rowNum);
        int colNum = 0;
        for (int i = 0; i < header.length; i++) {
            HSSFCell cell = headerRow.createCell(colNum);
            cell.setCellStyle(styleHeader);
            cell.setCellValue(header[i]);
            sheet.setColumnWidth(i, width[i]);
            colNum++;
        }
        rowNum++;
        long count = 0;
        if (list != null && list.size() > 0) {
            long linhvucId = 0L;
            for (int a = 0; a < list.size(); a++) {
                String tinh_trang = "";
                if (Validator.isNotNull(list.get(a).getNGAYTRAKETQUA())
                        && Validator.isNotNull(list.get(a).getNGAYHENTRAKETQUA())) {
                    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
                    Date ngaytra = df.parse(list.get(a).getNGAYTRAKETQUA());
                    Date ngayhentra = df.parse(list.get(a).getNGAYHENTRAKETQUA());
                    if (ngaytra.before(ngayhentra)) {
                        tinh_trang = "Sm hn";
                    } else if (ngaytra.equals(ngayhentra)) {
                        tinh_trang = "ng hn";
                    } else if (ngaytra.after(ngayhentra)) {
                        tinh_trang = "Tr hn";
                    }
                }
                //khai bao dong va cac cell
                HSSFRow row = (HSSFRow) sheet.createRow(rowNum);
                HSSFCell cell = row.createCell(0);
                HSSFCell cell1 = row.createCell(1);
                HSSFCell cell2 = row.createCell(2);
                HSSFCell cell3 = row.createCell(3);
                HSSFCell cell4 = row.createCell(4);
                HSSFCell cell5 = row.createCell(5);
                HSSFCell cell6 = row.createCell(6);
                HSSFCell cell7 = row.createCell(7);
                HSSFCell cell8 = row.createCell(8);
                HSSFCell cell9 = row.createCell(9);
                HSSFCell cell10 = row.createCell(10);
                HSSFCell cell11 = row.createCell(11);
                HSSFCell cell12 = row.createCell(12);
                //set style cho cac cell
                cell.setCellStyle(styleCellCenter);
                cell1.setCellStyle(styleCellLeft);
                cell2.setCellStyle(styleCellCenter);
                cell3.setCellStyle(styleCellCenter);
                cell4.setCellStyle(styleCellCenter);
                cell5.setCellStyle(styleCellCenter);
                cell6.setCellStyle(styleCellCenter);
                cell7.setCellStyle(styleCellCenter);
                cell8.setCellStyle(styleCellCenter);
                cell9.setCellStyle(styleCellCenter);
                cell10.setCellStyle(styleCellCenter);
                cell11.setCellStyle(styleCellCenter);
                cell12.setCellStyle(styleCellCenter);
                //set gia tri cho cac cell
                cell.setCellValue((a + 1));
                cell1.setCellValue(NhomThuTucHanhChinhLocalServiceUtil
                        .getNhomThuTucHanhChinh(list.get(a).getLINHVUCID()).getTen());
                cell2.setCellValue(list.get(a).getTEN());
                cell3.setCellValue(list.get(a).getMASOHOSO());
                cell4.setCellValue(list.get(a).getTRANGTHAI());
                cell5.setCellValue(list.get(a).getDIACHIHIENNAY());
                cell6.setCellValue(list.get(a).getDIENTHOAIDIDONG());
                cell7.setCellValue(list.get(a).getHOTENNGUOINOPHOSO());
                cell8.setCellValue(list.get(a).getNGUOIDAIDIENPHAPLUAT());
                cell9.setCellValue(list.get(a).getNGAYNHANHOSO());
                cell10.setCellValue(list.get(a).getNGAYTRAKETQUA());
                cell11.setCellValue(tinh_trang);
                cell12.setCellValue(list.get(a).getGHICHU());
                count = a;
                rowNum++;
            }
            count = count + 1;
        } else {
            //khai bao dong va cac cell
            HSSFRow row = (HSSFRow) sheet.createRow(rowNum);
            HSSFCell cell = row.createCell(0);
            HSSFCell cell1 = row.createCell(1);
            HSSFCell cell2 = row.createCell(2);
            HSSFCell cell3 = row.createCell(3);
            HSSFCell cell4 = row.createCell(4);
            HSSFCell cell5 = row.createCell(5);
            HSSFCell cell6 = row.createCell(6);
            HSSFCell cell7 = row.createCell(7);
            HSSFCell cell8 = row.createCell(8);
            HSSFCell cell9 = row.createCell(9);
            HSSFCell cell10 = row.createCell(10);
            HSSFCell cell11 = row.createCell(11);
            HSSFCell cell12 = row.createCell(12);
            //set style cho cac cell
            cell.setCellStyle(styleCellCenter);
            cell1.setCellStyle(styleCellLeft);
            cell2.setCellStyle(styleCellCenter);
            cell3.setCellStyle(styleCellCenter);
            cell4.setCellStyle(styleCellCenter);
            cell5.setCellStyle(styleCellCenter);
            cell6.setCellStyle(styleCellCenter);
            cell7.setCellStyle(styleCellCenter);
            cell8.setCellStyle(styleCellCenter);
            cell9.setCellStyle(styleCellCenter);
            cell10.setCellStyle(styleCellCenter);
            cell11.setCellStyle(styleCellCenter);
            cell12.setCellStyle(styleCellCenter);
            //set gia tri cho cac cell
            cell.setCellValue("");
            cell1.setCellValue("");
            cell2.setCellValue("");
            cell3.setCellValue("");
            cell4.setCellValue("");
            cell5.setCellValue("");
            cell6.setCellValue("");
            cell7.setCellValue("");
            cell8.setCellValue("");
            cell9.setCellValue("");
            cell10.setCellValue("");
            cell11.setCellValue("");
            cell12.setCellValue("");
            count = 0;
            rowNum++;
        }
        sheet.addMergedRegion(new Region(rowNum, (short) 0, rowNum, (short) 11));
        HSSFRow rowTong = (HSSFRow) sheet.createRow(rowNum);
        HSSFCell cell = rowTong.createCell(0);
        HSSFCell cell1 = rowTong.createCell(1);
        HSSFCell cell2 = rowTong.createCell(2);
        HSSFCell cell3 = rowTong.createCell(3);
        HSSFCell cell4 = rowTong.createCell(4);
        HSSFCell cell5 = rowTong.createCell(5);
        HSSFCell cell6 = rowTong.createCell(6);
        HSSFCell cell7 = rowTong.createCell(7);
        HSSFCell cell8 = rowTong.createCell(8);
        HSSFCell cell9 = rowTong.createCell(9);
        HSSFCell cell10 = rowTong.createCell(10);
        HSSFCell cell11 = rowTong.createCell(11);
        HSSFCell cell12 = rowTong.createCell(12);
        //set style cho cac cell
        cell.setCellStyle(titleTongStyle);
        cell1.setCellStyle(styleCellCenter);
        cell2.setCellStyle(styleCellCenter);
        cell3.setCellStyle(styleCellCenter);
        cell4.setCellStyle(styleCellCenter);
        cell5.setCellStyle(styleCellCenter);
        cell6.setCellStyle(styleCellCenter);
        cell7.setCellStyle(styleCellCenter);
        cell8.setCellStyle(styleCellCenter);
        cell9.setCellStyle(styleCellCenter);
        cell10.setCellStyle(styleCellCenter);
        cell11.setCellStyle(styleCellCenter);
        cell12.setCellStyle(styleCellCenter);
        //set value for cells of rowtong 
        cell.setCellValue(LanguageUtil.get(
                (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                resourceRequest.getLocale(), "vn.dtt.cmon.report.baocaochitiet.tonghoso"));
        cell12.setCellValue(count);

        rowNum = rowNum + 2;
        sheet.addMergedRegion(new Region(rowNum, (short) 1, rowNum, (short) 2));
        HSSFRow nguoilap_baocaoRow = sheet.createRow(rowNum);
        HSSFCell nguoilap_Cell = nguoilap_baocaoRow.createCell(1);
        nguoilap_Cell.setCellValue(LanguageUtil.get(
                (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.nguoilap"));
        nguoilap_Cell.setCellStyle(styleTitle);

        sheet.addMergedRegion(new Region(rowNum, (short) 7, rowNum, (short) 10));
        HSSFCell title_nguoibaocao_Cell = nguoilap_baocaoRow.createCell(7);
        title_nguoibaocao_Cell.setCellValue(LanguageUtil.get(
                (PortletConfig) resourceRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG),
                resourceRequest.getLocale(), "vn.dtt.cmon.report.excel.nguoibaocao"));
        title_nguoibaocao_Cell.setCellStyle(styleTitle);

        rowNum = rowNum + 4;

        if (Validator.isNotNull(resourceRequest.getAttribute("THEME_DISPLAY"))) {
            CongChuc congchuc = new CongChucImpl();
            ThemeDisplay themdisplay = (ThemeDisplay) resourceRequest.getAttribute("THEME_DISPLAY");
            User user = themdisplay.getUser();
            TaiKhoanNguoiDung taikhoan = new TaiKhoanNguoiDungImpl();
            taikhoan = TaiKhoanNguoiDungLocalServiceUtil.findByTaiKhoanNguoiDungId(user.getUserId());
            congchuc = ActionUtil.getCongchucByTaiKhoanNguoiDungId(taikhoan.getId());

            sheet.addMergedRegion(new Region(rowNum, (short) 1, rowNum, (short) 2));
            HSSFRow nguoi_baocaoRow = sheet.createRow(rowNum);
            HSSFCell nguoibaocao_Cell = nguoi_baocaoRow.createCell(1);
            nguoibaocao_Cell.setCellValue(congchuc.getHoVaTen());
            nguoibaocao_Cell.setCellStyle(styleTitle);
        }

        resourceResponse.setContentType("application/vnd.ms-excel;charset=utf-8");
        resourceResponse.addProperty(HttpHeaders.CACHE_CONTROL, "max-age=3600, must-revalidate");
        resourceResponse.addProperty(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=Baocaochitiet.xls");
        OutputStream out = resourceResponse.getPortletOutputStream();
        workbook.write(out);
        out.flush();
        out.close();
    } catch (Exception e) {
    }
}

From source file:org.openmrs.module.mksreports.renderer.PatientHistoryExcelTemplateRenderer.java

License:Open Source License

/** 
 * @see ReportRenderer#render(ReportData, String, OutputStream)
 *//*from ww  w  .  j av  a  2  s.  co  m*/
public void render(ReportData reportData, String argument, OutputStream out)
        throws IOException, RenderingException {

    try {
        log.debug("Attempting to render report with ExcelTemplateRenderer");
        ReportDesign design = getDesign(argument);
        Workbook wb = getExcelTemplate(design);

        if (wb == null) {
            XlsReportRenderer xlsRenderer = new XlsReportRenderer();
            xlsRenderer.render(reportData, argument, out);
        } else {
            //This should be changed to get the dataset name form a parameter 
            DataSet ds = reportData.getDataSets().get("patient");
            ArrayList<String> names = new ArrayList<String>();

            for (DataSetColumn dataSetRow : ds.getMetaData().getColumns()) {
                names.add(dataSetRow.getName());
            }
            Sheet s = wb.getSheetAt(0);

            //Trying to creat a row that has the replacement values pre-populated
            Row h = s.createRow(8);
            CellStyle style = wb.createCellStyle();
            Font font = wb.createFont();
            font.setFontName(HSSFFont.FONT_ARIAL);
            font.setBold(true);
            style.setFont(font);

            for (String name : names) {
                Cell c = h.createCell(names.indexOf(name));
                String value = name.toUpperCase().replace("_", " ");
                c.setCellValue(value);
                c.setCellStyle(style);
            }

            Row r = s.getRow(9);

            for (String name : names) {
                Cell c = r.createCell(names.indexOf(name));
                String value = "#patient." + name + "#";
                c.setCellValue(value);
            }

            Map<String, String> repeatSections = getRepeatingSections(design);

            // Put together base set of replacements.  Any dataSet with only one row is included.
            Map<String, Object> replacements = getBaseReplacementData(reportData, design);

            // Iterate across all of the sheets in the workbook, and configure all those that need to be added/cloned
            List<SheetToAdd> sheetsToAdd = new ArrayList<SheetToAdd>();

            Set<String> usedSheetNames = new HashSet<String>();
            int numberOfSheets = wb.getNumberOfSheets();

            for (int sheetNum = 0; sheetNum < numberOfSheets; sheetNum++) {

                Sheet currentSheet = wb.getSheetAt(sheetNum);
                String originalSheetName = wb.getSheetName(sheetNum);

                String dataSetName = getRepeatingSheetProperty(sheetNum, repeatSections);
                if (dataSetName != null) {

                    DataSet repeatingSheetDataSet = getDataSet(reportData, dataSetName, replacements);
                    int dataSetRowNum = 0;
                    for (Iterator<DataSetRow> rowIterator = repeatingSheetDataSet.iterator(); rowIterator
                            .hasNext();) {
                        DataSetRow dataSetRow = rowIterator.next();
                        dataSetRowNum++;
                        Map<String, Object> newReplacements = getReplacementData(replacements, reportData,
                                design, dataSetName, dataSetRow, dataSetRowNum);
                        Sheet newSheet = (dataSetRowNum == 1 ? currentSheet : wb.cloneSheet(sheetNum));
                        sheetsToAdd.add(new SheetToAdd(newSheet, sheetNum, originalSheetName, newReplacements));
                    }
                } else {
                    sheetsToAdd.add(new SheetToAdd(currentSheet, sheetNum, originalSheetName, replacements));
                }
            }

            // Then iterate across all of these and add them in
            for (int i = 0; i < sheetsToAdd.size(); i++) {
                addSheet(wb, sheetsToAdd.get(i), usedSheetNames, reportData, design, repeatSections);
            }

            wb.write(out);
        }
    } catch (Exception e) {
        throw new RenderingException("Unable to render results due to: " + e, e);
    }
}