有人说我写东西比较啰嗦,呵呵,这次简单点。
先建个水晶报表工程
![C#创建无数据源水晶报表极简教程(PUSH模式)_第1张图片](http://img.e-com-net.com/image/info5/7446a75cda604c11b71285746057c54b.jpg)
创建完后,先把报表界面关了,新建个dataset
![C#创建无数据源水晶报表极简教程(PUSH模式)_第2张图片](http://img.e-com-net.com/image/info5/e2c65d6ab0f84c188f3cac6db67e3ac7.jpg)
在里面创建个表,mytable
![C#创建无数据源水晶报表极简教程(PUSH模式)_第3张图片](http://img.e-com-net.com/image/info5/64e5da8a029542209aba8b911162ce3d.jpg)
根据需要定义几个字段
![C#创建无数据源水晶报表极简教程(PUSH模式)_第4张图片](http://img.e-com-net.com/image/info5/66d4c60c5699497a9f74f7137fd97b2a.jpg)
然后设计报表,选数据源
![C#创建无数据源水晶报表极简教程(PUSH模式)_第5张图片](http://img.e-com-net.com/image/info5/835bdc733f474c2e9077dee6c35a43f5.jpg)
报表如下
![C#创建无数据源水晶报表极简教程(PUSH模式)_第6张图片](http://img.e-com-net.com/image/info5/4c17eb63a7384e559a26fa02004cad8d.jpg)
在窗体里写上代码
1
private
void
Form1_Load(
object
sender, EventArgs e)
2
{
3
//
填充dataset,这里就可以承接任何接口,数据库,数组啥得都行
4
DataSet1 ds1
=
new
DataSet1();
5
ds1.mytable.AddmytableRow(
"
a1
"
,
"
a2
"
,
"
a3
"
,
"
a4
"
,
"
a5
"
,
1
,
1
,
1
,
1
,
1
);
6
ds1.mytable.AddmytableRow(
"
b1
"
,
"
b2
"
,
"
b3
"
,
"
b4
"
,
"
b5
"
,
1
,
1
,
1
,
1
,
1
);
7
ds1.mytable.AddmytableRow(
"
c1
"
,
"
c2
"
,
"
c3
"
,
"
c4
"
,
"
c5
"
,
1
,
1
,
1
,
1
,
1
);
8
ds1.mytable.AddmytableRow(
"
d1
"
,
"
d2
"
,
"
d3
"
,
"
d4
"
,
"
d5
"
,
1
,
1
,
1
,
1
,
1
);
9
ds1.mytable.AddmytableRow(
"
e1
"
,
"
e2
"
,
"
e3
"
,
"
e4
"
,
"
e5
"
,
1
,
1
,
1
,
1
,
1
);
10
11
CrystalReport1 cr1
=
new
CrystalReport1();
12
cr1.SetDataSource (ds1);
13
crystalReportViewer1.ReportSource
=
cr1;
14
}
这就完成了~~
PS1
可以配合 http://www.cnblogs.com/babyt/archive/2008/01/03/1024941.html 实现更灵活的效果
PS220080917: 补充一下一个基础的数据库读取,替换文中的自填充ds段:
SqlConnection conn = new SqlConnection("server=xxx.;Uid=sa;Pwd=;database=test");
conn.Open();
SqlDataAdapter da = new SqlDataAdapter("select a1,b1,c1,d1,e1 from test", conn);
DataSet ds = new DataSet();
da.Fill(ds1, "mytable"); //特别注意此处的表名,需与设计时的表名一致
conn.Close();