Apache POI разрыв страницы в Excel - PullRequest
0 голосов
/ 15 марта 2019

Привет, ребята. Я просто хочу спросить о том, как удалить разрыв страницы в столбце N в Excel, используя Apache poi в Java. Я уже установил в своем коде, что моя область печати до столбца P. Но когда я пытаюсь распечатать сгенерированный Excel, он всегда устанавливает, что разрыв страницы находится в столбце N.

Generated Excel

Как я могу настроить разрыв страницы в столбце, используя Apache poi на Java?

1 Ответ

0 голосов
/ 18 марта 2019

Если цель состоит в том, чтобы при печати все столбцы (A:P) соответствовали ширине одной страницы, то это можно решить с помощью Масштабирование листа .

В следующем коде используется Sheet.setAutobreaks и Sheet.setFitToPage в сочетании с PrintSetup.setFitWidth и PrintSetup.setFitHeight для установки параметров печати в соответствии с масштабом.Ширина устанавливается так, чтобы все столбцы соответствовали ширине 1 страницы, а высота устанавливается автоматически, поэтому при наличии достаточного количества строк используется несколько страниц.

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