Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用aspx将数据从存储过程导出到txt文件_C#_Asp.net_Sql Server_Stored Procedures_Data Export - Fatal编程技术网

C# 使用aspx将数据从存储过程导出到txt文件

C# 使用aspx将数据从存储过程导出到txt文件,c#,asp.net,sql-server,stored-procedures,data-export,C#,Asp.net,Sql Server,Stored Procedures,Data Export,我想通过从aspx调用存储过程导出文件,并将数据保存到.txt文件中。每列必须具有需要设置的特定列长度。下面是我的代码,但当我运行程序时,输出只显示列名。。。没有数据显示。看起来程序没有读取row语句。请帮帮我 protected void Page_Load(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; string str = "Server=KABS;Database=HOT;uid=

我想通过从aspx调用存储过程导出文件,并将数据保存到
.txt
文件中。每列必须具有需要设置的特定列长度。下面是我的代码,但当我运行程序时,输出只显示列名。。。没有数据显示。看起来程序没有读取row语句。请帮帮我

protected void Page_Load(object sender, EventArgs e)
{
    Cursor.Current = Cursors.WaitCursor;

    string str = "Server=KABS;Database=HOT;uid=sa;pwd=DDD;Connection Timeout=6000";

    if (Request.QueryString["ProcessName"] != null)
    {
            using (SqlConnection con = new SqlConnection(str))
            {
                if (Request.QueryString["ProcessName"].ToString().Equals("Ebill"))
                {
                    using (SqlCommand cmd = new SqlCommand("AR_Ebill_claim", con))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;

                        string compcode = null;
                        DateTime dateFrom = DateTime.Now;
                        DateTime dateTo = DateTime.Now;
                        string episType = null;
                        string debtorCode = null;

                        if (Request.QueryString["compcode"] != null)
                        {
                            if (string.IsNullOrEmpty(Convert.ToString(Request.QueryString["compcode"])))
                            {
                                compcode = null;
                            }
                            else
                            {
                                compcode = Convert.ToString(Request.QueryString["compcode"]);
                            }
                        }
                        if (Request.QueryString["dateFrom"] != null)
                        {
                            DateTime dtFrom = DateTime.Parse(Request.QueryString["dateFrom"]);
                            dtFrom.ToString("dd-MMM-yyyy");

                            if (dtFrom == null)
                            {
                                dateFrom = DateTime.Now;
                            }
                            else
                            {
                                dateFrom = dtFrom;
                            }
                        }
                        if (Request.QueryString["dateTo"] != null)
                        {
                            DateTime dtTo = DateTime.Parse(Request.QueryString["dateTo"]);
                            dtTo.ToString("dd-MMM-yyyy");

                            if (dtTo == null)
                            {
                                dateTo = DateTime.Now;
                            }
                            else
                            {
                                dateTo = dtTo;
                            }
                        }
                        if (Request.QueryString["episType"] != null)
                        {
                            if (string.IsNullOrEmpty(Convert.ToString(Request.QueryString["episType"])))
                            {
                                episType = null;
                            }
                            else
                            {
                                episType = Convert.ToString(Request.QueryString["episType"]);
                            }
                        }
                        if (Request.QueryString["debtorCode"] != null)
                        {
                            if (string.IsNullOrEmpty(Convert.ToString(Request.QueryString["debtorCode"])))
                            {
                                debtorCode = null;
                            }
                            else
                            {
                                debtorCode = Convert.ToString(Request.QueryString["debtorCode"]);
                            }
                        }
                        cmd.Parameters.Add("@compcode", SqlDbType.VarChar, 100);
                        cmd.Parameters["@compcode"].Value = compcode;

                        cmd.Parameters.Add("@dateFrom", SqlDbType.SmallDateTime);
                        cmd.Parameters["@dateFrom"].Value = dateFrom;

                        cmd.Parameters.Add("@dateTo", SqlDbType.SmallDateTime);
                        cmd.Parameters["@dateTo"].Value = dateTo;

                        cmd.Parameters.Add("@episType", SqlDbType.VarChar, 40);
                        cmd.Parameters["@episType"].Value = episType;

                        cmd.Parameters.Add("@debtorCode", SqlDbType.VarChar, 100);
                        cmd.Parameters["@debtorCode"].Value = debtorCode;

                        con.Open();
                        //cmd.ExecuteNonQuery();

                        //gdBill.EmptyDataText = "No Records Found";
                        //gdBill.DataSource = cmd.ExecuteReader();
                        //gdBill.DataBind(); 

                        SqlDataAdapter da = new SqlDataAdapter();
                        DataTable dt = new DataTable();


                        da.SelectCommand = cmd;
                        da.Fill(dt);

                        string txt = string.Empty;

                        if (dt.Columns.Count > 0)
                        {
                            foreach (DataColumn column in dt.Columns)
                            {
                                //Add the Header row for Text file.
                                txt += column.ColumnName + "\t\t";
                            }

                        }

                        //Add new line.
                        txt += "\r\n";

                        if (dt.Rows.Count > 0)
                        {
                            foreach (DataRow row in dt.Rows)
                            {
                                foreach (DataColumn column in dt.Columns)
                                {
                                    //Add the Data rows.
                                    txt += row[column.ColumnName].ToString() + "\t\t";
                                }

                                //Add new line.
                                txt += "\r\n";
                            }
                        }


                        Response.Clear();
                        Response.Buffer = true;
                        Response.AddHeader("content-disposition", "attachment;filename=E-Billing.txt");
                        Response.Charset = "";
                        Response.ContentType = "application/text";
                        Response.Output.Write(txt);
                        Response.Flush();
                        Response.End();

                        Cursor.Current = Cursors.AppStarting;

                    }

                }
                //cmd.Dispose();
                con.Close();
            }
    }
}

我测试了你的代码,它正常工作。问题是存储过程
AR\u Ebill\u claim
返回零行。但是没有错误,所以列名会被导出


我认为问题在于参数。首先检查这些,然后测试存储过程是否在SQL server studio或类似程序中提供了所需的结果。

我测试了您的代码,并且它正常工作。问题是存储过程
AR\u Ebill\u claim
返回零行。但是没有错误,所以列名会被导出


我认为问题在于参数。首先检查这些,然后测试存储过程是否在SQL server studio或类似程序中提供了所需的结果。

我已经获得了以下代码所示的解决方案:)

if(Request.QueryString[“ProcessName”].ToString().Equals(“Ebill”))
{
使用(SqlCommand cmd=newsqlcommand(“AR_Ebill_claim”,con))
{
cmd.CommandType=CommandType.storedProcess;
字符串compcode=null;
DateTime dateFrom=DateTime.Now;
DateTime dateTo=DateTime.Now;
字符串类型=null;
字符串debtorCode=null;
if(Request.QueryString[“compcode”!=null)
{
if(string.IsNullOrEmpty(Convert.ToString(Request.QueryString[“compcode”]))
{
compcode=null;
}
其他的
{
compcode=Convert.ToString(Request.QueryString[“compcode”]);
}
}
if(Request.QueryString[“dateFrom”!=null)
{
DateTime dtFrom=DateTime.Parse(Request.QueryString[“dateFrom”]);
dtFrom.ToString(“dd-MMM-yyyy”);
if(dtFrom==null)
{
dateFrom=DateTime.Now;
}
其他的
{
dateFrom=dtFrom;
}
}
if(Request.QueryString[“dateTo”!=null)
{
DateTime dtTo=DateTime.Parse(Request.QueryString[“dateTo”]);
dtTo.ToString(“dd-MMM-yyyy”);
if(dtTo==null)
{
dateTo=DateTime.Now;
}
其他的
{
dateTo=dtTo;
}
}
if(Request.QueryString[“episType”!=null)
{
if(string.IsNullOrEmpty(Convert.ToString(Request.QueryString[“episType”]))
{
episType=null;
}
其他的
{
episType=Convert.ToString(Request.QueryString[“episType”]);
}
}
if(Request.QueryString[“债务人代码”!=null)
{
if(string.IsNullOrEmpty(Convert.ToString(Request.QueryString[“debtorCode”]))
{
debtorCode=null;
}
其他的
{
debtorCode=Convert.ToString(Request.QueryString[“debtorCode”]);
}
}
cmd.Parameters.Add(“@compcode”,SqlDbType.VarChar,100);
cmd.Parameters[“@compcode”].Value=compcode;
cmd.Parameters.Add(“@dateFrom”,SqlDbType.SmallDateTime);
cmd.Parameters[“@dateFrom”].Value=dateFrom;
cmd.Parameters.Add(“@dateTo”,SqlDbType.SmallDateTime);
cmd.Parameters[“@dateTo”].Value=dateTo;
cmd.Parameters.Add(“@episType”,SqlDbType.VarChar,40);
cmd.Parameters[“@episType”].Value=episType;
cmd.Parameters.Add(“@debtorCode”,SqlDbType.VarChar,100);
cmd.Parameters[“@debtorCode”].Value=debtorCode;
con.Open();
//cmd.ExecuteNonQuery();
//gdBill.EmptyDataText=“未找到任何记录”;
//gdBill.DataSource=cmd.ExecuteReader();
//gdBill.DataBind();
字符串outputFilePath=Server.MapPath(“~/Documents/EClaim.txt”);
如果(File.Exists(“~/Documents/EClaim.txt”))
{
删除(“~/Documents/EClaim.txt”);
}
SqlDataAdapter da=新的SqlDataAdapter();
DataTable dt=新的DataTable();
da.SelectCommand=cmd;
da.填充(dt);
if (Request.QueryString["ProcessName"].ToString().Equals("Ebill"))
                {
                    using (SqlCommand cmd = new SqlCommand("AR_Ebill_claim", con))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;

                        string compcode = null;
                        DateTime dateFrom = DateTime.Now;
                        DateTime dateTo = DateTime.Now;
                        string episType = null;
                        string debtorCode = null;

                        if (Request.QueryString["compcode"] != null)
                        {
                            if (string.IsNullOrEmpty(Convert.ToString(Request.QueryString["compcode"])))
                            {
                                compcode = null;
                            }
                            else
                            {
                                compcode = Convert.ToString(Request.QueryString["compcode"]);
                            }
                        }
                        if (Request.QueryString["dateFrom"] != null)
                        {
                            DateTime dtFrom = DateTime.Parse(Request.QueryString["dateFrom"]);
                            dtFrom.ToString("dd-MMM-yyyy");

                            if (dtFrom == null)
                            {
                                dateFrom = DateTime.Now;
                            }
                            else
                            {
                                dateFrom = dtFrom;
                            }
                        }
                        if (Request.QueryString["dateTo"] != null)
                        {
                            DateTime dtTo = DateTime.Parse(Request.QueryString["dateTo"]);
                            dtTo.ToString("dd-MMM-yyyy");

                            if (dtTo == null)
                            {
                                dateTo = DateTime.Now;
                            }
                            else
                            {
                                dateTo = dtTo;
                            }
                        }
                        if (Request.QueryString["episType"] != null)
                        {
                            if (string.IsNullOrEmpty(Convert.ToString(Request.QueryString["episType"])))
                            {
                                episType = null;
                            }
                            else
                            {
                                episType = Convert.ToString(Request.QueryString["episType"]);
                            }
                        }
                        if (Request.QueryString["debtorCode"] != null)
                        {
                            if (string.IsNullOrEmpty(Convert.ToString(Request.QueryString["debtorCode"])))
                            {
                                debtorCode = null;
                            }
                            else
                            {
                                debtorCode = Convert.ToString(Request.QueryString["debtorCode"]);
                            }
                        }
                        cmd.Parameters.Add("@compcode", SqlDbType.VarChar, 100);
                        cmd.Parameters["@compcode"].Value = compcode;

                        cmd.Parameters.Add("@dateFrom", SqlDbType.SmallDateTime);
                        cmd.Parameters["@dateFrom"].Value = dateFrom;

                        cmd.Parameters.Add("@dateTo", SqlDbType.SmallDateTime);
                        cmd.Parameters["@dateTo"].Value = dateTo;

                        cmd.Parameters.Add("@episType", SqlDbType.VarChar, 40);
                        cmd.Parameters["@episType"].Value = episType;

                        cmd.Parameters.Add("@debtorCode", SqlDbType.VarChar, 100);
                        cmd.Parameters["@debtorCode"].Value = debtorCode;

                        con.Open();
                        //cmd.ExecuteNonQuery();

                        //gdBill.EmptyDataText = "No Records Found";
                        //gdBill.DataSource = cmd.ExecuteReader();
                        //gdBill.DataBind(); 

                        string outputFilePath = Server.MapPath("~/Documents/EClaim.txt");

                        if (File.Exists("~/Documents/EClaim.txt"))
                        {
                            File.Delete("~/Documents/EClaim.txt");

                        }

                        SqlDataAdapter da = new SqlDataAdapter();
                        DataTable dt = new DataTable();

                        da.SelectCommand = cmd;
                        da.Fill(dt);

                        int[] maxLengths = new int[dt.Columns.Count];

                        for (int i = 0; i < dt.Columns.Count; i++)
                        {
                            maxLengths[i] = dt.Columns[i].ColumnName.Length;

                            foreach (DataRow row in dt.Rows)
                            {
                                if (!row.IsNull(i))
                                {
                                    int length = row[i].ToString().Length;

                                    if (length > maxLengths[i])
                                    {
                                        maxLengths[i] = length;
                                    }
                                }
                            }
                        }

                        using (StreamWriter sw = new StreamWriter(outputFilePath, false))
                        {
                            //for (int i = 0; i < dt.Columns.Count; i++)
                            //{
                            //    sw.Write(dt.Columns[i].ColumnName.PadRight(maxLengths[i] + 2));
                            //}

                            sw.WriteLine();

                            foreach (DataRow row in dt.Rows)
                            {
                                for (int i = 0; i < dt.Columns.Count; i++)
                                {
                                    if (!row.IsNull(i))
                                    {
                                        sw.Write(row[i].ToString().PadRight(maxLengths[i] + 1));
                                    }
                                    else
                                    {
                                        sw.Write(new string(' ', maxLengths[i] + 1));
                                    }
                                }

                                sw.WriteLine();
                            }

                            sw.Close();
                        }

                        //string filePath = "~/Documents/EBilling.txt";
                        //Response.ContentType = "application/text";
                        //Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filePath + "\"");
                        //Response.TransmitFile(Server.MapPath(filePath));
                        ////Response.End();                           
                    }