【问题标题】:OLEDB ExecuteNonQuery Error while inserting values to excel sheet将值插入到 excel 工作表时 OLEDB ExecuteNonQuery 错误
【发布时间】:2013-06-25 09:21:05
【问题描述】:

将值插入 Excel 时收到错误消息(错误消息:查询值和目标字段的数量不同)。有谁能帮我解决这个错误。此代码的目标是从 sql 数据库中获取值并将其插入 Excel。

//代码

string sheetname = comboBox1.SelectedItem.ToString();
            int s = 1, w = 0;
            string ssss = "";

            Microsoft.Office.Interop.Excel.Application xlapp = new  Microsoft.Office.Interop.Excel.Application();
            xlapp.Visible = true;
            xlapp.Workbooks.Open(@"\\server\planet\CalculationDatabase\Database.xls");
            string path = @"\\server\planet\CalculationDatabase\Database.xls";
            string path1 = @"\\server\planet\CalculationDatabase\Settings.xlsx";
            string con = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + @";Extended Properties=""Excel 12.0 Macro;HDR=YES""";
            string con1 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path1 + @";Extended Properties=""Excel 12.0 Macro;HDR=YES""";
            OleDbConnection cn2 = new OleDbConnection(con1);
            cn2.Open();
            OleDbCommand cmd2 = new OleDbCommand("select * from [" + sheetname.ToString() + "$]", cn2);
            OleDbDataReader rd2 = cmd2.ExecuteReader();
            while (rd2.Read())
            {
                ssss = rd2["Info Name"].ToString();
                if (ssss.ToString() == "")
                {
                    w = int.Parse(s.ToString());
                    break;
                }
                s++;

            }
            rd2.Close();
            cn2.Close();
            var queries = string.Join(",", (Enumerable.Range(1, w).Select(i => "ip" + i)));       
            SqlConnection con3 = new SqlConnection("Data Source=173.83.250.71,1433; Network Library=DBMSSOCN; Initial Catalog=paradigm;User Id=sa; password=Paradigm123");
            con3.Open();
            SqlCommand cmd3 = new SqlCommand("select  " + queries.ToString() + "  from paradigm.dbo.pinput where tempsheet='" + comboBox1.SelectedItem.ToString() + "'", con3);

            SqlDataReader rd3 = cmd3.ExecuteReader();
            OleDbConnection cn = new OleDbConnection(con);
            cn.Open();

            while (rd3.Read())
            {

                var queries1 = string.Join(",", (Enumerable.Range(0, w - 1).Select(i => "'" + float.Parse(rd3[i].ToString()) + "'")));

                cmd1.ExecuteNonQuery();//I am getting error here
            }
            rd3.Close();
            con3.Close();

        }

【问题讨论】:

  • 希望您的密码、用户和 ip 不是真实的
  • 现在,我们应该猜猜错误发生在哪里?

标签: c#-4.0 c#-3.0 c#-2.0


【解决方案1】:

由于 .xls 文件的连接字符串不同而发生错误。 用

替换 OLEDB 连接“con”

Provider=Microsoft.Jet.OLEDB.4.0;数据源=C:\MyExcel.xls; 扩展属性="Excel 8.0;HDR=Yes;IMEX=1";

【讨论】:

  • 对不起,但这不是答案,您必须编辑您的问题并添加错误部分,您不应该在答案部分添加它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多