繁体   English   中英

使用Apache POI检测所需的打印方向

[英]Detect needed print orientation with Apache POI

我正在使用Apache POI来创建xls电子表格。 有没有办法检测数据是否适合纵向模式,或者我是否必须将工作表设置为横向模式? 我知道如何设置模式,但我不知道如何确定数据是否适合当前的打印方向。

   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());

我试过但是无法找到一种方法让这个工作。

创建工作簿时,poi会将“适合高度”和“宽度”默认为1。

“适合高度”是适合工作表的高页数

“适合宽度”是适合工作表的宽度页数

除非您将纸张打印高度和宽度设置为更高的值,否则

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

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

总是返回1和1

问题是Excel将始终将数据(缩放尺寸)压缩到10%以适应1 x 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已经提出的POI邮件列表上此讨论的链接。

http://mail-archives.apache.org/mod_mbox/poi-user/201010.mbox/%3c4CBDD258.80407@openforce.com%3e

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM