2015-07-06 71 views
0

我想生成一个Excel,我可以得到Excel,但一些数据(实际上是一个单元格内容)丢失。例如:在SQL Server查询(应该在一个单元格显示在Excel中像这样的建议列):从SQL服务器生成CSV文件并检索数据

建议 类型:恭维类别:医生姓名:嘿

然而,在我的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()); 

回答

0

应该不是你的查询是

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

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

对不起,我没有完全写,其SELECT * FROM ....那里某物= ......而日之间的“@ FDT'和'@TDT' –