c# - 找不到可安装的 ISAM

标签 c# .net sql-server-2008 excel-2010

我正在尝试使用 C# 在 .net 中创建程序以上传 excel 文件、读取它并将记录 excel 文件从 excel 数据添加到 sql server 数据库。 这样做时出现错误:找不到可安装的 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();
                    }
                }
            }
        }
    }
}

最佳答案

没有 64 位版本的 Jet OLEDB 驱动程序,因此如果您在 64 位操作系统上运行它,您可能需要在 .NET 应用程序中以 x86 为目标,而不是任何 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"

关于c# - 找不到可安装的 ISAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16233669/

相关文章:

c# - 在 C# 中使用 OpenXML 应用数字格式时遇到问题

c# - Dispose() - 调用什么以及何时调用

c# - AppDomain.CurrentDomain.AssemblyResolve 可能存在的信任问题或我应该注意的其他问题

c# - 如何在C# MailMessage中设置电子邮件过期时间

sql - 使用 DEFAULT 空字符串避免 NULL 列

c# - 将 JSON 文件夹结构反序列化为 C# 对象

asp.net - SQL Server 数据库在触发器执行时挂起

c# - Entity Framework : map varchar to DateTime property

SQL Server 2005 - 返回带有存储过程的多个表是否有任何重大负面影响?

LINQ2SQL - 当我想要内部连接时发出交叉连接