我正在从Excel文件中读取日期列
var dt = new DataTable();
string query = string.Format("SELECT * FROM [{0}]", sheetName);
con1.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter(query, con1);
adapter.Fill(dt);
using (SqlConnection con = new SqlConnection(consString))
{
con.Open();
for (int i = 1; i < dt.Rows.Count; i++)
{
for (int j = 1; j < dt.Columns.Count; j ++)
{
MessageBox.Show(dt.Rows[0][j].ToString());
SqlCommand command = new SqlCommand("INSERT INTO [Budget Geant Preload]([CA TTC], [VAL MRG TTC], [CA HT], [VAL MRG HT], [Rayon], [Date], [Code Site], [Rayon Correspondance], TVA) VALUES(NULL, NULL, @ca, NULL, @rayon, @date, '2000', @rayon, null )", con);
command.Parameters.AddWithValue("@date", dt.Rows[0][j]);
command.Parameters.AddWithValue("@ca", dt.Rows[i][j]);
command.Parameters.AddWithValue("@rayon", dt.Rows[i][0]);
command.ExecuteNonQuery();
}
}
}
数据示例
我需要获得01/01/2015
,但它会返回42217
。如何解决?
答案 0 :(得分:4)
Datetime.fromOAdate()应该做的工作。
更新
我只是想对答案进行一些扩展。
在Excel中,日期存储为浮点数,即自19/1/19以来的日期数。它看似随意,但它增加和减少时间(几乎)只是简单的加法和减法。实际上,在.net中,日期时间结构在内部是相同的,只是使用刻度线。
答案 1 :(得分:3)