String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=c:/test.xls;" +
"Extended Properties=Excel 8.0;";
OleDbConnection cn = new OleDbConnection(sConnectionString);
cn.Open();
DataTable tb = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
foreach (DataRow row in tb.Rows)
{
//遍历弹出各Sheet的名称
MessageBox.Show(row["TABLE_NAME"]);
}
from:http://blog.csdn.net/hlzyly/article/details/5710644
这种方法不错,但是假如你的表有n个表,会读出2*n个名字,例如,你的工作薄里面有sheet1这个表,就会第一个读出的是sheet1没错,然后还有第二个,名字是sheet$.实在不解,要是真要用到,再添加些代码排除吧。