我试图通过oledb连接使用下面的代码将当前时间插入excel中的Time列,但是当我检查excel时,插入的值是Date格式。
在Excel中更新的值 - 1/0/1900 3:54:11 PM
预期价值 - 下午3:54:11
string currentTime = DateTime.Now.ToString("hh:mm:ss.fff tt");
string cmnd1 = "Create Table [" + currentDate + "] (TestCase char(100), ExecutionTime Time, Result char(20))";
string cmnd2 = "Insert Into [" + currentDate + "] (TestCase, ExecutionTime, Result) values ("+ "'" + tName + "',@dd,'" + result +"')" ;
using (OleDbConnection conn = new OleDbConnection(ConnectionStringtd))
{
OleDbCommand createSheet = new OleDbCommand(cmnd1, conn);
OleDbCommand insertResult = new OleDbCommand(cmnd2, conn);
insertResult.Parameters.AddWithValue("@dd", DateTime.Now.TimeOfDay);
conn.Open();
try
{
createSheet.ExecuteNonQuery();
}
catch(OleDbException) {}
insertResult.ExecuteNonQuery();
}
}
答案 0 :(得分:0)
AFAIK ,当您输入 pure 时间值时存储为datetime
并输入时间部分,日期部分将自动生成1900年1月0日自Excel中the days before 1900 are incorrect起。
而不是直接将DateTime.Now
传递给参数,并在格式单元格部分中将列格式类型更改为Time
格式为h:mm:ss tt
。顺便说一句,你只是参与@dd
部分。使用您尝试插入的其他值的参数。不要连接它们。
insertResult.Parameters.AddWithValue("@dd", DateTime.Now);
不再使用AddWithValue
了。 It may generate unexpected and suprising results sometimes。使用Add
方法重载来指定参数类型及其大小。
还可以像使用using
语句一样处理命令。