C#调用OleDbConnection类读取Excel表格时,报错外部组件发生异常!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#调用OleDbConnection类读取Excel表格时,报错外部组件发生异常!相关的知识,希望对你有一定的参考价值。
跪求大神指导,谢谢!没有多少就给10分吧!谢谢了
参考技术A //动态读取Excel表数据到DataSetDataSet 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 !");
参考技术B 问题出在Excel中左下角的Sheet1追问
您好,谢谢您的回答,但是我的Excel是正确的都对!左下角的文件名确实是Sheet1
追答你把除了Sheet1之外的都删掉.然后保存关闭.再打开任务管理器看看.里面有没有EXCEL.exe进程.有的话就结束它.再导入.
追问您好,还是不行啊!我记得以前好使的功能,好长时间没用了,今天突然导入的功能就不好使了,我排查了一下就是报“外部组件发生异常”,其他的也没有了,应该跟Excel没有关系!
追答原来好使现在不好使?
你office是不是重装了? 现在的office是什么版本的?
系统换了
office换了
dotnet版本换了
这些你都确定一下.
应该不是你代码的事,如果路径错了.在open的时候就报错了.
你先手动创建一个空的excel,导入,看看代码能不能做过你报错那一行
本回答被提问者采纳ACCESS通过一个连接写入的数据,还有一个连接却读取不出来
近期在用c#实现一个数据导入的功能,将一个ACCESS数据库中的数据导入到还有一个ACCESS的数据库中,然后显示出来,可是导入成功了。却显示不出来。
经过研究认为应该是缓存的原因,因为我写入数据和读取数据使用的不是一个OleDbConnection对象。而是分别打开了两个OleDbConnection连接对象;一个连接写入成功了,但保存到磁盘还须要点时间。所以这个连接写入成功。还有一个连接马上去取就会有取不到的情况!
改为使用一个连接对象。问题就攻克了。
以上是关于C#调用OleDbConnection类读取Excel表格时,报错外部组件发生异常!的主要内容,如果未能解决你的问题,请参考以下文章
通过 OleDbConnection 获取单个记录的最佳方法是啥?
用Access作为后台数据库支撑,书写一个用C#写入记录的案例