c# aspx 导出Excel文件的方法

来源:互联网 发布:招聘淘宝美工的要求 编辑:程序博客网 时间:2024/05/17 03:46

主要功能是写在一个按钮里面的,导出Excel文件的方法。

用了自己写的一类来操作数据库

注意几点:

1、在格式化日期类型的时候不得不用笨办法foreach每个row来设置。。。。

2、public override void VerifyRenderingInServerForm,据说是BUG,必须添加,但是注释掉一样的能用这个,所以说是没用的,哈哈

  1. #region 导出Excel文件
  2.     // 导出Excel文件
  3.     protected void Button6_Click(object sender, EventArgs e)
  4.     {
  5.         GridView myGridView = new GridView();
  6.         SelectData mySelectData = new SelectData();
  7.         DataTable myDataTable = new DataTable();
  8.         string strSQLOrder;
  9.         string strWhere, strSortExpression, strSortDirection;
  10.         strSortExpression = ViewState["GridView1SortExpression"].ToString();
  11.         strSortDirection = ViewState["GridView1Order"].ToString();
  12.         strWhere = ViewState["GridView1Where"].ToString();
  13.         try
  14.         {
  15.             // 如果有查询条件
  16.             if (strWhere.Length > 0)
  17.                 strSQLOrder = @"SELECT CM_ID, Name, MobileTelephone, Phone, Birthday, Sex, Age, Profession, Expenditure, AddDateTime, MonthIncome, Taste FROM tabCustomerInfo " +
  18.                     @" where DeletedTag = False and " + strWhere + @" ORDER BY " + strSortExpression + " " + strSortDirection;
  19.             else
  20.                 strSQLOrder = @"SELECT CM_ID, Name, MobileTelephone, Phone, Birthday, Sex, Age, Profession, Expenditure, AddDateTime, MonthIncome, Taste FROM tabCustomerInfo" +
  21.                 @" where DeletedTag = False ORDER BY " + strSortExpression + " " + strSortDirection;
  22.             // 用GetTable方法获取数据
  23.             myDataTable = mySelectData.GetTable(strSQLOrder);
  24.             myDataTable.Columns["CM_ID"].ColumnName = "编号";
  25.             myDataTable.Columns["Name"].ColumnName = "姓名";
  26.             myDataTable.Columns["MobileTelephone"].ColumnName = "移动电话";
  27.             myDataTable.Columns["Phone"].ColumnName = "电话";
  28.             myDataTable.Columns["Birthday"].ColumnName = "出生日期";
  29.             myDataTable.Columns["Sex"].ColumnName = "性别";
  30.             myDataTable.Columns["Age"].ColumnName = "年龄";
  31.             myDataTable.Columns["Profession"].ColumnName = "职业";
  32.             myDataTable.Columns["Expenditure"].ColumnName = "消费金额";
  33.             myDataTable.Columns["AddDateTime"].ColumnName = "编辑时间";
  34.             myDataTable.Columns["MonthIncome"].ColumnName = "月收入";
  35.             myDataTable.Columns["Taste"].ColumnName = "爱好";
  36.             
  37.             myGridView.DataSource = myDataTable;
  38.             // 绑定数据
  39.             myGridView.DataBind();
  40.             foreach (GridViewRow myGVR in myGridView.Rows)
  41.             {
  42.                 myGVR.Cells[4].Text = Convert.ToDateTime((myGVR.Cells[4].Text)).ToString("yyyy-MM-dd");
  43.                 myGVR.Cells[9].Text = Convert.ToDateTime((myGVR.Cells[9].Text)).ToString("yyyy-MM-dd");
  44.             }
  45.         }
  46.         catch (System.Exception ex)
  47.         {
  48.             tips.Text = "查询数据库时发生错误!错误信息:" + ex.Message + "<br>可能是因为数据库连接出现问题!请联系系统管理员!<br>>";
  49.             return;
  50.         }
  51.         Response.Clear();
  52.         Response.Buffer = true;
  53.         Response.Charset = "GB2312";
  54.         Response.AddHeader("Content-Disposition""attachment;filename=" + HttpUtility.UrlEncode("客户资料.xls", System.Text.Encoding.UTF8));
  55.         // 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
  56.         Response.ContentEncoding = System.Text.Encoding.UTF8;
  57.         Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 
  58.         System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
  59.         System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
  60.         myGridView.RenderControl(oHtmlTextWriter);
  61.         Response.Output.Write(oStringWriter.ToString());
  62.         Response.Flush();
  63.         Response.End();
  64.     }
  65.     // 导出Excel文件必须要下面这个,据说是vs2005的BUG,日
  66.     public override void VerifyRenderingInServerForm(Control control)
  67.     {
  68.     }
  69.     #endregion

在这个页的ASPX文件里面的<%@ Page,必须加上EnableEventValidation="false"

我看网上说要在Web.Config加东西,但是我没加也能成功。。。

在最后用Response导出成Excel的那一段代码是抄网上的