2012-11-22 40 views
1

我是C#的新手,我有一個C#程序和從另一個程序導出的excel文件。我如何將它轉換爲DateTime?下面是代碼,其中dtFromdtToDateTimePicker變量:使用c將excel數據轉換爲日期時間#

System.Data.DataTable dtExcel = new System.Data.DataTable(); 
dtExcel.TableName = "MyExcelData"; 
string SourceConstr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" +  this.textBox1.Text + "';Extended Properties= 'Excel 8.0;HDR=Yes;IMEX=1'"; 
OleDbConnection con = new OleDbConnection(SourceConstr); 
string query = "Select Customer, SUM(Wt) AS Weight from [Sheet0$] WHERE (CONVERT(datetime, [Date]) >= " + this.dtFrom.Value.Month + ") GROUP BY Customer order by Customer"; 
OleDbDataAdapter data = new OleDbDataAdapter(query, con); 
data.Fill(dtExcel); 
+0

不清楚你的問題是在* query *(你應該使用參數化的SQL而不是將值轉換爲字符串)還是在後來獲取數據。 –

+0

你的查詢還有另一個問題:'CONVERT'返回(在你的情況下)一個'DATETIME'值,並且你將這個值與'int'的'dtFrom.Value.Month'比較。 – RePierre

回答

0

我覺得這可能不是你的唯一的問題,而是要回答你的問題,如果你有

string query = "Select Customer, SUM(Wt) AS Weight from [Sheet0$] WHERE (CONVERT(datetime, [Date]) >= @Date) GROUP BY Customer order by Customer"; 
OleDbCommand command = new OleDbCommand(query); 
command.Parameters.Add("@Date", OleDbType.DBTimeStamp).Value = this.dtFrom.Value; 
OleDbDataAdapter data = new OleDbDataAdapter(command, con); 
更換

string query = "Select Customer, SUM(Wt) AS Weight from [Sheet0$] WHERE (CONVERT(datetime, [Date]) >= " + this.dtFrom.Value.Month + ") GROUP BY Customer order by Customer"; 
OleDbDataAdapter data = new OleDbDataAdapter(query, con); 

你可能會走在正確的軌道上。不是100%確定您需要哪個OleDbType,但您可以輕鬆地看到可用的選項。