Estoy usando Apache POI API
para generar excel spreadsheet
para generar algunos datos.
El problema al que me enfrento es que cuando se crea y abre la hoja de cálculo, las columnas no se expanden, por lo que un texto largo como el texto con formato de fecha no aparece a primera vista.
Podría simplemente hacer doble clic en el borde de la columna en Excel para expandir o arrastrar el borde para ajustar el ancho de la columna, pero podría haber más de 20 columnas y no hay forma de que quiera hacerlo manualmente cada vez que abro la hoja de cálculo :(
Me enteré (aunque podría ser un método incorrecto) groupRow()
y setColumnGroupCollapsed()
podría hacer el truco, pero no tuve suerte. Quizás lo estoy usando de manera incorrecta.
Fragmento de código de muestra
Workbook wb = new HSSFWorkbook();
CreationHelper createHelper = wb.getCreationHelper();
//create sheet
Sheet sheet = wb.createSheet("masatoSheet");
//not really working yet.... :(
//set group for expand/collapse
//sheet.groupRow(0, 10); //just random fromRow toRow argument values...
//sheet.setColumnGroupCollapsed(0, true);
//create row
Row row = sheet.createRow((short)0);
//put a cell in the row and store long text data
row.createCell(0).setCellValue("Loooooooong text not to show up first");
Cuando se crea esta hoja de cálculo, la cadena de "Muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuh
¿Cómo puedo configurarlo para que cuando abro mi hoja de cálculo, la columna ya esté expandida?
fuente
Respuestas:
Después de haber agregado todos sus datos a la hoja, puede llamar
autoSizeColumn(int column)
a su hoja para ajustar automáticamente las columnas al tamaño adecuado.Aquí hay un enlace a la API .
Consulte esta publicación para obtener más referencia Problema al ajustar el tamaño de celda de Excel al tamaño del contenido cuando se usa apache poi
fuente
autoSizeColumn
no se escala bien y será muy lento si tiene muchas filas. Tuve que ponerme un poco hacky y hacer algo similar a lo que se sugirió en esta pregunta .Consejo: para que el tamaño automático funcione, la llamada a
sheet.autoSizeColumn(columnNumber)
debe realizarse después de completar los datos en Excel.Llamar al método antes de completar los datos no tendrá ningún efecto.
fuente
(5 until row.lastCellNum).forEach { colNum -> val columnWidth = (row.getCell(colNum).toString().length * 0.44 + 2.24) * 768 reportSheet.setColumnWidth(colNum, columnWidth.toInt()) }
Si desea ajustar automáticamente el tamaño de todas las columnas en un libro de trabajo, aquí hay un método que puede ser útil:
fuente
NullPointerException
arow.cellIterator()
. ¿Es porque no tengo ningún valor en una de las celdas?Puedes probar algo como esto:
Aquí los parámetros son: número de columna en la hoja y su ancho Pero, las unidades de ancho son bastante pequeñas, puede probar 4000 por ejemplo.
fuente
Para POI de Excel:
fuente
código de muestra a continuación
// esto es crucial
// el argumento debe ser el número de celda
Comprueba la salida y vuélvete loco :)
fuente
Si conoce el recuento de sus columnas (por ejemplo, es igual a una lista de colección). Simplemente puede usar este forro para ajustar todas las columnas de una hoja (si usa al menos java 8):
fuente
Yo uso la siguiente solución simple:
Este es su libro de trabajo y hoja:
luego agregue datos a su hoja con columnas y filas. Una vez que haya terminado de agregar datos a la hoja, escriba el siguiente código al
autoSizeColumn
ancho.Aquí, en lugar de 15, agrega el número de columnas en su hoja.
Espero que alguien ayude con esto.
fuente
Es muy simple, use este código de una línea dataSheet.autoSizeColumn (0)
o dar el número de columna entre corchetes dataSheet.autoSizeColumn (número de celda)
fuente
También puede ajustar el texto. Código de muestra de PFB:
fuente
Puede usar
setColumnWidth()
si desea expandir más su celda.fuente