动态报表Word文件下载.docx

上传人:b****5 文档编号:16865829 上传时间:2022-11-26 格式:DOCX 页数:7 大小:245.46KB
下载 相关 举报
动态报表Word文件下载.docx_第1页
第1页 / 共7页
动态报表Word文件下载.docx_第2页
第2页 / 共7页
动态报表Word文件下载.docx_第3页
第3页 / 共7页
动态报表Word文件下载.docx_第4页
第4页 / 共7页
动态报表Word文件下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

动态报表Word文件下载.docx

《动态报表Word文件下载.docx》由会员分享,可在线阅读,更多相关《动态报表Word文件下载.docx(7页珍藏版)》请在冰豆网上搜索。

动态报表Word文件下载.docx

就是页眉上不再显示标头了,为什么这样做,下面会讲到。

3:

然后,来改造我们的核心方法

每个表的数据在写入前,先写一行列标题。

这个标题,也替代了我们之前的页眉标题。

并且每一行数据的第一列,也就是f0,写入表名。

 

class 

clsDyCrystalReportCore

{

/// 

<

summary>

将传入的datatable转换成报表模板所需要的datatable

数据全部转换为string

/summary>

param 

name="

dt"

>

来源表<

/param>

tblName"

各单表名称<

fldsName"

字段名称,以半角逗号分隔。

10 

returns>

报表模板所需要的datatable<

/returns>

11 

12 

public 

DataTable 

dtx(DataTable 

dt,String 

tblName,String 

fldsName)

13 

14 

15 

String 

oneRow="

"

;

16 

DataSet1.BigTatableDataTable 

dtx1 

new 

DataSet1.BigTatableDataTable();

17 

18 

object[] 

obj 

object[dt.Columns.Count];

19 

//特别注意:

所选择的表的列的数目需<

=Bigtable的字段数目

20 

//请自行填写保护代码

21 

22 

//先列名称写到每个表的第一行

23 

dtx1.Rows.Add(dtx1.NewRow());

24 

//第一行的第一列写表的名称

25 

dtx1.Rows[0][0] 

tblName;

26 

//切割列名称字符串,写入第一行后面的位置

27 

for 

(int 

0;

fldsName.Split(new 

char[] 

'

'

}).Length;

i++)

28 

29 

30 

dtx1.Rows[0][i+1] 

{'

})[i];

31 

}

32 

33 

//写入数据

34 

dt.Rows.Count 

35 

36 

37 

38 

//每一行的第一列,也就是f0,写入表名称。

39 

dtx1.Rows[i+1][0] 

40 

//写数据

41 

dt.Columns.Count 

j++)

42 

43 

oneRow 

"

dt.Rows[i][j].ToString();

44 

if 

(dt.Rows[i][j].ToString()=="

45 

dtx1.Rows[i+1][j+1] 

46 

else

47 

48 

49 

50 

51 

return 

dtx1;

52 

53 

4:

好了,来看我们的前端代码。

using 

System;

System.Collections.Generic;

System.ComponentModel;

System.Data;

System.Text;

System.Windows.Forms;

CrystalDecisions.Shared;

CrystalDecisions.CrystalReports.Engine;

CrystalDecisions.Windows.Forms;

System.Data.OleDb;

namespace 

DyCrystalReportDemo

partial 

Form1 

:

Form

Form1()

InitializeComponent();

private 

void 

button1_Click(object 

sender, 

EventArgs 

e)

connstr 

Provider=Microsoft.Jet.OLEDB.4.0;

Data 

Source="

System.Threading.Thread.GetDomain().BaseDirectory+ 

bbtcrall.mdb"

//打开数据库连接

OleDbConnection 

cn 

OleDbConnection(connstr);

dtxAll 

DataTable();

//容纳所有数据

OleDbDataAdapter 

da 

OleDbDataAdapter();

clsDyCrystalReportCore 

xCore 

clsDyCrystalReportCore();

//注意各表的字段数目不能大于我们设定的最大数目!

//请自行添加错误保护和对象释放代码

//第1个表

dt1 

OleDbDataAdapter("

SELECT 

From 

Test1_1"

 

cn);

da.Fill(dt1);

xCore.dtx(dt1,"

表1"

编号,姓名,发信日期,其他"

);

dtxAll.Merge(dtx1);

//第2个表,注意,这个表可以从不同的数据源获取!

//重新初始化

Test1_2"

xCore.dtx(dt1, 

表2"

编号,姓名,入职日期,日期1,日期2"

//第3个表,注意,这个表可以从不同的数据源获取!

54 

55 

56 

57 

Test_4"

58 

59 

表3"

年份,地区,指标,最大值,最小值"

60 

61 

62 

63 

ReportDocument 

myReport 

ReportDocument();

64 

string 

reportPath 

System.Threading.Thread.GetDomain().BaseDirectory 

crystalreport1.rpt"

65 

myReport.Load(reportPath);

66 

67 

//绑定数据集

68 

69 

myReport.SetDataSource(dtxAll);

70 

71 

crystalReportViewer1.ReportSource 

myReport;

72 

crystalReportViewer1.RefreshReport();

73 

74 

75 

76 

77 

注意,我们用了

将所有的数据合并在一个datatable里,从而达到我们开始设定的目标。

5:

执行一下,是如下效果,有点乱,是吧?

6:

这个时候f0就派上用场啦,在模板上增加一个f0的组,如下图所示。

7:

运行起来,帅多了吧?

格子有点难看,这个就不再本文中讨论了。

以后专门讲讲这个画格子的问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1