当前位置:编程学习 > C#/ASP.NET >>

大神们,求助啊。C# 更新Excel数据,出现数据类型不符合。怎么改都不成功

     private void button5_Click(object sender, EventArgs e)
        {
             string sql = "update [sheet1$A2:F15] set B=5553 where A='11'";

            DoOleSql(sql);
        }

        protected void DoOleSql(string sql)
        {
            OleDbConnection conn = new OleDbConnection();
            String serverFilename = "d:\\11.xlsx";
            conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + serverFilename + "';Extended Properties='Excel 12.0;HDR=YES;IMEX=2'";

             try
            {//打开连接
                MessageBox.Show("0");
                conn.Open();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
              //  Response.Write(e.ToString());
            }
            OleDbCommand olecommand = new OleDbCommand(sql, conn);
            try
            {//执行语句
                MessageBox.Show("1");
                olecommand.ExecuteNonQuery();
            }
            catch (Exception eee)
            {
                MessageBox.Show(eee.ToString());
              //  Response.Write(eee.ToString());
                conn.Close();
            }
            finally
            {
                conn.Close();//关闭数据库
            }
            conn.Close();
        } --------------------编程问答-------------------- 看下数据库B=5553,B是什么数据类型,估计是B的类型不正确 --------------------编程问答-------------------- 我觉得你的问题,不在代码,而是excel单元格的格式上。 --------------------编程问答-------------------- http://blog.csdn.net/happy09li/article/details/7431967 --------------------编程问答-------------------- set B='5553'

改成这样呢  --------------------编程问答-------------------- 我已经将所有的Excel格式全部改成文本格式。不然改成那种格式比较可行呢? --------------------编程问答--------------------
引用 4 楼  的回复:
set B='5553'

改成这样呢


对,或者改一下excel的列的数据类型,改为数字 --------------------编程问答-------------------- 更改了数据类型还是会报错。经常是这两个错误换着报。
1.操作必须使用一个可更新的查询
2.数据类型不符合 --------------------编程问答-------------------- 如果A、B类型都是字符串,换成 string sql = "update 表名 set B='5553' where A='11'"; --------------------编程问答--------------------
引用 5 楼  的回复:
我已经将所有的Excel格式全部改成文本格式。不然改成那种格式比较可行呢?

顶一下,这样的问题可能在一些小细节上,以前我也经常遇到这样的问题。
希望你尽快能解决你的问题。 --------------------编程问答--------------------
引用 8 楼  的回复:
如果A、B类型都是字符串,换成 string sql = "update 表名 set B='5553' where A='11'";

会报错。
错误信息为"操作必须使用一个可更新的查询"
--------------------编程问答-------------------- 你把连接EXECL的地方的IMEX=1 改成 IMEX=2  --------------------编程问答--------------------
引用 11 楼  的回复:
你把连接EXECL的地方的IMEX=1 改成 IMEX=2

我本来就是用IMEX=2
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,