【问题标题】:Generate CSV file from SQL server and retrieve data从 SQL 服务器生成 CSV 文件并检索数据
【发布时间】:2015-07-06 07:50:39
【问题描述】:

我正在尝试生成一个 excel,我可以获得 excel,但缺少一些数据(实际上是一个单元格内容)。例如:在sql server查询中(应该显示在excel中建议列下的一个单元格中):

建议 类型:赞美类别:医生姓名:嘿

但是,在我的 excel 中,在“建议”列下,它只显示我 - 类型:赞美,然后类别:医生姓名:嘿缺失。 也许我的 foreach 是错误的,或者我错误地检索数据的方式。

    private DataTable GetData(SqlCommand cmd)
    {
        DataTable dt = new DataTable();
        String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnStr"].ConnectionString;
        SqlConnection con = new SqlConnection(strConnString);
        SqlDataAdapter sda = new SqlDataAdapter();
        cmd.CommandType = CommandType.Text;
        cmd.Connection = con;
        try
        {
            con.Open();
            sda.SelectCommand = cmd;
            sda.Fill(dt);
            return dt;
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            con.Close();
            sda.Dispose();
            con.Dispose();
        }
    }

    protected void GenerateCSV_Click(object sender, EventArgs e)
    {

        //First file Inpatient
        StringBuilder sb = new StringBuilder();
        //fill up DT here
        string strQuery ="Select * from table AND Date BETWEEN @FDT AND @TDT"
        SqlCommand cmd = new SqlCommand(strQuery);


        string fromdate = tbStartDate.Text;
        DateTime fdt = Convert.ToDateTime(fromdate);

        string todate = tbEndDate.Text;
        DateTime tdt = Convert.ToDateTime(todate);


        cmd.Parameters.AddWithValue("@FDT", fdt);
        cmd.Parameters.AddWithValue("@TDT", tdt);

        DataTable dt = GetData(cmd);
        //end

        for (int k = 0; k < dt.Columns.Count; k++)
        {
            //add separator
            sb.Append(dt.Columns[k].ColumnName + ',');
        }
        //append new line
        sb.Append("\r\n");
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            for (int k = 0; k < dt.Columns.Count; k++)
            {
                if (dt.Columns[k].ColumnName.Equals("CommentsSuggestions"))
                {
                    //add separator
                    sb.Append("\"" + dt.Rows[i][k].ToString().Replace(",", ";") + "\"" + ',');
                }
                else
                {
                    //add separator
                    sb.Append(dt.Rows[i][k].ToString().Replace(",", ";") + ',');
                }
            }
            //append new line
            sb.Append("\r\n");
        }

         File.WriteAllText(@"C:\ExportCSV\Inpatient.csv", sb.ToString());

【问题讨论】:

    标签: c# asp.net sql-server excel csv


    【解决方案1】:

    你的查询不应该是

    Select * from table WHERE Date BETWEEN @FDT AND @TDT
    

    不是

    Select * from table AND Date BETWEEN @FDT AND @TDT
    

    【讨论】:

    • 对不起,我没有写完整,它的 Select *from.... where sth = sth AND Date BETWEEN '@FDT' AND '@TDT'
    猜你喜欢
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    相关资源
    最近更新 更多