问题描述
我正在尝试打印使用Apache POI生成的Excel,并且手动@R_40_6404@无法正常工作,我已经设置了以下内容
sheet.setAutobreaks(false);
sheet.setRowBreak(50);
sheet.setColumnBreak(20);
但是您可以在下面看到自动@R_40_6404@(虚线)和手动@R_40_6404@的到来,用户必须手动拖动虚线才能正确打印出
解决方法
我遇到了同样的问题。我无法消除自动中断,因此我使用以下代码将其移动到最后一页的末尾:
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()
}