C#调用OleDbConnection类读取Excel表格时,报错外部组件发生异常!

跪求大神指导,谢谢!没有多少就给10分吧!谢谢了

第1个回答  2015-02-05
//动态读取Excel表数据到DataSet
DataSet excelDataSet = new DataSet();
using (OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=BOM.xlsx;Extended Properties='Excel 12.0;IMEX=1';"))
{
    con.Open();
    DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    using (OleDbCommand cmd = new OleDbCommand("", con))
    {
        Console.WriteLine("read excel............");
        foreach (DataRow item in dt.Rows)
        {
            string tableName = item["TABLE_NAME"].ToString();
            cmd.CommandText = string.Format("select * from [{0}] ", tableName);
            DataTable temp = new DataTable(tableName);
            temp.Load(cmd.ExecuteReader());
            excelDataSet.Tables.Add(temp);
        }
        Console.WriteLine("read excel done !");
    }
}

本回答被网友采纳
第2个回答  2015-02-05
问题出在Excel中左下角的Sheet1追问

您好,谢谢您的回答,但是我的Excel是正确的都对!左下角的文件名确实是Sheet1

追答

你把除了Sheet1之外的都删掉.然后保存关闭.再打开任务管理器看看.里面有没有EXCEL.exe进程.有的话就结束它.再导入.

追问

您好,还是不行啊!我记得以前好使的功能,好长时间没用了,今天突然导入的功能就不好使了,我排查了一下就是报“外部组件发生异常”,其他的也没有了,应该跟Excel没有关系!

追答

原来好使现在不好使?

你office是不是重装了?  现在的office是什么版本的?

    系统换了

    office换了

    dotnet版本换了

这些你都确定一下.

 

应该不是你代码的事,如果路径错了.在open的时候就报错了.

你先手动创建一个空的excel,导入,看看代码能不能做过你报错那一行

本回答被提问者采纳
相似回答