用OleDB读写Excel时,日期"字段"如何操作?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用OleDB读写Excel时,日期"字段"如何操作?相关的知识,希望对你有一定的参考价值。
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
try
conn.Open();
OleDbCommand olecmd=new OleDbCommand();
olecmd.Connection=conn;
olecmd.CommandText="update [Sheet$] set date='2006/02/15'";
olecmd.ExecuteNonQuery();
catch
若在excel 文件中,date 是一个日期类型的列,上面代就会有异常。提示无效的运算式法则,只要把上面的date字段在excel中改成“文字”型的列就不会有问题,另外,在查把date 做为查询条件时:where date='xxxx/mm/dd' 这样写也会报错。sql server中这是正常的表示方法。请问上面的问题该如何表示才是正确的。也就是说更新行的某个日期类型 的字段的表方法 应该写成 set date=? 什麼,还有在where 子句中如何写。前提是我不能把excel文件的date列改成文字类型。
Microsoft.Jet.OLEDB.4.0 导入excel报"找不到可安装的ISAM"
用使用Microsoft.Jet.OLEDB.4.0导入Excel文件时,报“找不到可安装的ISAM"错误原因:
string connstring = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";Extended Properties=Excel 8.0;;HDR=YES;IMEX=1"; using (OleDbConnection conn = new OleDbConnection(connstring)) { conn.Open(); DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new Object[] { null, null, null, "TABLE" });//得到所有sheet的名字 string firstSheetName = sheetsName.Rows[0][2].ToString(); //得到第一个sheet的名字 string sql = string.Format("SELECT * FROM [{0}]", firstSheetName); //查询字符串 //string sql = string.Format("SELECT * FROM [{0}] WHERE [日期] is not null", firstSheetName); //查询字符串 OleDbDataAdapter ada = new OleDbDataAdapter(sql, connstring); DataSet set = new DataSet(); ada.Fill(set); return set.Tables[0]; }将上述代码中
connstring = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";Extended Properties=Excel 8.0;;HDR=YES;IMEX=1
加上单引号,如下,即可解决问题。connstring = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";Extended Properties=‘Excel 8.0;;HDR=YES;IMEX=1‘";
以上是关于用OleDB读写Excel时,日期"字段"如何操作?的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft.Jet.OLEDB.4.0 导入excel报"找不到可安装的ISAM"
使用oledb读写excel出现“操作必须使用一个可更新的查询”的解决办法
使用 microsoft.jet.oledb.4.0 从 paradox db 过滤日期字段
使用OLEDB读取EXCEL数据时,为何读取不到单元格中的时间值,全是1900\1\0