请确认它不包含无效的字符或标点,且名称不太 那么怎样才能获得Excel中各个sheet 的名称呢?这样就能动态的选中返回那 个sheet 的数据,即使用户更改了名称也不怕,完全可以把所有sheet 的名称列出 来供用户选择: 那么下面就把解决问题的代码列出来,主要用到了 OleDbConnection.GetOleDbSchemaTable()方法 ///根据excel的文件的路径提取其中表的数据 ///Excel文件的路径 private void GetDataFromExcelWithAppointSheetName(stringPath) //连接串stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Path+";"+"Extend edProperties=Excel8.0;"; OleDbConnectionconn=newOleDbConnection(strConn); conn.Open(); //返回Excel 的架构,包括各个sheet 表的名称,类型,创建时间和修 改时间等 DataTabledtSheetName=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,newob ject[]{null,null,null,"Table"}); //包含excel 中表名的字符串数组 string[]strTableNames=newstring[dtSheetName.Rows.Count]; for(intk=0;k OleDbDataAdaptermyCommand=null;DataTabledt=newDataTable(); //从指定的表明查询数据,可先把所有表明列出来供用户选择 stringstrExcel="select*from["+strTableNames[0]+"]"; myCommand=newOleDbDataAdapter(strExcel,strConn); dt=newDataTable(); myCommand.Fill(dt); dataGridView1.DataSource=dt;//绑定到界面 Excel时如果 sheet 名不对报错的解决方案濒摧 不是一个有效名称。