如何基于自定义变量绘制图表
报表的重要部分是图形组件,即图形和图表。它们使您能够快速分析数据以评估增长或下降的趋势,或者只是快速读取信息。这就是人类感知的工作方式,即图形信息的接收速度更快。因此,在路标上,您可以立即看到大脑可以理解和解释的图像。
图表基于统计数据。通常,它们是从数据库中获取的。但是在某些情况下,有必要根据转换后的数据构建时间表。例如,使用执行的初始数据计算。一些报表生成器仅允许使用现成的数据源。这不方便,因为转换数据是执行报表所必需的。
让我们看一下List & Label报表生成器用户在其问题中提出的困难:
嗨,我有一个报表,我在其中声明了一堆具有各种计算的用户变量。我试图在饼图中显示这些变量,这可能吗?我似乎不知道该怎么做?
要在List & Label中实现此目的,您将必须创建一个中间表并将变量中的数据写入其中。事实是,饼图类型图表仅适用于表格数据源。图表段是通过汇总数据来计算的。
生成器FastReport.Net报表可以在图表中使用来自源的数据,并且可以在编辑器中手动添加数据。但是,FastReport报表具有内置的脚本,可以“联手”并提供自定义代码中图形的功能。这意味着我们可以“滑动”图中的任何数据。例如,您在报表中执行计算,然后将结果保存在报表变量中,然后希望基于它们建立图形。它很容易实现。
您还可以在报表页面上添加MSChart对象,并创建事件处理程序BeforePrint:
private void MSChart1_BeforePrint(object sender, EventArgs e) { MSChart1.DeleteSeries(0); //Delete default series MSChart1.AddSeries(SeriesChartType.Pie); //Add new series with pie-chart MSChart1.Series[0].SeriesSettings.Points.Clear(); //Wipe series data //Look through all parameters in the report foreach (Parameter param in Report.Parameters) { //Add to a series a point on Y axis. For the pie-chart Y axis are enough MSChart1.Series[0].SeriesSettings.Points.AddY(param.Value); } //Enable the legend MSChart1.Chart.Legends[0].Enabled = false; //Set series labels of the pie-chart MSChart1.Series[0].SeriesSettings.Label = "#VALY"; //Set height of the MSChart object MSChart1.Height = 500; //Set width of the MSChart object MSChart1.Width = 500; }
结果,我们将得到这样的饼图:
在此示例中,我们将报表的参数用作数据源,但您也可以在报表的脚本、数组、集合中使用变量。
不幸的是,在FastReport.Net的官方文档中,没有MSChart对象的属性和方法的描述。该组件非常复杂,需要进行很多设置,因此您必须花一些时间通过实验找到合适的属性。在此示例中,我展示了使用最小设置快速创建图形的最简单方法。