public static IEnumerable <T> LoadFromFile <T>(string fullFileName, GetObjectFromReader <T> getObjectFromReaderFunc, string sheetNameFirst = "") { string conString = FormatXlsConnectionString(fullFileName); IEnumerable <T> result = null; using (var con = new System.Data.OleDb.OleDbConnection(conString)) { using (var cmd = new System.Data.OleDb.OleDbCommand()) { cmd.Connection = con; if (string.IsNullOrEmpty(sheetNameFirst)) { con.Open(); var dtExcelSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); sheetNameFirst = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString(); con.Close(); } cmd.CommandType = CommandType.TableDirect; cmd.CommandText = sheetNameFirst; con.Open(); using (var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { if (reader != null) { result = GetObjectListFromReader <T>(reader, getObjectFromReaderFunc); } } } } return(result); }
private static IEnumerable <T> GetObjectListFromReader <T>(IDataReader reader, GetObjectFromReader <T> getObjectFromReaderFunc) { var result = new List <T>(); while (reader.Read()) { var s = getObjectFromReaderFunc(reader); if (s != null) { result.Add(s); } } return(result); }