最近想学习使用报表,没有找到什么合适的,用了一些水晶报表,还是比较方便,不过要用一些复杂的,学习成本就比较高了。看了一下FineReport,这个使用好象很方便,但是好象又是主要用于WEB的,C#WINFORM不好用(在网上找了一下,说是嵌入HTML还是什么)放弃了。后来又找到ReportALL,这个是COM组件,C#可以用,可以在程序中控制数据,作报表还是相对比较方便。试了一下,就用这个。
下载安装后,新建一个C# Winfrom的程序,添加引用时需要引用COM,ReportView control free edition for Win32,然后拖到窗体上。
使用设计器设计报表,可以直接在报表上使用TextBox CheckBox等控件,FreeGrid用于一些表格的使用,在他的单元格中放任TextBox等控件,在程序中直接对这些
控件赋值即可。如果要作列表形式的则需要使用DataGrid,设置好相关的列,在程序中添加数据即可。程序如下:
首先打开报表,即我们用设计器设计的报表
this.axReportView1.Document.Open(Application.StartupPath + "\\test1.rad");
找到其中的CheckBox1选择框。然后对其进行赋值。将会显示出一个带钩的选择框。
var check = this.axReportView1.Document.Elements["CheckBox1"];
check.Propertys["Value"] = true;
以下是对DataGrid列表赋值。第一句话必须加,否则会出现不允许插入数据,然后获取其DataSet,最后添加行。在每一行的开始必须有Append方法,否则会出错。
this.axReportView1.DataAccess.MasterDataset().Append();
var dataset= this.axReportView1.DataAccess.DetailDataset("DataGrid2");
for(int i = 0 ; i< t.Count;i++)
{
dataset.Append();
dataset.Fields["Column1"] = t[i].name;
dataset.Fields["Column2"] = t[i].age;
dataset.Fields["Column3"] = t[i].sex;
}