Java 如何在Jasper中填写报告之前添加jrParagation.DEFAULT\u选项卡\u停止\u宽度

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

我正在根据用户输入动态生成jrxml文件,并尝试填充报告。 它在某些情况下工作正常。当用户添加更多列时,系统引发以下异常:

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代码来重现问题,什么是完整的堆栈跟踪?