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 只为电子表格保留一个打印区域。所以 Apache POI 的 Excel API 提供了设置一个打印区域的能力。

听起来您可能正在尝试定义报告的不同页面。如果是这样,您需要在要完成此操作的每个工作表中设置行和/或列分隔符。使用Sheet的以下方法,假设sheet是您的Sheet实例:

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 回答