/** No visualizar los campos que no tengan totales */ protected void setVisibleFields() { if (!showDetail) { for (int i = 0; i < fields.size(); i++) { ReportField field = ((ReportField) fields.get(i)); // buscar el campo en los totales y totales de los grupos boolean exist = false; for (int k = 0; k < totalFields.size(); k++) { if (((ReportTotalField) totalFields.get(k)).getField() == field) exist = true; } for (int k = 0; k < groups.size(); k++) { ReportGroup group = (ReportGroup) groups.get(k); for (int j = 0; j < group.getTotalFields().size(); j++) { if (((ReportTotalField) group.getTotalFields().get(j)).getField() == field) exist = true; } } if (!exist) field.setVisible(false); } } }
/** * Número de campos visibles * * @return */ public int getFieldCount() { int count = 0; for (ReportField f : getFields()) { if (f.isVisible()) ++count; } return count; }
/** Configurar el ancho de las columnas con respecto a la información de las celdas. */ protected void configColumns() { // configurar el ancho de las columnas de los grupos. for (int i = 0; i < groups.size(); i++) if (showDetail) getExcel().setColumnWidthCharacters(i, (i + 2)); else getExcel().setColumnWidth(i, ((ReportGroup) groups.get(i)).getMaxWidth()); // configurar el ancho de las columnas de los campos. int cont = 0; for (int i = 0; i < fields.size(); i++) { // excel.autoSizeColumn((short)i); ReportField field = ((ReportField) fields.get(i)); if (field.isVisible()) { if (field.getDisplayWidth() > 0) { getExcel().setColumnWidthCharacters(getInitColumnIndex() + cont, field.getDisplayWidth()); } else { // Formateo de la primera columna para evita tomar el ancho // del título y desajustar el informe. // if (cont == getInitColumnIndex()) { // double pixels = field.getMaxWidthPixels(); // // Ampliar el ancho de la columna si tiene un campo a // totalizar. // if // (getTotalFields().getReportTotalField(field.getFieldName()) // != null) // pixels += 2; // getExcel().setColumnWidthCharacters(getInitColumnIndex() // + cont, pixels); // } // else getExcel().autoSizeColumn(getInitColumnIndex() + cont); } ++cont; } } // Ajustar de nuevo la fila con el máximo tamaño calculado con los // valores contenidos en sus campos ya que al realizar el autosize del // paso anterior // la columna 0 se ajusta con el título y queda desproporcionada el // campo 1. // if (groups.size() == 0) { // if (fields.size() > 0) { // getExcel().setColumnWidthCharacters(0, // fields.get(0).getMaxWidthPixels()); // } // } // Merge de celdas para el título hasta completar todos los campos // mostrados en el informe. if (cont > 1 && header.hasLogos()) { if (header.getTitleRow() > -1) excel.mergeCells( header.getTitleRow(), getInitColumnIndex(), header.getTitleRow(), getInitColumnIndex() + cont - 1); if (header.getSubtitleRow() > -1) excel.mergeCells( header.getSubtitleRow(), getInitColumnIndex(), header.getSubtitleRow(), getInitColumnIndex() + cont - 1); } // Logos try { // Altura de filas de cabecera excel.setRowHeight(header.getTitleRow(), 400); if (header.getSubtitleRow() > -1) excel.setRowHeight(header.getSubtitleRow(), 400); header.generateLogos(); } catch (Exception e) { e.printStackTrace(); } }