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

时间:2015-07-11 10:30:10

标签: c# excel oledb epplus

我试图通过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();
         }

     }

1 个答案:

答案 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);

enter image description here

不再使用AddWithValue了。 It may generate unexpected and suprising results sometimes。使用Add方法重载来指定参数类型及其大小。

还可以像使用using语句一样处理命令。