0

我们使用 iReport 工具来创建 jrxml

假设,我们有 db 表,其中包含每天的信息(日期为一列)

假设我们在 4 月 10 日(4 月)生成 4 月的每日报告。

我们确实看到生成了我的条形图(xaxis->day,y-axis->valuedata),但 x 轴范围仅显示从 1 到 10。

但我们希望看到从 1 到 30 的 x 轴范围,并且仅在前 10 天绘制条形图。

上述原因是我们已经为这个 x 轴映射了日期字段(并且我们的数据库只有 10 日之前的数据)。但我不确定如何实现这一点,根据我对这个 ireport 工具的了解

欢迎任何帮助使用 iReport 实现这一目标。

谢谢, Senthil VS

4

1 回答 1

1

您需要为此创建一个图表定制器,并将图表定制器类分配给您的 TimeSeries 图表。

这是一个图表定制器的代码来实现你所需要的:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import net.sf.jasperreports.engine.JRChart;
import net.sf.jasperreports.engine.JRChartCustomizer;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.XYPlot;

/**
 *
 * This chart customizer assumes you are using a TimeSeries Chart.
 * The customization force the use of a different range (i.e. from the start to the end of
 * the month).
 * 
 * 
 * @author gtoffoli
 */
public class DateRangeCustomizer implements JRChartCustomizer {

    @Override
    public void customize(org.jfree.chart.JFreeChart jfc, JRChart jrc) {



        XYPlot plot = jfc.getXYPlot();


        ValueAxis axis = plot.getDomainAxis();


        if (axis instanceof DateAxis)
        {
            DateAxis daxis = (DateAxis)axis;


            try {

                // Here you can find your way to set the range... i.e. you may get the current available range and try
                // to guess the current month...

                daxis.setRange( new SimpleDateFormat("yyyy/MM/dd").parse("2012/03/01"),  new SimpleDateFormat("yyyy/MM/dd").parse("2012/03/31"));
                daxis.setAutoRange(false);
            } catch (ParseException ex) {
                // 
            }
        }
    }

}

问候

朱利奥

于 2012-04-24T08:47:55.153 回答