Próbuję utworzyć niektóre pliki xlsx przy użyciu biblioteki punktów Apache dla Javy i wszystko, co trzeba, aby utworzyć pliki, działa poprawnie.Problemy z dopasowaniem arkusza do pojedynczej strony w plikach xlsx przy użyciu biblioteki Apache POI
Problem pojawia się, gdy chcę wydrukować te pliki przy użyciu fizycznej drukarki. Chcę, aby każdy arkusz w moich skoroszytach pasował do jednej strony. Rozejrzałem się w dokumentacji i następujący kod będzie miał działać:
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("format sheet");
PrintSetup ps = sheet.getPrintSetup();
sheet.setAutobreaks(true);
ps.setFitHeight((short)1);
ps.setFitWidth((short)1);
for(int i = 0; i < 100; ++i){
sheet.createRow(i);
sheet.getRow(i).createCell(0).setCellValue("Test " + i);
}
FileOutputStream output = new FileOutputStream("Test.xlsx");
wb.write(output);
output.close();
Ale to nie ... Kiedy próbuję go wydrukować, drukuje do trzech arkuszy (co byłoby rzeczywiście rzekomych wydrukować, jeśli nie korzystałem z części PrintSetup). Tak więc kod po prostu nic nie robi.
Czy ktoś może mi powiedzieć, co jest nie tak z tym kodem?
Mam również inne pytanie dotyczące drukowania plików xlsx: Chcę wiedzieć, czy istnieje sposób drukowania plików Xlsx z mojego programu Java bez faktycznego otwierania plików i klikania na wydruku? Podobnie jak wb.printAllSheetsInWorkbook(); lub coś w tym stylu.
Znalazłem to podczas lokowania dla podobnego problemu, ale używając NPOI (.NET Port of POI) i podążałem za równoważnymi akcjami, o których wspomniałeś przy najmniejszej zmianie; Ustawiłem FitHeight = 0, aby program Excel zrobił "Dopasuj wszystkie kolumny na jednej stronie". Pracował jak urok! Dzięki! – Rynkadink
Pomaga mi (http://stackoverflow.com/a/12072291/3587592). – 0x5a4d
Dodawanie pliku sheet.setAutobreaks (true); before sheet.setFitToPage (true); pracował dla mnie. –