setwraptext setcolumnwidth poi formato example desde dar celdas java excel expand apache-poi

java - formato - setcolumnwidth poi example



Apache POI Excel: ¿cómo configurar columnas para expandir? (9)

Es muy simple, use este código de una sola línea dataSheet.autoSizeColumn (0)

o ingrese el número de columna entre paréntesis dataSheet.autoSizeColumn (número de celda)

Estoy usando la Apache POI API para generar excel spreadsheet de excel spreadsheet para generar algunos datos.

El problema al que me enfrento es cuando se crea y abre la hoja de cálculo, las columnas no se expanden, por lo que algunos textos largos como el texto con formato de fecha no se muestran a primera vista.

Podría 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 abra la hoja de cálculo :(

Descubrí (aunque podría ser un método incorrecto) groupRow() y setColumnGroupCollapsed() podrían hacer el truco pero no setColumnGroupCollapsed() suerte. Tal vez 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 "Looooooong texte to not a first" está en la celda, pero como la columna no está expandida, solo aparece "Loooooooo".

¿Cómo puedo configurarlo para que cuando abra mi hoja de cálculo, la columna ya esté expandida?


Para POI de Excel:

sheetName.autoSizeColumn(cellnum);


Puede usar setColumnWidth() si quiere expandir más su celda.


Puedes probar algo como esto:

HSSFSheet summarySheet = wb.createSheet(); summarySheet.setColumnWidth(short column, short width);

Aquí los params son: número de columna en hoja y su ancho Pero, las unidades de ancho son bastante pequeñas, puedes probar 4000 por ejemplo.


Si conoce el recuento de sus columnas (es igual a una lista de recopilación). Simplemente puede usar este delineador para ajustar todas las columnas de una hoja (si usa al menos java 8):

IntStream.range(0, columnCount).forEach((columnIndex) -> sheet.autoSizeColumn(columnIndex));


Si desea ajustar automáticamente todas las columnas de un libro, aquí hay un método que puede ser útil:

public void autoSizeColumns(Workbook workbook) { int numberOfSheets = workbook.getNumberOfSheets(); for (int i = 0; i < numberOfSheets; i++) { Sheet sheet = workbook.getSheetAt(i); if (sheet.getPhysicalNumberOfRows() > 0) { Row row = sheet.getRow(0); Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); int columnIndex = cell.getColumnIndex(); sheet.autoSizeColumn(columnIndex); } } } }


código de muestra debajo

HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("your sheet name"); HSSFRow row = sheet.createRow(0); cell = row.createCell(0); cell.setCellValue("A BIG NAME WITH AUTO SIZE FEATURE ENABLED");

// esto es crucial

sheet.autoSizeColumn(0);

// argumento debe ser número de celda

cell = row.createCell(1); cell.setCellValue("a big name without auto size feature enabled");

Comprueba la salida y vete loco :)


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 rellenar los datos, no tendrá ningún efecto.