我有一个Excel 2007文件“my.xlsx”和一个名为“States”的工作表,我有以下代码
using (OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\my.xlsx;Extended Properties='Excel 12.0 Xml;HDR=NO'"))
{
OleDbCommand cmd = new OleDbCommand("select * from [States]", con);
con.Open();
OleDbDataReader reader = cmd.ExecuteReader();
while(reader.Read())
Console.WriteLine(reader[0]);
}
它不断抛出异常,说“Microsoft Office Access数据库引擎无法找到对象'States'。请确保该对象存在,并且您正确拼写其名称和路径名。”
有人可以帮忙看看我的代码有什么问题吗?
答案 0 :(得分:4)
我知道这可能并不完全是你想要听到的内容,但是你会遇到很多人,他们一直在努力尝试使用oledb来阅读excel文件......
我使用NPOI这样的库从C#读取Excel文件的运气要多得多:
答案 1 :(得分:2)
我认为你需要在创建命令之前打开连接 - 不确定这是不是很重要......
然后在工作表名称的末尾添加$
:
OleDbCommand cmd = new OleDbCommand("select * from [States$]", con);
基本上[Name]
指的是命名范围,而[Name$]
指的是工作表。
有关详细信息,请参阅此KB:http://support.microsoft.com/kb/316934
答案 2 :(得分:1)
我只是通过访问此页面来实现它
http://www.davidhayden.com/blog/dave/archive/2006/05/26/2973.aspx
根据我的要求,我只需要阅读一个Excel文件。我搜索过的大多数解决方案都会让你使用某种类型的库,这对我来说太过分了。我真的在寻找一个人来发布一个关于如何阅读文件的代码片段,但我只是在页面上发现了我的链接。