¿Cómo autoconfigurar contenido en la celda usando jxl api?Formato de celda JXL
Respuesta
Desde el JExcelApi FAQ
¿Cómo puedo hacer el equivilent de de "Formato/Columna/Ajuste automático Selección" Excel?
No hay función de API para hacer esto por usted. Tendrá que escribir un código que escanee las celdas de cada columna, calcule la longitud máxima y luego llame a setColumnView() en consecuencia. Esto te acercará a lo que Excel hace pero no exactamente. Como la mayoría de las fuentes tienen caracteres de ancho variable, para obtener el mismo valor exacto, deberá usar FontMetrics para calcular el ancho máximo de cada cadena en la columna. Nadie ha publicado un código sobre cómo hacer esto todavía. No dude en publicar el código en Yahoo! agrupe o envíelo directamente al autor de las FAQ enumerado en la parte inferior de esta página.
FontMetrics se llama así en java.awt.FontMetrics. Sin embargo, debería poder resolver algo con el método getLineMetrics (String, Graphics).
Sé que esta es una vieja pregunta en este momento, pero estaba buscando la solución a esto y pensé en publicarla en caso de que alguien más la necesitara.
no estoy seguro de por qué el FAQ no menciona esto, ya que existe muy claramente en la documentación.
Mi código se parecía a los siguientes:
for(int x=0;x<c;x++)
{
cell=sheet.getColumnView(x);
cell.setAutosize(true);
sheet.setColumnView(x, cell);
}
c
almacena el número de columnas creadas
celular es sólo un marcador de posición temporal para el regresado CellView
objeto
hoja es mi WriteableSheet
objeto
El Api advierte que esta es una función intensiva del procesador, por lo que probablemente no sea ideal para archivos grandes. Pero para un archivo pequeño como el mío (< 100 filas) no tomó un tiempo notable.
Espero que esto ayude a alguien.
El método de autoescala de CellView no funciona para mí todo el tiempo. Mi forma de hacerlo es establecer programáticamente el tamaño (ancho) de la columna en función de la mayor longitud de datos en la columna. Luego realiza algunas operaciones matemáticas.
CellView cv = excelSheet.getColumnView(0);
cv.setSize((highest + ((highest/2) + (highest/4))) * 256);
donde highest
es un int que mantiene la longitud más larga de los datos en la columna.
for(int x=0;x<c;x++)
{
cell=sheet.getColumnView(x);
cell.setAutosize(true);
sheet.setColumnView(x, cell);
}
Está bien, en lugar de escanear todas las columnas. Pase la columna como un parámetro.
void display(column)
{
Cell = sheet.getColumnView(column);
cell.setAutosize(true);
sheet.setColumnView(column, cell);
}
Así que cuando va a mostrar su texto, puede establecer la duración específica. Puede ser útil para grandes archivos de Excel.
El método setAutosize() NO FUNCIONARÁ si su celda tiene más de 255 caracteres.Esto está relacionado con la especificación de ancho máximo de columna de Excel 2003: http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP005199291.aspx
Deberá escribir su propio método de autosize para manejar este caso.
El método se explica por sí mismo y comentó:
private void sheetAutoFitColumns(WritableSheet sheet) {
for (int i = 0; i < sheet.getColumns(); i++) {
Cell[] cells = sheet.getColumn(i);
int longestStrLen = -1;
if (cells.length == 0)
continue;
/* Find the widest cell in the column. */
for (int j = 0; j < cells.length; j++) {
if (cells[j].getContents().length() > longestStrLen) {
String str = cells[j].getContents();
if (str == null || str.isEmpty())
continue;
longestStrLen = str.trim().length();
}
}
/* If not found, skip the column. */
if (longestStrLen == -1)
continue;
/* If wider than the max width, crop width */
if (longestStrLen > 255)
longestStrLen = 255;
CellView cv = sheet.getColumnView(i);
cv.setSize(longestStrLen * 256 + 100); /* Every character is 256 units wide, so scale it. */
sheet.setColumnView(i, cv);
}
}
probar este exemple:
expandColumns(sheet, 3);
workbook.write();
workbook.close();
private void expandColumn(WritableSheet sheet, int amountOfColumns){
int c = amountOfColumns;
for(int x=0;x<c;x++)
{
CellView cell = sheet.getColumnView(x);
cell.setAutosize(true);
sheet.setColumnView(x, cell);
}
}
- 1. Formato de número JXL y tipo de celda
- 2. JXL soluciona el problema #VALOR
- 3. Problema de formato de celda de Excel
- 4. JXL y Timezone escribiendo un Excel
- 5. Excel VBA: obtener el valor de la celda, independientemente del formato de la celda
- 6. OpenXml y formato de fecha en la celda de Excel
- 7. Cómo escribir números formateados como números en JExcel (jxl)
- 8. Lectura de Excel con JXL, recuento de células por fila cambiando entre las filas
- 9. Cómo obtener el valor de celda con el formato aplicado (valor de celda formateado) con OpenXML SDK
- 10. Editar archivos de Excel existentes usando jxl api/Apache POI
- 11. Agregar datos a un archivo de Excel usando jxl
- 12. ¿Cómo creo un nuevo archivo de Excel usando JXL?
- 13. ¿Cómo puedo cambiar el formato de texto de una celda de Excel usando C#?
- 14. La aplicación de formato de número% a un valor de celda usando OpenXml
- 15. php_excel07- Cómo hacer crecer la altura de la celda según los datos de la celda (xls)
- 16. Establecer el formato de moneda para la celda de Excel que se creó con ExcelPackage
- 17. Configuración del formato de la celda de fecha en excel xml
- 18. Databound DataGridView Formato de celda Int a Month Conversión de nombre
- 19. Cómo obtener el valor de celda de A1 (dirección de celda) usando apache poi 3.6
- 20. Cómo cambiar el formato de una celda a texto usando VBA
- 21. Formato personalizado de celda PHPExcel solo se muestra al hacer doble clic
- 22. cómo resolver el error JXL: jxl.read.biff.BiffException: no se puede reconocer la secuencia OLE
- 23. DataGridView - "Estilo de selección de celda" - Editar celda
- 24. ¿Cómo establecer el color de celda según el valor de celda en ooo-calc?
- 25. Cambiar el color de la celda JTable
- 26. Acceso de celda dinámico
- 27. Obtener ubicación de celda
- 28. Separación entre el encabezado y la primera celda - En formato simple UITableView
- 29. Ancho de celda de columna dinámica
- 30. Formato de número en excel Vb.Net
Gran ... esto está funcionando ... –
Muchas gracias! ¿Podría agregar el tipo de la celda? Eso es CellView? – sboda