用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列改成文字类型。

参考技术A 你这样是不行的。你必须用excel自带的函数才能操作。 参考技术B 把单引号改成双引号即可

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

OleDB读取Myxls生成的Excel文本,结果只能读取到第一列的值

用OLEDB读取EXCEL时,单元格内容长度超过255被截断