使用Apache POI库将表格装配到xlsx文件中的单个页面时出现问题

Ada*_*ith 8 java printing xlsx apache-poi

我正在尝试使用Apache POI库为Java创建一些xlsx文件,并且创建文件的一切工作正常.

当我想使用物理打印机打印这些文件时,问题出现了.我想让我的工作簿中的每个工作表都适合单个页面.我浏览了文档,下面的代码应该可以工作:

       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();
Run Code Online (Sandbox Code Playgroud)

但它没有...当我尝试打印它时,它会打印到三张纸(如果我没有使用PrintSetup部件,它实际应该打印在哪一张).因此代码根本不做任何事情.

任何人都可以告诉我该代码有什么问题吗?

另外,我还有一个关于打印xlsx文件的问题:我想知道是否有办法从我的Java程序中打印xlsx文件而不实际打开文件并单击打印?像wb.printAllSheetsInWorkbook(); 或类似的东西.

小智 19

ps.setFitHeight((short)1);
ps.setFitWidth((short)1);
Run Code Online (Sandbox Code Playgroud)

使用

sheet.setFitToPage(true);
Run Code Online (Sandbox Code Playgroud)

  • 添加sheet.setAutobreaks(true); 在sheet.setFitToPage之前(true); 为我工作. (2认同)