我刚好在做这个· 不同版本的获取方法都有· 你看看~`
DataSet ds = new DataSet();
OleDbConnection conn = new OleDbConnection();
try
{
string sql = "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=No;IMEX=1;\"";//2007版
//string sql = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+path+";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\"";//2003版
//HDR=Yes/NO 表示是否将首行做标题,若设了YES 数据集中自动忽略了第一行。 IMEX 表示是否强制转换为文本
conn.ConnectionString = sql;
conn.Open();
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
//string tableName = dt.Rows[0][2].ToString().Trim();//获得第一张工作区间表名
//OleDbCommand cmd = new OleDbCommand("select * from [" + tableName + "]", conn);//工作表名就是Excel显示区下面的工作区名
OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$]", conn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd); //读取Excel表格
da.Fill(ds);
}