博客园  :: 首页  :: 新随笔  :: 管理

DataTable导出到Excel、GSV

Posted on 2009-01-19 15:00  tianfu  阅读(91)  评论(0)    收藏  举报

1:当用户导出时,直接将数据导出客户端.具体的逻辑代码如下面小例子:

如果需要导出为GSV文件,只需要上例分隔符“\t”用“,”替换就可以了。

//根据需要得到数据表
        DataTable thisTable = getTable(condition.ToString());
       
if (thisTable != null)
        {
            StringWriter sw
= new StringWriter();
            sw.WriteLine(
"编号\t帐号\t姓名\t电话\t地址\t金额\t开通时间");
           
foreach (DataRow dr in thisTable.Rows)
            {
                sw.WriteLine(dr[
"F_ID"] + "\t" + dr["F_Psnid"] + "\t" + dr["F_Name"] + "\t" + dr["F_Tel"]

        + "\t" + dr["F_Address"] + "\t" + dr["F_TradeMoney"] + "\t" + dr["F_TradeTime"]);
}
sw.Close();
Response.AddHeader(
"Content-Disposition", "attachment; filename=YinHeUserInfo.xls");
Response.ContentType
= "application/ms-excel";
Response.ContentEncoding
= System.Text.Encoding.GetEncoding("GB2312");
Response.Write(sw);
Response.End();
}

 

 

2:文件流的操作

        string filePath = "d:\\data.xls";//这个你可以自己修改为虚拟路径
        FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
        StreamWriter sw
= new StreamWriter(fs, System.Text.Encoding.GetEncoding("gb2312"));
        sw.WriteLine(
"编号\t帐号\t姓名\t电话\t地址\t金额\t开通时间");
       
foreach (DataRow dr in thisTable.Rows)
        {
            sw.WriteLine(dr[
"F_ID"] + "\t" + dr["F_Psnid"] + "\t" + dr["F_Name"] + "\t" + dr["F_Tel"]

      + "\t" + dr["F_Address"] + "\t" + dr["F_TradeMoney"] + "\t" + dr["F_TradeTime"]);
}
sw.Close();
fs.Close();
#region==如果要下载到客户端,则添加下列代码==
//Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(filePath));
//Response.ContentType = "application/ms-excel";// 指定返回的是一个不能被客户端读取的流,必须被下载
//Response.WriteFile(filePath); // 把文件流发送到客户端
//Response.End();
#endregion