2008-11-18 116 views
5

Tengo algunos informes de Jasper que se muestran en formato HTML. Me gustaría que el ancho de las columnas en las tablas HTML se redimensione automáticamente para ajustarse al contenido de la celda más ancha (en esa columna), de modo que se muestren todos los datos.Ancho de celda de columna dinámica

Actualmente esto no sucede debido a que el código HTML generado por Jasper especifica anchos fijos para la tabla < > y algunos <td> elementos, por ejemplo,

<td style="width: 20px; height: 17px;"> 
    <span style="font-family: Arial; font-size: 11px;">[email protected]</span> 
</td> 

I no puede simplemente eliminar todas estas propiedades de ancho (usando JavaScript), debido a que (como se muestra en el HTML arriba) los datos que se oculta cuando el uso de estas anchuras ni siquiera se regresó a la del lado del cliente

Saludos, Don

+0

Ha intentado usar [iReport] (http://jasperforge.org/plugins/project/project_home.php?group_id=83). Es un IDE para escribir JasperReports. Podría simplificar tu vida. – Tom

+0

Tengo el mismo problema. Si desea que las columnas se distribuyan uniformemente a través del ancho disponible, no es posible. En Jasper Stuido, cuando creas una tabla con un valor de 10 columnas, las columnas se colocan en un área pequeña con un ancho de solo 22 píxeles. A continuación, debe editar cada celda y cambiar manualmente el ancho a un valor que calcule; demora horas. Luego, cuando quieras cambiarlo ... por esta razón NUNCA uso tablas. Utilizo subinformes para casi todo, ya que puede cambiar su ancho arrastrándolo. –

Respuesta

4

Aunque no es perfecto, que podrían marcar el campo para estirar con desbordamiento. Esto al menos te daría todos los datos. En el archivo de jrxml sería similar a:

<textField isStretchWithOverflow="true" hyperlinkType="None"> 
<reportElement style="Report Sub-Title" x="0" y="84" width="802" height="20"/> 
<textElement/> 
<textFieldExpression class="java.lang.String"><![CDATA["For the period ...]]></textFieldExpression> 
</textField> 

Me temo que no sé de cualquier característica de Jasper informa que permitiría que el cambio de tamaño dinámico del ancho de las columnas - Es probablemente una de las cosas que tiene sentido para HTML pero poco sentido para otros formatos de salida como PDF.

+0

De acuerdo con Jamie Love. Pero aplicaría su sugerencia en la etiqueta columnHeader, para que la propiedad se aplique a toda la columna. –

+0

Impresionante, gracias! Descubrí que cuando la columna se estira para ajustarse a los contenidos, no hay relleno al lado de la columna adyacente. Agregar '' dentro del elemento 'textField' solucionó ese problema según lo sugerido por [esta respuesta SO] (http://stackoverflow.com/a/14284593/848668) – br3nt

-2

En iReport hay una opción llamada "Tipo de estiramiento". Seleccione "Relativo a la altura de la banda"

+3

@Carlos: Eso será hace que la celda se estire en altura, no en ancho. –

3

Los desarrolladores tomaron la decisión consciente de no permitir que el ancho de la celda se estire. Para que las columnas cambien su ancho en función del contenido, debe hacerlo a través de la programación. Una herramienta útil: DynamicJasper.

DynamicJasper crea informes dinámicamente, definiendo en tiempo de ejecución los columnas, ancho de columna (ancho automático), grupos, variables, tipos de letra, Gráficas, tablas de referencias cruzadas, los informes de sub (que también puede ser dinámico), página tamaño y todo más que se puede definir en el diseño tiempo.

+0

Disculpe, pero ¿cómo lo hace en DynamicJasper? Siembre que el 'addColumn' en 'FastReportBuilder' pide el valor _int_ para el ancho –

Cuestiones relacionadas