我们使用iReport工具创建jrxml
假设我们的数据库表包含每天的信息(日期为一列)
说我们是否会在4月10日(4月)进行每日报告的生成。
我们确实看到了我的条形图(x轴 - >天,y轴 - >有价值数据),但x轴范围仅显示为1到10。
但我们希望看到x轴的范围从1到30,并且仅在前10天绘制条形图。
上面的原因是我们为这个x轴绘制了日期字段(我们的数据库只有数据直到第10个)。但根据我对这个ireport工具的了解,我不知道如何实现这个目标
欢迎使用iReport实现这一目标的任何帮助。
谢谢, Senthil VS
答案 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