Обнаружение необходимой ориентации печати с помощью Apache POI

Я использую Apache POI для создания таблиц xls. Есть ли способ определить, подходят ли данные в портретном режиме или мне нужно установить лист в ландшафтный режим? Я знаю, как установить режимы, но я не знаю, как узнать, соответствуют ли данные текущей ориентации печати.

2 ответов


Я пробовал, но не вижу способа заставить это работать.

при создании книги 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 это отображается как 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.

Обновлено включить ссылку на это обсуждение в списки рассылки POI, как уже просил OP.

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


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