4

複雑なレポートを作成しようとしていますが、Excelファイルの印刷領域を設定する必要があります。xlsファイルを3つの部分に分割する必要がありますが、setPrintArea(..)を実行すると、新しい領域が古い領域をサブスクライブし、その結果、印刷​​プレビューに最後のページしか表示されません。複数の印刷領域を設定するにはどうすればよいですか?これはコードです:

protected void createCustomerSheet(String label) {
    createSheet(label);
    getCurrentSheet().getPrintSetup().setPaperSize(PrintSetup.A4_PAPERSIZE);
    getCurrentSheet().getPrintSetup().setFitHeight((short)1);
    getCurrentSheet().getPrintSetup().setFitWidth((short)1);
    getCurrentSheet().setAutobreaks(true);
    getCurrentSheet().setFitToPage(true);
}

それから私は3回電話します

 wb.setPrintArea(activeSheetIndex, startColumn, endColumn, startRow, endRow);

ブレーク行も追加しようとしましたが、機能しません。

何か案は?

4

3 に答える 3

8

Excelは、スプレッドシートの印刷領域を 1 つだけ保持します。そのため、Apache POI の Excel API は、1 つの印刷領域を設定する機能を提供します。

レポートのさまざまなページを定義しようとしているようです。その場合は、これを実行する各シートで行や列の区切りを設定する必要があります。がインスタンスであると仮定して、 Sheetの次のメソッドを使用します。sheetSheet

sheet.setAutobreaks(false);
sheet.setRowBreak(rowIndex);
sheet.setColumnBreak(columnIndex);

これらの最後の 2 つのメソッドをそれぞれ複数回呼び出して、複数のブレークを確立することができます。

于 2013-02-15T17:42:28.420 に答える
2

次のように複数の印刷範囲を設定できます。

try (final Workbook wb = new HSSFWorkbook(new FileInputStream("in.xls"))) {
    wb.setPrintArea(0,  "$E$6:$F$12,$H$16:$I$25,$J$18:$L$26");
    wb.write(new FileOutputStream("out.xls"));
}
于 2016-02-18T09:59:12.970 に答える
1

これは、シートの印刷領域を設定する方法です。

// set print area
workbook.setPrintArea(
    workbook.getSheetIndex(sheet.getSheetName()), //sheet index
    0, //start column
    x, //end column
    0, //start row
    i  //end row
);
于 2016-10-24T14:47:28.757 に答える