ASP.NET利用MD.DLL轉EXCEL具體實現_.Net教程

      編輯Tag賺U幣
      教程Tag:ExcelMD.DLL添加

      推薦:datagrid綁定list沒有數據 表頭不顯示的解決方法
      datagrid綁定list沒有數據 表頭不顯示的問題,那是因為 綁定了null,你給list new一下就好 表頭就會有啦

      前提
      引入MD.dll 文件;
      下載地址:
      1、建立無CS文件的DownExcel.aspx 文件
      復制代碼 代碼如下:www.wf0088.com

      <%@ Page Language="C#" %>
      <%@ import Namespace="System.Data" %>
      <%@ import Namespace="System.Data.SqlClient" %>
      <%@ import Namespace="MD" %>
      <script runat="server">
      string tableName = "";
      string procName ="";
      private string selectSql( string selstr )
      {
      string sp =selstr + " WHERE";
      int iwhere;
      iwhere=sp.IndexOf("WHERE");
      iwhere=iwhere+7;
      string sall = Server.UrlDecode(Request.QueryString.ToString());
      string[] sparams;
      sparams=sall.Split('&');
      int i=0;
      if (sparams.Length>1){
      while (i<sparams.Length){
      if (!(sparams[i].StartsWith("table"))){
      if ((sparams[i].StartsWith("str") )){
      sp=sp+" and " + sparams[i].Replace("=","='").Substring(3) + "'";
      }
      if ((sparams[i].StartsWith("num") ))
      {
      sp=sp+" and " + sparams[i].Substring(3) + "";
      }
      }
      i++;
      }
      }
      if (sp.IndexOf("and") >0 ){
      sp = (sp.Substring(0,sp.IndexOf("and")) + sp.Substring(sp.IndexOf("and")+3));
      }
      //sp=sp.Replace("=","='");
      if (sp.Length<iwhere) {
      sp=sp.Substring(0,(iwhere-8));
      }
      return sp;
      }
      private string selectProc( string selstr )
      {
      string sp =selstr + " ";
      string sall = Server.UrlDecode(Request.QueryString.ToString());
      //Server.UrlDecode(Request.QueryString.ToString());
      string[] sparams;
      sparams=sall.Split('&');
      int i=0;
      if (sparams.Length>1)
      {
      while (i<sparams.Length)
      {
      if (!(sparams[i].StartsWith("procedure")))
      {
      if ((sparams[i].StartsWith("str") ))
      {
      sp=sp + "'" + sparams[i].Substring( sparams[i].IndexOf("=")+1) + "',";
      }
      if ((sparams[i].StartsWith("num") ))
      {
      sp=sp + sparams[i].Substring( sparams[i].IndexOf("=")+1) + ",";
      }
      }
      i++;
      }
      }
      if (sp.EndsWith(",")){
      sp=sp.Substring(0, (sp.Length -1));
      }
      return sp;
      }
      private void Page_Load(object sender, System.EventArgs e)
      {
      // setup connection
      //Response.Write(selectSql("start test!"));
      string conn = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString; /// System.Configuration.ConfigurationSettings.AppSettings["connectionString"];
      if (Request.QueryString["table"]== null && Request.QueryString["procedure"]==null)
      {
      this.Response.Write("not supply correct parameters!");
      this.Response.End();
      return;
      }
      DataSet ds = new DataSet();
      ds.Locale = new System.Globalization.CultureInfo("zh-CN");
      //OleDbDataAdapter adapter=new OleDbDataAdapter();
      if (!(Request.QueryString["table"]== null ) )
      {
      /*string test1=selectSql(("SELECT * from " + Request.QueryString["table"]));
      this.Response.Write(test1);
      this.Response.End();
      return;*/
      tableName=Request.QueryString["table"];
      MD.SqlHelper.FillDataset(conn,System.Data.CommandType.Text ,selectSql(("SELECT * from " + tableName)),ds,new string[] {"down"});
      }
      if (!(Request.QueryString["procedure"]== null ) )
      {
      /*string test2=selectProc(("exec " + Request.QueryString["procedure"]));
      this.Response.Write(test2);
      this.Response.End();
      return;*/
      procName=Request.QueryString["procedure"];
      MD.SqlHelper.FillDataset(conn,System.Data.CommandType.Text ,selectProc(("exec " + procName)),ds,new string[] {"down"});
      }
      if (ds.Tables[0].Rows.Count==0){
      this.Response.Write("條件不符,查詢沒有任何資料!");
      return;
      }
      string downRes="";
      if (procName=="")
      {
      downRes=tableName;
      }
      else
      {
      downRes=procName;
      }
      //OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * from " + tableName, conn);
      //Response.Write(selectSql("SELECT * from " + tableName));
      //return;
      // open the Database and get the results
      this.DataGridDown.DataSource=ds;
      this.DataGridDown.DataBind();
      this.Response.Clear();
      this.Response.Buffer =true;
      this.Response.Charset="utf-8";
      this.Response.ContentType="application/ms-excel";
      this.Response.AppendHeader("content-Disposition","attachment;filename="+downRes+".xls");
      this.Response.ContentEncoding =System.Text.Encoding.GetEncoding("utf-8");
      //Response.ContentEncoding = System.Text.Encoding.utf-8;
      this.EnableViewState =false;
      System.IO.StringWriter OStringWriter = new System.IO.StringWriter();
      System.Web.UI.HtmlTextWriter OHtmlTextWriter = new System.Web.UI.HtmlTextWriter(OStringWriter);
      this.DataGridDown.RenderControl(OHtmlTextWriter);
      this.Response.Write(OStringWriter.ToString());
      this.Response.End();
      // if the action is update, well, we update our DB
      }
      </script>
      <html>
      <head>
      <meta http-equiv="content-type" content="application/x-excel; charset=UTF-8"/>
      <!-- <meta http-equiv="Content-Type" content="application/x-msexcel; charset=iso-8859-1" /> -->
      </head>
      <body>
      <form runat="server">
      <asp:DataGrid id="DataGridDown" style="Z-INDEX: 100; POSITION: absolute" runat="server" Height="373px" Width="674px" >
      </asp:DataGrid>
      <!-- Insert content here -->
      </form>
      </body>
      </html>

      2、調用方法
      http://localhost:13042/report/downexcel.aspx?procedure=P_PP_SPC_FindCount&strWorkCenterNum=0&strStatus=全部&strPartno=
      注解
      P_PP_SPC_FindCoun:存儲過程
      WorkcenterNum:參數
      在每個參數前都要加上‘Str'表示該參數是字符串型
      所以參數要寫成StrWorkcenterNum

      分享:基于.Net中的數字與日期格式化規則助記詞的使用詳解
      本篇文章是對.Net中的數字與日期格式化規則助記詞的使用進行了詳細的分析介紹,需要的朋友參考下

      來源:模板無憂//所屬分類:.Net教程/更新時間:2013-05-22
      相關.Net教程