在ADOMD.NET下返回的CellSet结果通常来说是无法直接用到容器控件当中的,因为其并没有实现相应的接口,所以通常需要转换成DataTable然后再做处理。
以下代码收集自网络
1
public DataTable ToDataTable(CellSet cs)
2
{
3
DataTable dt = new DataTable();
4
dt.TableName = "resulttable";
5
DataColumn dc = new DataColumn();
6
DataRow dr = null;
7
8
//第一列:必有为维度描述(行头)
9
dt.Columns.Add(new DataColumn("Description"));
10
11
//生成数据列对象
12
string name;
13
14
foreach (Position p in cs.Axes[0].Positions)
15
{
16
dc = new DataColumn();
17
name = "";
18
foreach (Member m in p.Members)
19
{
20
name = name + m.Caption + " ";
21
}
22
23
dc.ColumnName = name;
24
dt.Columns.Add(dc);
25
}
26
27
//添加行数据
28
int pos = 0;
29
30
foreach (Position py in cs.Axes[1].Positions)
31
{
32
dr = dt.NewRow();
33
34
//维度描述列数据(行头)
35
name = "";
36
37
foreach (Member m in py.Members)
38
{
39
name = name + m.Caption + "\r\n";
40
}
41
dr[0] = name;
42
43
//数据列
44
for (int x = 1; x <= cs.Axes[0].Positions.Count; x++)
45
{
46
dr[x] = cs[pos++].FormattedValue;
47
}
48
dt.Rows.Add(dr);
49
}
50
return dt;
51
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51
