gpt4 book ai didi

java - 我的 JasperReports 报告中出现重叠和垃圾单元格

转载 作者:行者123 更新时间:2023-12-01 13:43:54 25 4
gpt4 key购买 nike

我正在使用JasperReports并尝试向Excel生成报告。

当我尝试将报告导出为 Excel 时,我看到了一份糟糕的报告,单元格不在正确的位置,有很多拆分单元格。

我认为问题出在列表字段中,具有以下属性:

Position Type: Fix Relative to Top 
Stretch Type: Relative to band height

并且字段邻居具有以下属性:

Position Type: Fix Relative to Top 
Stretch Type: Relative to Tallest object

我得到以下外观:

enter image description here

这是正确的,但是当我获得 Excel 报告时,我得到以下信息:

enter image description here

我不知道如何解决它。

这是生成 Excel 格式的报告的代码。

public boolean exportarAExcel(){
ServletOutputStream servletOutputStream = null;
try {
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();

ServletContext servletContext = (ServletContext) externalContext.getContext();
String reportPath = servletContext.getRealPath("/rpt/" +this.nombreReporteJasper);

JasperPrint jasperPrint= JasperFillManager.fillReport(reportPath,this.parametros,
new JRBeanCollectionDataSource( this.dataSource ));

HttpServletResponse httpServletResponse =
(HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();


httpServletResponse.setContentType("application/xlsx");
httpServletResponse.addHeader("Content-disposition", "attachment; filename=\""+this.nombreSalida+".xlsx\"");
servletOutputStream = httpServletResponse.getOutputStream();
JRXlsxExporter excelExporter=new JRXlsxExporter();
excelExporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
excelExporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, servletOutputStream);
excelExporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.TRUE);

excelExporter.setParameter(JRXlsExporterParameter.IS_IGNORE_GRAPHICS, Boolean.TRUE);
excelExporter.setParameter(JRXlsExporterParameter.IS_COLLAPSE_ROW_SPAN, Boolean.TRUE);
excelExporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
excelExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
excelExporter.setParameter(JRXlsExporterParameter.IS_FONT_SIZE_FIX_ENABLED, Boolean.TRUE);

excelExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
excelExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE);

excelExporter.exportReport();
servletOutputStream.flush();
servletOutputStream.close();
FacesContext.getCurrentInstance().responseComplete();
return true;
} catch (JRException ex) {
Logger.getLogger(Exporter.class.getName()).log(Level.SEVERE, null, ex);
return false;
} catch (IOException ex) {
Logger.getLogger(Exporter.class.getName()).log(Level.SEVERE, null, ex);
}

return false;
}

这是the jrxml file

有人可以帮助我吗?

最佳答案

尝试将 IS_COLLAPSE_ROW_SPAN 设置为 false,当您的单元格合并多行时,可能会导致一些问题,并尝试将其添加到报告或代码中

<property name="net.sf.jasperreports.export.xls.ignore.cell.border" value="false"/>
<property name="net.sf.jasperreports.export.xls.image.border.fix.enabled" value="false"/>

另外尝试将这两个设置为 false

IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS
IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS

如果您想隐藏网格线,请使用它(即使使用当前的导出,它也会看起来更好)

<property name="net.sf.jasperreports.export.xls.show.gridlines" value="false"/>

关于java - 我的 JasperReports 报告中出现重叠和垃圾单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20481123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com