Estoy intentando crear algunos archivos xlsx utilizando la biblioteca de POI de Apache para Java y todo para crear los archivos está funcionando bien.Problemas para ajustar la hoja en una sola página en archivos xlsx usando la biblioteca de POI de Apache
El problema surge cuando quiero imprimir esos archivos usando una impresora física. Quiero hacer que cada hoja de mis libros se ajuste a una sola página. Miré a mi alrededor en la documentación y el siguiente código estaría supone que funciona:
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("format sheet");
PrintSetup ps = sheet.getPrintSetup();
sheet.setAutobreaks(true);
ps.setFitHeight((short)1);
ps.setFitWidth((short)1);
for(int i = 0; i < 100; ++i){
sheet.createRow(i);
sheet.getRow(i).createCell(0).setCellValue("Test " + i);
}
FileOutputStream output = new FileOutputStream("Test.xlsx");
wb.write(output);
output.close();
pero no ... Cuando trato de imprimir, se imprime a tres hojas (lo que en realidad se supone para imprimir si no utilicé la parte PrintSetup). Entonces el código simplemente no hace nada en absoluto.
¿Alguien puede decirme qué hay de malo con ese código?
Además, tengo otra pregunta sobre la impresión de archivos xlsx: ¿Quiero saber si hay una forma de imprimir los archivos xlsx desde mi programa Java sin abrir los archivos y hacer clic en imprimir? Me gusta wb.printAllSheetsInWorkbook(); o algo así.
Encontré esto mientras buscaba un problema similar pero usando NPOI (.NET Port of POI) y seguí las acciones equivalentes que mencionas con la más mínima variación; Configuré FitHeight = 0 para que Excel haga "Ajustar todas las columnas en una página". ¡Trabajado como un encanto! ¡Gracias! – Rynkadink
me ayuda (http://stackoverflow.com/a/12072291/3587592). – 0x5a4d
Añadiendo sheet.setAutobreaks (true); before sheet.setFitToPage (verdadero); trabajó para mi. –