本文引用下面的 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();
/// <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();


浙公网安备 33010602011771号