java - 从 Jasperstudio 触发 Java

标签 java jasper-reports

我有以下Java代码,它将通过修改JRXML来修改矩形的宽度。但是报表运行时如何调用Java代码呢? Scriptlet 没有多大帮助。有没有办法调用studio中的Java/jar文件来动态改变文本对象的宽度?

public class widthAdjust {

public static void main(String[] args) {
    JasperDesign design;
    try {
        design = JRXmlLoader.load("C:\\GanttChart_Java.jrxml");
    System.out.println(design);
    JRField[] fields = design.getFields();
    JRVariable[] variables =  design.getVariables();

    int newWidth = 100;
    int newX = 100;
    JRDesignBand baseBand = (JRDesignBand) design.getSummary();
    JRElement[] elements = baseBand.getElements();
    System.out.println(elements);
    for (int counter = 0; counter < elements.length; counter++) {
        JRDesignElement element = (JRDesignElement) elements[counter];
            element.setWidth(newWidth);
            element.setX(newX);
    }
    JasperCompileManager.compileReportToFile(design,"C:\\GanttChart_Java.jasper");
    JasperCompileManager.writeReportToXmlFile("C:\\GanttChart_Java.jasper","C:\\GanttChart_Java.jrxml");
    JasperCompileManager.compileReport("C:\\GanttChart_Java.jrxml");
} catch (JRException e) {
    e.printStackTrace();
}}}

最佳答案

要更改元素的属性,最好的方法是运行 Java 代码并使用 Jasper API。

相反,从 .jasper-report 中调用 Java 代码(据我所知)是不可能的,因为 jasper 文件已经是具有特定宽度的编译报告。

关于java - 从 Jasperstudio 触发 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37044047/

相关文章:

连接到 Window Live Oauth 时出现 java.net.MalformedURLException

java - Maven堆空间

java - 搜索数组中的元素并返回它

javascript - Node.js 将二进制文件转换为 utf8

jasper-reports - 当表达式报告多个条件时打印

performance - 在 Web 应用程序中使用 .jasper 还是 .jrxml 更好?

java - 类内的列表不会在数据库中更新

java - 是否可以将 proguard 与 Grails 一起使用

java - JasperReports 中的 CSV 文件格式

html - 将报表导出为 HTML 时,如何为报表元素提供 id?