无法使用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
语句处理您的命令。
- 是否有一个用于MS Excel操作(读/写)的Dot NET(C#)库?
- Excel 64位和SQL Server CE 4与entity framework的私人部署6
- C#Excel VSTO – 可以移动一个数据透视表?
- 使用C#编程将Excel单元格从科学数值格式化为文本格式
- 来自SSRS报告的多个工作表的Excel文件
- C#如何遍历excel列
- 不能将types“对象”隐式转换为“Microsoft.Office.Interop.Excel.Worksheet”。 存在明确的转换(您是否缺less演员?)
- 如何从一个存储过程中移动10,000行数据,以使用c#winform优秀
- 是否可以将SSRS报告导出到Excel,报告的图表是Excel图表而不是图像?