无法使用oledb更新Excel中的当前时间

我试图通过oledb连接使用下面的代码插入当前时间到Excel中的时间列,但是当我检查Excel插入的值是date格式。

值在excel中更新 – 1/0/1900 3:54:11 PM

预期价值 – 3:54:11 PM

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(); } } 

AFAIK ,当input时间值作为datetime时间存储在input的时间部分,date部分将自1900年1月0日起自动自1900年以前在Excel 中不正确 。

取而代之的是,将DateTime.Now直接传递给参数,并在格式单元格部分将列格式types更改为带有h:mm:ss tt格式的Time 。 顺便说一句,你只是@dd部分。 使用您尝试插入其他值的参数。 不要连接它们。

 insertResult.Parameters.AddWithValue("@dd", DateTime.Now); 

在这里输入图像说明

不要再使用AddWithValue了。 有时可能会产生意想不到的结果 。 使用Add方法重载指定您的参数types和它的大小。

也可以像using连接一样使用using语句处理您的命令。