导出数据到Excel中

  1. 1 .建立测试文件
  2. //建立text.aspx文件
  3. //修改text.aspx.cs文件,如下:
  4. //只列出主要的程序:
  5. //声明调用的类别
  6. DataTableToExcel dt = new DataTableToExcel();
  7. //在页面点击导出数据时执行以下函数
  8.     protected void Button1_Click(object sender, EventArgs e)
  9.     {
  10.             str_sql =”select UserName,Name,sex,age from user”;
  11.             DataTableToExcel.DataToExcel(dt.GetCompanyAll(str_sql), Page.Response, Session["Field_Desc"].ToString().Trim());
  12.           /*此处的session[“Field_Desc”]的值必须和选择出来的字段一一对应,此处的值为Session[“Field_Desc”]=”用户名,姓名,性别,年龄”,此处的赋值最好在Global.asax中声明。当然也可以直接赋值。*/
  13. }
  14. 2.建立一个类文件 DataTableToExcel.cs
  15. using System;
  16. using System.Data;
  17. using System.Configuration;
  18. using System.Web;
  19. using System.Web.Security;
  20. using System.Web.UI;
  21. using System.Web.UI.HtmlControls;
  22. using System.Web.UI.WebControls;
  23. using System.Web.UI.WebControls.WebParts;
  24. using System.Data.SqlClient;
  25. /// <summary>
  26. ///DataTableToExcel 的摘要说明
  27. /// </summary>
  28. public class DataTableToExcel
  29. {
  30.     private SqlConnection sc = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlconn"].ConnectionString);
  31.     private SqlCommand cmd = null;
  32. public DataTableToExcel()
  33.     {
  34.         //
  35.         //TODO: 在此处添加构造函数逻辑
  36.         //
  37.     }
  38. ///导出到Excel的主程序
  39. public static void DataToExcel(DataTable dtCompany, HttpResponse pageResponse, string sField_Desc)
  40.     {//使用写数据流的方式更具用灵活性,更容易控制。
  41.         HttpResponse resp;
  42.         resp = pageResponse;
  43.         resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
  44.         resp.AppendHeader("Content-Disposition""attachment;filename=FileName.xls");
  45.         DataRow[] myRow = dtCompany.Select("");
  46.         string colHeaders = "";
  47.         string ls_item = "";
  48.         string[] array = sField_Desc.Split(',');
  49.         #region 写表头,即标题行
  50.         for (int i = 0; i < array.Length; i++)
  51.         {
  52.             if (i == (array.Length - 1))//最后一列,加/n,换行
  53.             {
  54.                 colHeaders += array[i].ToString().Trim() + "/n";
  55.             }
  56.             else
  57.             {
  58.                 colHeaders += array[i].ToString().Trim() + "/t";
  59.             }
  60.         }
  61.         resp.Write(colHeaders);
  62.         #endregion
  63.         //把数据写入Excel中
  64.         int jsq = 1;
  65.         foreach (DataRow row in myRow)
  66.         {
  67.             ls_item += jsq++ + "/t";
  68.             //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据     
  69.             for (int i = 1; i < array.Length; i++)
  70.             {
  71.                 if (i == (array.Length - 1))//最后一列,判断最后一行的值,根据不同的值写入不//同的数据,并且加 /n
  72.                 {
  73.                     int row1 = Convert.ToInt32(row[i]);
  74.                     if (row1 == 1) ls_item += "很好/n";
  75.                     if (row1 == 2) ls_item += "好/n";
  76.                     if (row1 == 3) ls_item += "一般/n";
  77.                     if (row1 == 4) ls_item += "差/n";
  78.                     if (row1 == 5) ls_item += "很差/n";
  79.                     else  ls_item += "/n";
  80.                 }
  81.                 else
  82.                 {
  83.                     ls_item += row[i].ToString().Trim() + "/t";
  84.                 }
  85.             }
  86.             resp.Write(ls_item);
  87.             ls_item = "";
  88.         }
  89.         resp.Flush();
  90.         resp.Close();
  91.     }
  92.     #region  获得要导出的数据集
  93.     public DataTable GetCompanyAll(string sql)
  94.     {
  95.         if (sc.State == ConnectionState.Closed)
  96.         {
  97.             sc.Open();
  98.         }
  99.         cmd = new SqlCommand(sql, sc);
  100.         cmd.CommandType = CommandType.Text;
  101.         SqlDataAdapter da = new SqlDataAdapter(cmd);
  102.         DataSet ds = new DataSet();
  103.         int rn = da.Fill(ds);
  104.         if (rn > 0)
  105.         {
  106.             return ds.Tables[0];
  107.         }
  108.         return null;
  109.     }
  110. #endregion
  111. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值