将DataSet导出为CSV格式

导出DataSet所有的列到CSV格式  
遍历DataSet的Tables  
遍历Table的Rows  
遍历Rows的Columns  

 1 ExpandedBlockStart.gif ContractedBlock.gif /**/ ///  <summary>  
 2InBlock.gif///  将DataSet导出成CSV格式  
 3InBlock.gif///  </summary>  
 4InBlock.gif///  <param  name="ds">DataSet</param>  
 5ExpandedBlockEnd.gif///  <returns>CSV字符串数据</returns>  

 6 None.gif public    static    string   ExportCSV(DataSet  ds)  
 7 ExpandedBlockStart.gifContractedBlock.gif dot.gif {  
 8InBlock.gif string  data  =  "";  
 9InBlock.gif //data  =  ds.DataSetName  +  "\n";  
10InBlock.gif   
11InBlock.gif foreach(DataTable  tb  in  ds.Tables)  
12ExpandedSubBlockStart.gifContractedSubBlock.gif dot.gif{  
13InBlock.gif   data  +=  tb.TableName  +  "\n";  
14InBlock.gif   
15InBlock.gif   //写出列名  
16InBlock.gif   foreach  (DataColumn  column  in  tb.Columns)  
17ExpandedSubBlockStart.gifContractedSubBlock.gif   dot.gif{  
18InBlock.gif     data  +=  column.ColumnName  +  ",";  
19ExpandedSubBlockEnd.gif   }
  
20InBlock.gif   data  +=  "\n";  
21InBlock.gif     
22InBlock.gif   //写出数据  
23InBlock.gif   foreach  (DataRow  row  in  tb.Rows)  
24ExpandedSubBlockStart.gifContractedSubBlock.gif   dot.gif{  
25InBlock.gif     foreach  (DataColumn  column  in  tb.Columns)  
26ExpandedSubBlockStart.gifContractedSubBlock.gif     dot.gif{  
27InBlock.gif       data  +=  row[column].ToString()  +  ",";  
28ExpandedSubBlockEnd.gif     }
  
29InBlock.gif     data  +=  "\n";  
30ExpandedSubBlockEnd.gif   }
  
31InBlock.gif   data  +=  "\n";  
32ExpandedSubBlockEnd.gif }
  
33InBlock.gif   
34InBlock.gif return  data;  
35ExpandedBlockEnd.gif}
  
36 None.gif


DataSet与DataGrid问题  
一般情况下我们用DataGrid显示DataSet时,只显示我们需要的列,并不显示DataSet所有的列,所以导出成CSV格式的时候可能只需要导出DataGrid中的列。  
   
本文解决方法:  
将DataSet中需要导出的列做上标记,在导出时只将有标记的列导出。  
   
代码

 

 1 ExpandedBlockStart.gif ContractedBlock.gif /**/ ///  <summary>  
 2InBlock.gif///  标记DataColumn为接受导出的  
 3InBlock.gif///  </summary>  
 4ExpandedBlockEnd.gif///  <param  name="column">DataColumn</param>  

 5 None.gif public    static    void   SetExport(DataColumn  column)  
 6 ExpandedBlockStart.gifContractedBlock.gif dot.gif {  
 7InBlock.gif if  (column  !=  null)  
 8ExpandedSubBlockStart.gifContractedSubBlock.gif dot.gif{  
 9InBlock.gif   if  (column.ExtendedProperties["IsExport"]  ==  null)  
10InBlock.gif     column.ExtendedProperties.Add("IsExport",  "true");  
11InBlock.gif   else  
12InBlock.gif     column.ExtendedProperties["IsExport"]  =  "true";  
13ExpandedSubBlockEnd.gif }
  
14ExpandedBlockEnd.gif}
  
15 None.gif   
16 ExpandedBlockStart.gifContractedBlock.gif /**/ ///  <summary>  
17InBlock.gif///  标记DataTable中的一些列为接受导出的  
18InBlock.gif///  </summary>  
19InBlock.gif///  <param  name="tb">DataTable</param>  
20ExpandedBlockEnd.gif///  <param  name="columns"></param>  

21 None.gif public    static    void   SetExport(DataTable  tb, params    string []  columns)  
22 ExpandedBlockStart.gifContractedBlock.gif dot.gif {  
23InBlock.gif foreach(string  column  in  columns)  
24ExpandedSubBlockStart.gifContractedSubBlock.gif dot.gif{  
25InBlock.gif   SetExport(tb.Columns[column]);  
26ExpandedSubBlockEnd.gif }
  
27ExpandedBlockEnd.gif}
  
28 None.gif   
29 ExpandedBlockStart.gifContractedBlock.gif /**/ ///  <summary>  
30InBlock.gif///  标记DataTable中的一些列为接受导出的  
31InBlock.gif///  </summary>  
32InBlock.gif///  <param  name="tb">DataTable</param>  
33ExpandedBlockEnd.gif///  <param  name="columns">DataGrid的列</param>  

34 None.gif public    static    void   SetExport(DataTable  tb,DataGridColumnCollection  columns)  
35 ExpandedBlockStart.gifContractedBlock.gif dot.gif {  
36InBlock.gif foreach(DataGridColumn  column  in  columns)  
37ExpandedSubBlockStart.gifContractedSubBlock.gif dot.gif{  
38InBlock.gif   if  (column.GetType().Name  ==  "BoundColumn"    ¦  ¦  column.GetType().Name  ==  "HyperLinkColumn"    ¦  ¦  column.GetType().Name  ==  "TemplateColumn")  
39InBlock.gif     SetExport(tb.Columns[column.HeaderText]);  
40ExpandedSubBlockEnd.gif }
  
41ExpandedBlockEnd.gif}
  
42 None.gif   
43 ExpandedBlockStart.gifContractedBlock.gif /**/ ///  <summary>  
44InBlock.gif///  判断DataColumn是否为接受导出的  
45InBlock.gif///  </summary>  
46InBlock.gif///  <param  name="column">DataColumn</param>  
47ExpandedBlockEnd.gif///  <returns>bool型的结果</returns>  

48 None.gif public    static    bool   IsExport(DataColumn  column)  
49 ExpandedBlockStart.gifContractedBlock.gif dot.gif {  
50InBlock.gif if  (column.ExtendedProperties["IsExport"]  !=  null  &&  column.ExtendedProperties["IsExport"].ToString().Trim().ToLower()  ==  "true")  
51InBlock.gif   return  true;  
52InBlock.gif else  
53InBlock.gif   return  false;  
54ExpandedBlockEnd.gif}
  
55 None.gif

使用示例:  
Export.SetExport(ds.供应商列表视图,dg.Columns);  
   
string  data  =  Export.ExportCSV(ds);  
   
string  temp  =  string.Format("attachment;filename={0}","ExportData.csv");  
Response.ClearHeaders();  
Response.AppendHeader("Content-disposition",  temp);  
Response.Write(data);  
Response.End();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值