'Sheet1$'不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。 2009-10-27 12:06 如果大家在google 搜C#读取excel 数据,一定会搜索出一下的代码: public DataTable ExcelToDS(string Path) stringstrConn "DataSource=" "ExtendedProperties=Excel 8.0;"; OleDbConnection conn newOleDbConnection(strConn); conn.Open(); string strExcel OleDbDataAdaptermyCommand null;DataTable dt null;strExcel from[sheet1$]"; myCommand newOleDbDataAdapter(strExcel, strConn); dt newDataTable(); myCommand.Fill(dt); return dt; 但是上面的代码只是查询sheet1$表,如果用户把sheet表名改了就是报下面的错: 'sheet1$' 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。 那么怎样才能获得Excel 中各个sheet 的名称呢?这样就能动态的选中返回那个sheet 的数据,即使用户更改了名称也不怕,完全可以把所有sheet 的名称列出来供用户选择: 那么下面就把解决问题的代码列出来,主要用到了 OleDbConnection.GetOleDbSchemaTable()