无法使用 oledb 在 excel 中更新当前时间

Unable to update current time in a excel using oledb

我正在尝试通过 oledb 连接使用以下代码将当前时间插入 excel 中的时间列,但是当我检查 excel 时,插入的值是日期格式。

值更新于 excel - 1/0/1900 3:54:11 下午

预期价值 - 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();
         }

     }

AFAIK,当您输入 时间值存储为 datetime 输入的时间部分和日期自 Excel.

中的 the days before 1900 are incorrect 以来,部分将自动为 1900 年 1 月 0 日

取而代之的是,将 DateTime.Now 直接传递给参数,并在格式单元格部分将列格式类型更改为 Timeh:mm:ss tt 格式。顺便说一下,您刚刚参数化了 @dd 部分。对您尝试插入的其他值使用参数。不要连接它们。

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

并且不要再使用 AddWithValueIt may generate unexpected and suprising results sometimes。使用 Add 方法重载来指定您的参数类型及其大小。

也可以使用 using 语句来处理您的命令,就像您对连接所做的那样。