Java 如何在Jasper中填写报告之前添加jrParagation.DEFAULT\u选项卡\u停止\u宽度
我正在根据用户输入动态生成jrxml文件,并尝试填充报告。 它在某些情况下工作正常。当用户添加更多列时,系统引发以下异常:Java 如何在Jasper中填写报告之前添加jrParagation.DEFAULT\u选项卡\u停止\u宽度,java,jasper-reports,Java,Jasper Reports,我正在根据用户输入动态生成jrxml文件,并尝试填充报告。 它在某些情况下工作正常。当用户添加更多列时,系统引发以下异常: net.sf.jasperreports.engine.util.ParagraphUtil.getFirstTabStop(ParagraphUtil.java:208) net.sf.jasperreports.engine.fill.TextMeasurer.renderNextLine(TextMeasurer.java:1009) net.sf.jasperr
net.sf.jasperreports.engine.util.ParagraphUtil.getFirstTabStop(ParagraphUtil.java:208)
net.sf.jasperreports.engine.fill.TextMeasurer.renderNextLine(TextMeasurer.java:1009)
net.sf.jasperreports.engine.fill.TextMeasurer.renderParagraph(TextMeasurer.java:717)
net.sf.jasperreports.engine.fill.TextMeasurer.measure(TextMeasurer.java:416)
net.sf.jasperreports.engine.fill.JRFillTextElement.chopTextElement(JRFillTextElement.java:504)
net.sf.jasperreports.engine.fill.JRFillTextField.prepare(JRFillTextField.java:593)
net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:328)
net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:377)
net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:351)
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2039)
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:771)
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportContent(JRVerticalFiller.java:301)
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:148)
net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909)
net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:841)
net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:88)
net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:634)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:956)
我正在使用JasperReports 4.7库。下面是填充和导出jrxml的java代码
InputStream inputStream = null;
JasperPrint jasperPrint = null;
JExcelApiExporter apiExporter = null;
HashMap map = new HashMap();
JRSwapFileVirtualizer virtualizer = null;
try {
inputStream = new FileInputStream(jasperFilePath);
if (reportType.equals("REPORTGENERATOR")) {
map.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
}
map.put("REALPATH", realPath);
String directory = realPath+"tempdocs";
JRSwapFile swapFile = new JRSwapFile(directory, 1024, 100);
virtualizer = new JRSwapFileVirtualizer(50, swapFile, true);
map.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);
jasperPrint = JasperFillManager.fillReport(inputStream, map, resultSetDataSource);
apiExporter = new JExcelApiExporter();
apiExporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
apiExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
apiExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE);
apiExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
apiExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,
realPath + "tempdocs/jasper/" + reportName + ".xls");
apiExporter.exportReport();
} catch (Exception e) {
e.printStackTrace();
}finally{
try{
if (virtualizer != null) virtualizer.cleanup();
inputStream.close();
}catch(Exception e){
e.printStackTrace();
}
}
向我建议处理此问题的好方法。我已在查询的每个varchar列中使用
replace(col,chr(9),“”)
将制表符替换为空格。现在它工作得很好。
但我知道这不是一个正确的答案。这只是一个变通解决方案。您应该发布相关的Java代码来重现问题,什么是完整的堆栈跟踪?