2013-04-26 119 views
3

我想在.net中使用C#创建程序,用于上传excel文件,读取它并将记录excel文件添加到来自excel数据的sql server数据库中。 虽然这样做,我有一个错误:无法找到可安装的ISAM?找不到可安装的ISAM

有人可以帮助我如何解决这个问题?

或者可以提供一些示例代码以不同的方式做这种类型的任务?

protected void Button1_Click(object sender, EventArgs e) 
    { 
     String excelConnectionString1; 
     String fname = FileUpload1.PostedFile.FileName; 
     if (FileUpload1.PostedFile.FileName.EndsWith(".xls")) 
     { 
      String excelsheet; 
      FileUpload1.SaveAs(Server.MapPath("~/file/" + FileUpload1.FileName)); 

      if (FileUpload1.PostedFile.FileName.EndsWith(".xls")) 
      { 
       excelConnectionString1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/file/" + FileUpload1.FileName) + ";Extended Properties=Excel 8.0;HDR=Yes;"; 
       OleDbConnection myEcelConnection1 = new OleDbConnection(excelConnectionString1); 
       myEcelConnection1.Open(); 
       if (txtsheet.Text.Length == 0) 
       { 
        lblmsg.Text = "Please Write File Name"; 
       } 
       else 
       { 
        excelsheet = "[" + txtsheet.Text + "$" + "]"; 
        string sheet = "Select * from [" + txtsheet.Text + "$" + "]"; 
        OleDbCommand cmd1 = new OleDbCommand(sheet, myEcelConnection1); 
        cmd1.CommandType = CommandType.Text; 
        OleDbDataAdapter myAdapter1 = new OleDbDataAdapter(cmd1); 
        DataSet myDataSet1 = new DataSet(); 
        myAdapter1.Fill(myDataSet1); 
        int a = myDataSet1.Tables[0].Rows.Count - 1; 
        string name; 
        string dob; 
        for (int i = 0; i <= a; i++) 
        { 
         name = myDataSet1.Tables[0].Rows[i].ItemArray[0].ToString(); 
         dob = myDataSet1.Tables[0].Rows[i].ItemArray[1].ToString(); 
         SqlConnection con = new SqlConnection("Connection String for Sql Server"); 
         con.Open(); 
         SqlCommand command = new SqlCommand("Insert into info(name,dob)values(@valname,@valdob)", con); 
         command.Parameters.Add("@valname", SqlDbType.VarChar, 50).Value = name; 
         command.Parameters.Add("@valdob", SqlDbType.VarChar, 50).Value = dob; 
         command.CommandType = CommandType.Text; 
         SqlDataAdapter da = new SqlDataAdapter(command); 
         DataSet ds = new DataSet(); 
         da.Fill(ds); 
         con.Close(); 
        } 
       } 
      } 
     } 
    } 
} 

}

+0

你可以在这里发布的代码?这样人们可以看看可能是什么问题。 – 2013-04-26 10:18:23

回答

6

有喷气OLEDB驱动程序没有64位版本,因此,如果您是在64位操作系统上运行这一点,你可能需要针对x86的在你的.NET应用程序,而不是任何CPU。

或者

当连接字符串的语法不正确,也会产生这个错误。使用多个扩展属性参数时通常会发生这种情况下面是一个例子:

ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
"Data Source=e:\My Documents\Book20.xls;Extended Properties=""Excel 12.0;HDR=NO;IMEX=1""" 

更改连接字符串,这样

ConnectionString=" Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\NAVEEN KUMAR\DOTNET\windows\WindowsApplication1\WindowsApplication1\123.xls;Excel 12.0 Xml;HDR=YES" 
+0

我已经尝试将配置更改为x86,但只有任何cpu的选项,甚至我无法添加x86的新目标。 – Diwash 2013-04-26 10:08:15

+0

您是否检查过我发布的第二个解决方案? – 2013-04-26 10:09:18

+0

我检查了连接字符串,并改变了很多次,但仍出现同样的问题...当我运行代码时,它显示错误: – Diwash 2013-04-26 10:13:19

相关问题