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

Java 使用Apache POI检测所需的打印方向,java,apache-poi,Java,Apache Poi,我正在使用ApachePOI创建xls电子表格。是否有办法检测数据是否适合纵向模式或是否必须将图纸设置为横向模式?我知道如何设置模式,但我不知道如何确定数据是否符合当前打印方向。我已经尝试过,但找不到一种方法来实现这一点 创建工作簿时,poi将拟合高度和宽度的默认值分别设置为1 Fit Height是指页数高 把床单放进去 及 Fit Width是宽度为的页数 把床单放进去 除非将图纸打印高度和宽度设置为更高的值(如所示) sheet.getPrintSetup().setFitHeight((

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

我已经尝试过,但找不到一种方法来实现这一点

创建工作簿时,poi将拟合高度和宽度的默认值分别设置为1

Fit Height是指页数高 把床单放进去

Fit Width是宽度为的页数 把床单放进去

除非将图纸打印高度和宽度设置为更高的值(如所示)

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中,显示为
打印预览>页面设置>缩放>缩小到实际大小的X%
]

一旦缩放到10%,它就会将数据溢出到第2页,依此类推

我尝试了一张包含大量数据的表格,甚至发送了一个大的打印区域

workBook.setPrintArea(
                    0, //sheet index
                    0, //start column
                    50, //end column
                    0, //start row
                    520  //end row
            );
在各种印刷尺寸上

sheet.getPrintSetup().setPaperSize((short)11); // A5 
因此,除非覆盖默认的可打印区域/方向,否则不会更改,因此我认为无法检测到数据大于可打印区域-这是您试图获得的

这可能是一个POI邮件列表

更新了,在POI邮件列表中加入了本次讨论的链接,如OP所要求的


我已经在POI邮件列表上问了这个问题,但没有得到答案。哦,好吧,也许答案是这是不可能的——就像你提到的那样。我将再等几天,看看是否有人提出了解决方案(尽管我对此表示怀疑),它对我不起作用,但如果我将setFitHeight从0更改为1,那么它就起作用了
   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());