2010-10-20 100 views
9

我使用Apache POI創建xls電子表格。有沒有辦法檢測數據是否適合縱向模式,或者如果我必須將工作表設置爲橫向模式?我知道如何設置模式,但我不知道如何確定數據是否符合當前的打印方向。使用Apache POI檢測所需的打印方向

回答

4

我試過,但不能看到一種方法來得到這個工作。

當您創建工作簿時,poi默認將適合高度和寬度默認爲1。

適合高度是高 在

適合寬度以適應片頁數爲寬 以適應片頁

除非像這樣將紙張打印高度和寬度設置爲更高的值,否則

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

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

始終返回1和1

的問題是Excel將始終壓縮數據(縮放大小)下降到10%,以適應1×1頁面佈局。 [在MS_Excel中,顯示爲Print Preview > Page Setup > Scaling > Down to X% of actual size]

一旦縮放比例爲10%,它就會將數據溢出到第2頁上,依此類推。

我試過用大量的數據片,甚至派出了大量printArea中

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

在多種打印尺寸。

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

所以,除非你覆蓋它們的默認可打印區域/方向不會改變,所以我不認爲該數據可以被檢測到比可打印區域 - 這是你想獲得什麼。

這可能是一個POI郵件列表。

更新包括鏈接到OP已經問OPI郵件列表這個討論。

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

+0

我已經問了POI郵件列表在這個問題上並沒有得到答案。哦,好吧..可能的答案是,這是不可能的 - 就像你提到的那樣。我會再等幾天,看看有人提出了一個解決方案(雖然我對此表示懷疑) – black666 2010-10-21 13:53:28

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

它並不適用於我,但如果我將setFitHeight從0更改爲1,那麼它工作 – 2015-12-02 20:14:12