我正在尝试开发一个复杂的报告,我需要为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);
我也尝试添加中断行,但它不起作用..
有什么想法吗?
答案 0 :(得分:6)
Excel只为电子表格维护一个print area。因此,Apache POI的Excel API提供了set one print area的能力。
听起来您可能正在尝试定义报告的不同页面。如果是这样,您需要在每个工作表中设置要完成此操作的行和/或列分隔符。使用Sheet的以下方法,假设sheet
是Sheet
个实例:
sheet.setAutobreaks(false);
sheet.setRowBreak(rowIndex);
sheet.setColumnBreak(columnIndex);
您可以多次调用最后两种方法中的每一种来建立多个中断。
答案 1 :(得分:1)
您可以设置多个打印范围:
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"));
}
答案 2 :(得分:1)
这就是我为纸张设置打印区域的方法。
// set print area
workbook.setPrintArea(
workbook.getSheetIndex(sheet.getSheetName()), //sheet index
0, //start column
x, //end column
0, //start row
i //end row
);