我应该通过OleDb Jet4.0读取一个excel文件并保存到数据集?

我必须读取一个excel文件并将其放入数据集。

我应该通过OleDbDataAdapter读取excel文件内容,然后填入数据集? 我尝试,但表面。 它表示当数据适配器正在执行Fill方法时,应用程序无法识别数据库格式。

码:

String queryAll = "SELECT * FROM [Sheet1$]"; String xlsPath = Directory.GetCurrentDirectory() + "\\paid.xls"; String strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + xlsPath; try { m_dbDA = new OleDbDataAdapter(queryAll, strConn); DataSet dsPaidXls = new DataSet(); m_dbDA.Fill(dsPaidXls); //exception here } catch (System.Exception ex) { MessageBox.Show(ex.Message); } 

这是否意味着无法直接读取Excel数据并将其放入新的数据集? 而唯一的办法是读取excel数据逐个单元格,并插入一个新的数据集与数据表?

提前致谢。

========================================
解决
========================================

 String queryAll = "SELECT * FROM [Sheet1$]"; String xlsPath = Directory.GetCurrentDirectory() + "\\paid.xls"; String strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + xlsPath + ";Extended Properties='Excel 8.0;IMEX=1';"; try { m_dbDA = new OleDbDataAdapter(queryAll, strConn); DataSet dsPaidXls = new DataSet(); m_dbDA.Fill(dsPaidXls,"[Sheet1$]"); dataGridView1.DataSource = dsPaidXls; dataGridView1.DataMember = "[Sheet1$]"; } catch (System.Exception ex) { MessageBox.Show(ex.Message); } 

一旦你有正确的连接string,并且意识到数据types的问题,OLEDB工作得很好。 Jet适用于2007年之前的版本,您需要为Excel添加扩展属性。

 String strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + xlsPath + "Extended Properties='Excel 12.0 Xml;HDR=YES';"; 

请参阅: 连接string
如何使用ADO与Excel数据从Visual Basic或VBA (包含有用的注意事项)
各种说明

当您通过OleDB读取Excel文件时,请确保提供正确版本的提供程序(一个用于xls,一个用于xlsx),并确保您selectx86作为平台。

如果不这样做,它将在64位系统上编译为x64,并且因为OleDb已被弃用,所以没有64位OleDb驱动程序,这意味着您的程序在调用OleDb时会崩溃。

此外,必须安装Office 2007系统驱动程序(ACE Data Connectivity Components)。

看这里:
在查询Excel 2010时诊断OLEDBexception

您也可以使用ODBC或Excel Package Plus。
再一次,如果格式是xls而不是xlsx,则需要在这里采用不同的库文件。

用于XLS的ExcelLibrary
http://code.google.com/p/excellibrary/

Excel Package Plus for XLSX
http://epplus.codeplex.com/

您应该避免使用OleDb来读取Excel文件。 很多坑。

对于xls文件,这可以更好,更可靠地工作。

http://www.codeproject.com/KB/office/ExcelReader.aspx

对于xlsx文件,请使用Office Open XML SDK:

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5124