// Parse results public static void ParseResults(IExcelDataReader excelReader, ref List<Fileline> list, ref List<int> index) { // Return list var list_ = new List<Fileline>(); var index_ = new List<int>(); excelReader.IsFirstRowAsColumnNames = true; DataSet result = excelReader.AsDataSet(); if (result.Tables.Count > 0) { var dt = result.Tables[0]; int j = 0; int i = 0; foreach (DataRow r in dt.Rows) { var line = new Fileline(); if (r[0] == DBNull.Value || r[1] == DBNull.Value) { index_.Add(j + 1); } else { ParseProperties(line, r, index_, i, j, ref index_); ////################################################################// //XmlSerializer SerializerObj = new XmlSerializer(typeof(Fileline)); //TextWriter WriteFileStream = new StreamWriter(@"C:\Test\test.xml"); //SerializerObj.Serialize(WriteFileStream, line); ////################################################################// list_.Add(line); } j++; } i = 0; } // Return list list = list_; index = index_; }
// Parse object properties and set values public static Fileline ParseProperties(Fileline line, DataRow r, List<int> index, int i, int j, ref List<int> index_) { foreach (PropertyInfo prop in line.GetType().GetProperties()) { // Check if Code or Description are empty if (r[0] == DBNull.Value || r[1] == DBNull.Value) { index.Add(j + 1); } if (r[i] != DBNull.Value) { string t = prop.PropertyType.ToString(); if (t == "System.String") { prop.SetValue(line, r[i].ToString()); } else { decimal temp = Convert.ToDecimal(r[i]); prop.SetValue(line, temp); } } i++; } return line; }