2010-10-20 22 views
9

Estoy utilizando Apache POI para crear hojas de cálculo xls. ¿Hay alguna manera de detectar si los datos se ajustan en modo retrato o si tengo que configurar la hoja en modo horizontal? Sé cómo configurar los modos, pero no sé cómo averiguar si los datos se ajustan a la orientación de impresión actual.Detectar la orientación de impresión necesaria con Apache POI

Respuesta

4

Lo he intentado pero no puedo ver la manera de hacerlo funcionar.

Cuando crea el libro de trabajo, poi establece por defecto el alto y el ancho de ajuste a 1 cada uno.

Fit altura es el número de páginas de alta para encajar hoja en

y

Fit Ancho es el número de páginas de ancho para encajar hoja en

A menos que configure la altura y el ancho de la impresión de la hoja a un valor más alto como ese,

sheet.getPrintSetup().setFitHeight((short)10); 

System.out.println (sheet.getPrintSetup().getFitWidth()); 
System.out.println (sheet.getPrintSetup().getFitHeight()); 

siempre devuelven 1 y 1

El problema es Excel siempre se comprimirá los datos (en tamaño de zoom) hasta el 10% para ajustar el diseño de la página 1 x 1. [En MS_Excel, esto aparece como Print Preview > Page Setup > Scaling > Down to X% of actual size]

Una vez que el zoom está al 10%, desborda los datos en la página 2 y así sucesivamente.

que he probado una hoja con una gran cantidad de datos e incluso envió una gran PrintArea

workBook.setPrintArea(
        0, //sheet index 
        0, //start column 
        50, //end column 
        0, //start row 
        520 //end row 
      ); 

en una variedad de tamaños de impresión.

sheet.getPrintSetup().setPaperSize((short)11); // A5 

Así que el defecto de impresión/zona de orientación no se cambian a menos que anule ellos, así que no creo que los datos pueden ser detectados a ser mayor que el área de impresión - que es lo que está tratando de obtener.

Esto podría ser uno para las listas de correo POI.

Actualizado para incluir un enlace a esta discusión en las listas de correo POI como ya ha pedido OP.

http://mail-archives.apache.org/mod_mbox/poi-user/201010.mbox/%[email protected]%3e

+0

ya hice esta pregunta en la lista de correo de puntos de interés y no recibió una respuesta. Bueno, la respuesta es que no es posible, como mencionaste. Esperaré otro par de días y veré si alguien encuentra una solución (aunque lo dudo) – black666

5
HSSFPrintSetup printSetup = sheet.getPrintSetup(); 
    sheet.getPrintSetup().setFitWidth((short) 1); 
    sheet.getPrintSetup().setFitHeight((short) 0); 
    sheet.setAutobreaks(true); 
    printSetup .setLandscape(true); 

    HSSFFooter footer = wygSheet.getFooter(); 
    footer.setCenter("Page " + HSSFFooter.page() + " of "+ HSSFFooter.numPages()); 
+0

No funcionó, pero si cambio el setFitHeight a 1 de 0, entonces funcionó –

Cuestiones relacionadas