Apache POI setAutobreaksfalse无法按预期运行

问题描述

我正在尝试打印使用Apache POI生成的Excel,并且手动@R_40_6404@无法正常工作,我已经设置了以下内容

    sheet.setAutobreaks(false);
    sheet.setRowBreak(50);
    sheet.setColumnBreak(20); 

但是您可以在下面看到自动@R_40_6404@(虚线)和手动@R_40_6404@的到来,用户必须手动拖动虚线才能正确打印出

enter image description here

解决方法

我遇到了同样的问题。我无法消除自动中断,因此我使用以下代码将其移动到最后一页的末尾:

sheet.setFitToPage(true);
XSSFPrintSetup printSetup = sheet.getPrintSetup()
printSetup.setFitWidth( (short) 1)
printSetup.setFitHeight( (short) 0)
,

以下代码(常规)生成两个工作簿。

    testPageBreaks(false) //generates sheet with auto page breaks (see image 1)

    testPageBreaks(true) //generates sheet with auto page breaks but at the very last cell of the sheet (see image 2)

    def testPageBreaks(boolean fitToPage) {
        Workbook wb = new XSSFWorkbook()
        Sheet sheet = wb.createSheet()

        def r = sheet.createRow(90)
        def c = r.createCell(30)
        c.setCellValue("last cell")

        sheet.setRowBreak(30)
        sheet.setRowBreak(60)
        sheet.setRowBreak(90)

        if ( fitToPage ) { 
            sheet.setFitToPage(true)
            XSSFPrintSetup printSetup = sheet.getPrintSetup()
            printSetup.setFitWidth( (short) 1)
            printSetup.setFitHeight( (short) 0)
        }

        ByteArrayOutputStream ostream = new ByteArrayOutputStream()
        wb.write(ostream)

        response.contentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
        response.setHeader('Content-Disposition',"attachment; filename=test.xlsx")
        response.setIntHeader('Content-Length',ostream.size())
        ostream.writeTo(response.outputStream)
        response.outputStream.flush()
    }

图片1-testPageBreaks(false) Image 1 - testPageBreaks(false)

图片2-testPageBreaks(true) Image 2 - testPageBreaks(true)