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.
Después de haber agregado todos sus datos a la hoja, puede llamar a autoSizeColumn(int column)
en su hoja para autoevaluar las columnas al tamaño adecuado
Aquí hay un enlace a la API .
Consulte esta publicación para obtener más información. Problema al ajustar el tamaño de celda de Excel al tamaño del contenido cuando se usa apache poi.