CellSet转换成DataTable

在ADOMD.NET下返回的CellSet结果通常来说是无法直接用到容器控件当中的,因为其并没有实现相应的接口,所以通常需要转换成DataTable然后再做处理。

以下代码收集自网络

 1 None.gif      public  DataTable ToDataTable(CellSet cs)
 2 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 3InBlock.gif        DataTable dt = new DataTable();
 4InBlock.gif        dt.TableName = "resulttable";
 5InBlock.gif        DataColumn dc = new DataColumn();
 6InBlock.gif        DataRow dr = null;
 7InBlock.gif
 8InBlock.gif        //第一列:必有为维度描述(行头)
 9InBlock.gif        dt.Columns.Add(new DataColumn("Description"));
10InBlock.gif
11InBlock.gif        //生成数据列对象
12InBlock.gif        string name;
13InBlock.gif
14InBlock.gif        foreach (Position p in cs.Axes[0].Positions)
15ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
16InBlock.gif            dc = new DataColumn();
17InBlock.gif            name = "";
18InBlock.gif            foreach (Member m in p.Members)
19ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
20InBlock.gif                name = name + m.Caption + " ";
21ExpandedSubBlockEnd.gif            }

22InBlock.gif
23InBlock.gif            dc.ColumnName = name;
24InBlock.gif            dt.Columns.Add(dc);
25ExpandedSubBlockEnd.gif        }

26InBlock.gif
27InBlock.gif        //添加行数据
28InBlock.gif        int pos = 0;
29InBlock.gif
30InBlock.gif        foreach (Position py in cs.Axes[1].Positions)
31ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
32InBlock.gif            dr = dt.NewRow();
33InBlock.gif
34InBlock.gif            //维度描述列数据(行头)
35InBlock.gif            name = "";
36InBlock.gif
37InBlock.gif            foreach (Member m in py.Members)
38ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
39InBlock.gif                name = name + m.Caption + "\r\n";
40ExpandedSubBlockEnd.gif            }

41InBlock.gif            dr[0= name;
42InBlock.gif
43InBlock.gif            //数据列
44InBlock.gif            for (int x = 1; x <= cs.Axes[0].Positions.Count; x++)
45ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
46InBlock.gif                dr[x] = cs[pos++].FormattedValue;
47ExpandedSubBlockEnd.gif            }

48InBlock.gif            dt.Rows.Add(dr);
49ExpandedSubBlockEnd.gif        }

50InBlock.gif        return dt;
51ExpandedBlockEnd.gif    }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C#中,你可以使用以下方法来拷贝Excel的工作表: 1. 首先,你可以使用`SelectSheet`函数选择要拷贝的工作表。这个函数需要一个参数,表示要选择的工作表的索引。例如,你可以使用`SelectSheet(1)`来选择第一个工作表。 2. 接下来,你可以使用`CellGet`函数来读取源工作表中的数据。这个函数需要两个参数,表示要读取的单元格的行和列索引。例如,你可以使用`CellGet(1, 1)`来读取源工作表中第一行第一列的数据。 3. 然后,你可以使用`CellSet`函数将读取到的数据写入目标工作表。这个函数需要三个参数,表示要写入的单元格的行、列索引和要写入的值。例如,你可以使用`CellSet(1, 1, value)`将读取到的数据写入目标工作表的第一行第一列。 通过重复执行第2步和第3步,你可以将源工作表中的所有数据拷贝到目标工作表中。只需依次增加行和列索引即可。 总结起来,拷贝Excel的工作表可以按照以下步骤进行: 1. 使用`SelectSheet`函数选择要拷贝的工作表。 2. 使用`CellGet`函数读取源工作表中的数据。 3. 使用`CellSet`函数将读取到的数据写入目标工作表。 请注意,这只是一个简单的示例,你可能需要根据具体情况做一些调整。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [该模块作为C#操作Excel的基类使用](https://download.csdn.net/download/weixin_42314225/10726578)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [【NPOI】C#跨工作薄复制Sheet模板导出Excel](https://blog.csdn.net/EAyayaya/article/details/125456855)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值