我的代码读取Excel文件错误

我正在使用VSTS 2008 + C#+ .Net 3.5来读取由Excel 2007创build的Excel文件(但保存为Excel 2003 xls格式)。 这是我的代码,执行代码adapter.Fill(城市)时,有例外 – “OldDbException无法find可安装的ISAM”。 任何想法有什么不对?

static void Main(string[] args) { string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\data.xls;ExtendedProperties=""Excel 8.0;HDR=YES;"""; DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb"); DbDataAdapter adapter = factory.CreateDataAdapter(); DbCommand selectCommand = factory.CreateCommand(); selectCommand.CommandText = "SELECT ID FROM [Sheet1$]"; DbConnection connection = factory.CreateConnection(); connection.ConnectionString = connectionString; selectCommand.Connection = connection; adapter.SelectCommand = selectCommand; DataSet cities = new DataSet(); adapter.Fill(cities); // OldDbException Could not find installable ISAM return; } 

在此先感谢乔治

我复制了你的问题,用下面的代码replace你的代码,它应该工作

 static void Main ( string [] args ) { string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\Data.xls;Extended Properties=""Excel 8.0;HDR=YES;"""; DbProviderFactory factory = DbProviderFactories.GetFactory ( "System.Data.OleDb" ); using ( DbConnection connection = factory.CreateConnection ( ) ) { connection.ConnectionString = connectionString; using ( DbCommand command = connection.CreateCommand ( ) ) { // Cities$ comes from the name of the worksheet command.CommandText = "SELECT ID FROM [Sheet1$]"; connection.Open ( ); using ( DbDataReader dr = command.ExecuteReader ( ) ) { DataSet cities = new DataSet ( ); cities.Load ( dr, LoadOption.OverwriteChanges, new [] { "Sheet1" } ); } } } return; }