无法使用 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
直接传递给参数,并在格式单元格部分将列格式类型更改为 Time
和 h:mm:ss tt
格式。顺便说一下,您刚刚参数化了 @dd
部分。对您尝试插入的其他值使用参数。不要连接它们。
insertResult.Parameters.AddWithValue("@dd", DateTime.Now);
并且不要再使用 AddWithValue
。 It may generate unexpected and suprising results sometimes。使用 Add
方法重载来指定您的参数类型及其大小。
也可以使用 using
语句来处理您的命令,就像您对连接所做的那样。
我正在尝试通过 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.
取而代之的是,将 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
语句来处理您的命令,就像您对连接所做的那样。