Обнаружение необходимой ориентации печати с помощью 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());