参数文件ASP.NET 利用MD.DLL 转EXCEL

改章节个人在广东喝咖啡的时候突然想到的...之前就有想写几篇关于参数文件的博客,所以回家到之后就奋笔疾书的写出来发布了

    前提:

    引入MD.dll 文件;

    下载地址:http://download.csdn.net/detail/trassion/5415131

    

    1、建立无CS文件的DownExcel.aspx 文件

    <%@ 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

    

    

文章结束给大家分享下程序员的一些笑话语录: 一个合格的程序员是不会写出 诸如 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去。

原文地址:https://www.cnblogs.com/xinyuyuanm/p/3089380.html