2010-10-20 6 views
9

J'utilise Apache POI pour créer des feuilles de calcul xls. Y at-il un moyen de détecter si les données correspondent en mode portrait ou si je dois définir la feuille en mode paysage? Je sais comment régler les modes, mais je ne sais pas comment savoir si les données correspondent à l'orientation d'impression actuelle.Détection de l'orientation d'impression requise avec Apache POI

Répondre

4

J'ai essayé mais ne peux pas voir un moyen de faire fonctionner cela.

Lorsque vous créez le classeur, poi définit par défaut la hauteur et la largeur d'ajustement à 1 chacun.

Adapter à la hauteur correspond au nombre de pages élevées pour être compatibles avec la feuille en

et

Ajuster à la largeur correspond au nombre de pages de largeur pour être compatibles avec la feuille en

Sauf si vous définissez la hauteur et la largeur d'impression de la feuille sur une valeur plus élevée,

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

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

reviennent toujours 1 et 1

Le problème est Excel toujours compresser les données (taille du zoom) jusqu'à 10% pour s'adapter au 1 x 1 mise en page. [Dans MS_Excel, ceci apparaît comme Print Preview > Page Setup > Scaling > Down to X% of actual size]

Une fois que le zoom est à 10%, il déborde alors les données sur la page 2 et ainsi de suite.

J'ai essayé une feuille avec beaucoup de données et a même envoyé un grand PrintArea

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

sur une variété de formats d'impression.

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

Ainsi, la zone d'impression par défaut/orientation ne sont pas modifiés, sauf si vous les remplaciez, donc je ne pense pas que les données peuvent être détectées à être plus grande que la zone d'impression - qui est ce que vous essayez d'obtenir.

Ceci peut être un pour les listes de diffusion de POI.

Mis à jour pour inclure le lien vers cette discussion sur les listes de diffusion de POI comme déjà demandé par OP.

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

+0

je l'ai déjà posé cette question sur la liste de diffusion de POI et n'a pas obtenu une réponse. Oh bien ... peut-être la réponse est que ce n'est pas possible - comme vous l'avez mentionné. Je vais attendre encore quelques jours et voir si quelqu'un trouve une solution (j'en doute) – 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

Cela n'a pas fonctionné pour moi, mais si je change le setFitHeight à 1 de 0, alors ça a marché –

Questions connexes