我使用Apache POI創建xls電子表格。有沒有辦法檢測數據是否適合縱向模式,或者如果我必須將工作表設置爲橫向模式?我知道如何設置模式,但我不知道如何確定數據是否符合當前的打印方向。使用Apache POI檢測所需的打印方向
9
A
回答
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
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
我已經問了POI郵件列表在這個問題上並沒有得到答案。哦,好吧..可能的答案是,這是不可能的 - 就像你提到的那樣。我會再等幾天,看看有人提出了一個解決方案(雖然我對此表示懷疑) – black666 2010-10-21 13:53:28