c# aspx 導出Excel文件的方法

主要功能是寫在一個按鈕裏面的,導出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的那一段代碼是抄網上的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章