XIAO牛
----在雨中长大
本文引用下面的 microsoft .net 框架类库命名空间:
system.web.ui.webcontrols;  
system.data; 

遍历dataset的tables 

本文解决将dataset导出到csv格式问题.将datagrid中的数据导出到csv格式问题   导出dataset所有的列到csv格式

遍历table的rows

遍历rows的columns   代码

/// <summary>

/// 将dataset导出成csv格式

/// </summary>

/// <param name="ds">dataset</param>

/// <returns>csv字符串数据</returns>


public static string exportcsv(dataset ds)
{
  
string data = "";
  
//data = ds.datasetname + "\n";    
  foreach(datatable tb in ds.tables)
  
{
    data 
+= tb.tablename + "\n";     //写出列名
     foreach (datacolumn column in tb.columns)
    
{
      data 
+= column.columnname + ",";
    }

    data 
+= "\n";

    
//写出数据
     foreach (datarow row in tb.rows)
    
{
      
foreach (datacolumn column in tb.columns)
       
{
         data 
+= row[column].tostring() + ",";
       }

     data 
+= "\n";
     }

   }
 
     return data;
}
 

dataset与datagrid问题

 

 

一般情况下我们用datagrid显示dataset时,只显示我们需要的列,并不显示dataset所有的列,所以导出成csv格式的时候可能只需要导出datagrid中的列.   本文解决方法:

 

将dataset中需要导出的列做上标记,在导出时只将有标记的列导出
代码:
/// 标记datacolumn为接受导出的 
/// <summary> 
/// <param name="column">datacolumn</param>
/// </summary>
public static void setexport(datacolumn column)
{
 
if (column != null)
 {
  
if (column.extendedproperties["isexport"== null)
   column.extendedproperties.add(
"isexport""true");
  
else
   column.extendedproperties[
"isexport"= "true";
 }
}   

/// <summary>
/// 标记datatable中的一些列为接受导出的
/// </summary>
/// <param name="tb">datatable</param>
/// <param name="columns"></param>
public static void setexport(datatable tb,params string[] columns)
{
 
foreach(string column in columns)
 {
  setexport(tb.columns[column]);
 }
}  

/// <summary>
/// 标记datatable中的一些列为接受导出的
/// </summary>
/// <param name="tb">datatable</param>
/// <param name="columns">datagrid的列</param>
public static void setexport(datatable tb,datagridcolumncollection columns)
{
 
foreach(datagridcolumn column in columns)
 {
  
if (column.gettype().name == "boundcolumn" || column.gettype().name == "hyperlinkcolumn" || column.gettype().name == "templatecolumn")
   setexport(tb.columns[column.headertext]);
 }
}   

/// <summary>
/// 判断datacolumn是否为接受导出的
/// </summary>
/// <param name="column">datacolumn</param>
/// <returns>bool型的结果</returns>
public static bool isexport(datacolumn column)
{
 
if (column.extendedproperties["isexport"!= null && column.extendedproperties["isexport"].tostring().trim().tolower() == "true")
  
return true;
 
else
  
return false;
}   

使用示例:
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(); 

posted on 2008-07-04 20:30  XIAO牛  阅读(568)  评论(0)    收藏  举报