작업을 하다가 첫번째 Sheet의 데이터를 읽어 오는 일이 있었다.
기존에 대부분 작업은 Sheet이름이 있어 그 이름으로 쿼리를 해서
읽어왔는데 Sheet이름이 유동적으로 변경되어
다음과 같이 했다.
string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=\"Excel 8.0;Imex=1;HDR=No;\"", path);
var ds = new DataSet(); using (OleDbConnection conn = new OleDbConnection(connectionString)) { conn.Open(); var dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); string sheet1 = dtSchema.Rows[0].Field<string>("TABLE_NAME"); OleDbCommand cmd = new OleDbCommand(String.Format("SELECT * FROM [{0}]", sheet1), conn); OleDbDataAdapter adp = new OleDbDataAdapter(); adp.SelectCommand = cmd; adp.Fill(ds); } return ds;