如何使用iReport 4.5.1中的条形图绘制一个月的每日报告?

时间:2012-04-10 09:06:02

标签: jasper-reports ireport

我们使用iReport工具创建jrxml

假设我们的数据库表包含每天的信息(日期为一列)

说我们是否会在4月10日(4月)进行每日报告的生成。

我们确实看到了我的条形图(x轴 - >天,y轴 - >有价值数据),但x轴范围仅显示为1到10。

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

上面的原因是我们为这个x轴绘制了日期字段(我们的数据库只有数据直到第10个)。但根据我对这个ireport工具的了解,我不知道如何实现这个目标

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

谢谢, Senthil VS

1 个答案:

答案 0 :(得分: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) {
                // 
            }
        }
    }

}

此致

Giulio