Excel中的Apache POI分页符

时间:2019-03-15 03:24:26

标签: java excel apache-poi

大家好,我想问一下如何使用Java中的Apache poi删除excel中N列中的分页符。我已经在代码中设置了打印区域直到P列。但是当我尝试打印生成的Excel时,总是将分页符设置在N列中。

Generated Excel

如何在Java上使用Apache poi调整分页符?

1 个答案:

答案 0 :(得分:0)

如果目标是在打印时所有列(A:P)都适合一页宽度,则可以使用Scale a worksheet解决此问题。

以下代码使用Sheet.setAutobreaksSheet.setFitToPage结合PrintSetup.setFitWidthPrintSetup.setFitHeight来设置打印设置以适合缩放比例。设置宽度为适合所有列的页面宽度,并且高度设置为自动,因此当存在足够的行时将使用多页。

import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class CreateExcelAllColumnsFitToOnePageWidth {

 public static void main(String[] args) throws Exception {
  //Workbook workbook = new HSSFWorkbook();
  Workbook workbook = new XSSFWorkbook();
  Sheet sheet = workbook.createSheet();

  for (int r = 0; r < 200; r++) {
   Row row = sheet.createRow(r);
   for (int c = 0; c < 16; c++) {
    Cell cell = row.createCell(c);
    cell.setCellValue("Lorem ipsum");
    if (r==0) sheet.autoSizeColumn(c);
   }
  }

  sheet.setAutobreaks(true);
  sheet.setFitToPage(true);
  PrintSetup printSetup = sheet.getPrintSetup();
  printSetup.setFitHeight((short)0);
  printSetup.setFitWidth((short)1);


  String fileout = (workbook instanceof HSSFWorkbook)?"Excel.xls":"Excel.xlsx";
  FileOutputStream out = new FileOutputStream(fileout);
  workbook.write(out);
  out.close();
 }
}