【发布时间】:2016-07-03 05:29:47
【问题描述】:
我正在使用 TIBCO Jaspersoft Studio-6.1.1.final。
我有一份报告,其中在 scriptlet 中添加了 java jar 文件以读取 doc 文件。
当我在 Jasper 报告中运行时,出现以下错误。
net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: $P{Read_DocFile_SCRIPTLET}.readline()
at com.jaspersoft.studio.editor.preview.view.control.ReportControler.fillReport(ReportControler.java:511)
at com.jaspersoft.studio.editor.preview.view.control.ReportControler.access$20(ReportControler.java:486)
at com.jaspersoft.studio.editor.preview.view.control.ReportControler$5.run(ReportControler.java:367)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: $P{Read_DocFile_SCRIPTLET}.readline()
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:291)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:618)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:586)
at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:1015)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:568)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:552)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:281)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:504)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2029)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:755)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:262)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:122)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:555)
at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFill.run(BaseFillHandle.java:119)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoSuchMethodError: org.apache.poi.POIDocument: method <init>()V not found
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:144)
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:133)
at com.Read_DocFile.readline(Read_DocFile.java:25)
at Blank_
Java 文件有两个外部 jar 文件,我将它们添加到 lib 文件夹并在 Eclipse 中生成 jar 文件。
下面添加的Java代码
package com;
import java.io.*;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import net.sf.jasperreports.engine.JRDefaultScriptlet;
import net.sf.jasperreports.engine.JRScriptletException;
public class ReadDocFile extends JRDefaultScriptlet {
public String readline() throws JRScriptletException {
File file = null;
WordExtractor extractor = null;
try {
file = new File("C:\\Tempp\\RTF_view.doc");
FileInputStream fis = new FileInputStream(file.getAbsolutePath());
HWPFDocument document = new HWPFDocument(fis);
extractor = new WordExtractor(document);
String[] fileData = extractor.getParagraphText();
for (int i = 0; i < fileData.length; i++) {
if (fileData[i] != null)
return fileData[i];
}
} catch (Exception exep) {
exep.printStackTrace();
}
return "Hello! I'm the report's scriptlet object.";
}
}
【问题讨论】:
标签: java jasper-reports