List<T> Data = new List<T>();
            var type = typeof(T).GetProperties();
            for (int i = 0; i < Data.Count; i++)
            {
                foreach (var item in type)
                {
                    if (GetTypeOfProp(item) == 1)
                    {
                        worksheet.Range[GetCol(Col) + Row].Text = item.Name;
                        worksheet.Range[GetCol(Col) + (Row + 1)].Text = (item.GetValue(Data[i], null) ?? "").ToString();
                        Col = Col + 1;
                    }
                    else if (GetTypeOfProp(item) == 2)
                    {
                        int OldCol = Col;
                        foreach (var li in item.PropertyType.GetProperties())
                        {
                            worksheet.Range[GetCol(Col) + (Row + 1)].Text = li.Name;
                            var value = li.GetValue(item, null);     // How Can I Get this Value ?
                            Col = Col + 1;
                            MaxRecOfRow = 1;
                        }
                        worksheet.Range[$"{GetCol(OldCol) + Row}:{GetCol(Col - 1) + Row}"].Merge();
                        worksheet.Range[$"{GetCol(OldCol) + Row}:{GetCol(Col - 1) + Row}"].Text = item.Name;
                    }
                    else if (GetTypeOfProp(item) == 3)
                    {
                        worksheet.Range[GetCol(Col) + Row].Text = item.Name;
                        worksheet.Range[GetCol(Col) + (Row + 1)].Text = "";
                        Col = Col + 1;
                        MaxRecOfRow = 1;
                    }
                }
                Row++;
             }
I can get value with reflection in c# with root but this question is get value with (model in model) How Can I Get this Value ? var value = li.GetValue(item, null);
 
     
     
    