public static void SetTable(string TestDataFile)
        {
            object misValue = System.Reflection.Missing.Value;
            TestCase testCase;
            Microsoft.Office.Interop.Excel.Workbook workbook;
            List<string> header = new List<string>();
            List<TestRowData> TestRowList=new List<TestRowData>();

            //Initialize test steps for testcase
            Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
            workbook = excelApp.Workbooks.Open(TestDataFile);
            Microsoft.Office.Interop.Excel.Worksheet worksheet;
            worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.get_Item(1);

            //return the name of the testcase from the TestCaseFile name
            char[] inputArray = TestDataFile.ToCharArray();
            Array.Reverse(inputArray);
            string reversedName = new string(inputArray);

            //now search for the /
            int startPos = reversedName.IndexOf("\\");
            int endPos = reversedName.IndexOf(".") + 1;

            string TestCaseName = TestDataFile.Substring(TestDataFile.Length - startPos, startPos - endPos);

            int lastRowUsed = worksheet.Cells.Find("*", System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, Microsoft.Office.Interop.Excel.XlSearchOrder.xlByRows, Microsoft.Office.Interop.Excel.XlSearchDirection.xlPrevious, false, System.Reflection.Missing.Value, System.Reflection.Missing.Value).Row;

            int ctr;
            for (ctr = 0; ctr < lastRowUsed; ctr++)
            {
                if (((string)worksheet.Cells[ctr + 1, 2].Value) == null)
                {
                    break;
                }
            }
            lastRowUsed = ctr;
            testCase = new TestCase("DataSheet");
            string columnHeader = "";
            //check if just the first column is not blank
            if (((string)worksheet.Cells[1, 1].Value) != null)
            {
                int lastColumnUsed = worksheet.Cells.Find("*", System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, Microsoft.Office.Interop.Excel.XlSearchOrder.xlByRows, Microsoft.Office.Interop.Excel.XlSearchDirection.xlPrevious, false, System.Reflection.Missing.Value, System.Reflection.Missing.Value).Column;
                lastRowUsed = worksheet.Cells.Find("*", System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, Microsoft.Office.Interop.Excel.XlSearchOrder.xlByRows, Microsoft.Office.Interop.Excel.XlSearchDirection.xlPrevious, false, System.Reflection.Missing.Value, System.Reflection.Missing.Value).Row;

                testCase.TestRowList = new List<TestRowData>();
                //get the data header                
                for (int colheader = 1; colheader <= lastColumnUsed; colheader++)
                {
                     header.Add((string)worksheet.Cells[1, colheader].Value);
                }

                for (int rowctr = 1; rowctr < lastRowUsed; rowctr++)
                 {
                     TestRowData testRowData = new TestRowData(); string ColumnHeader, ColumnValue;
                     for (int colctr = 0; colctr < lastColumnUsed; colctr++)
                     {
                         ColumnHeader = header.ElementAt<string>(colctr);
                         ColumnValue = (string)worksheet.Cells[rowctr + 1, colctr + 1].Value;

                         testRowData.DataValue.Add(ColumnHeader, ColumnValue);
                         columnHeader = columnHeader + ","+ColumnHeader;
                     }
                     testCase.TestRowList.Add(testRowData);
                  }
                columnHeader = columnHeader.Substring(1, columnHeader.Length - 1);
            }
            testCase.HeaderInfo = header;
            testCase.LastRowUsed = lastRowUsed - 1;

            GlobalConfig.GlobalTCVar = testCase;

            CustomTestController.ControllerUtility.GenericDictionary = null;
            Dictionary<string, string> DictValues;
            GenericListDictionary = new List<Dictionary<string, string>>();
            
            for (int rowctr = 0; rowctr < lastRowUsed-1; rowctr++)
            {
                DictValues =  new Dictionary<string, string>();
                string Key, Value;
                foreach (string Target in testCase.HeaderInfo)
                {
                    if (Target.Contains('['))
                        Key = Target.Substring(1, Target.Length - 2);
                    else
                        Key = Target.Substring(0, Target.Length);

                    Value = testCase.TestRowList[rowctr].DataValue[Key];
                    DictValues.Add(Key, Value);
                }
                GenericListDictionary.Add(DictValues);
            }
            
            workbook.Close(true, misValue, misValue);
            excelApp.Quit();

            CustomTestController.ControllerUtility.ReleaseExcelObject(worksheet);
            CustomTestController.ControllerUtility.ReleaseExcelObject(workbook);
            CustomTestController.ControllerUtility.ReleaseExcelObject(excelApp);
            //TS_CustomTestController.GlobalConfig.ObjectRepositoryXml

            return;

        }
        public static Dictionary<string, string> ReplaceDictValues(TestCase TC, string PassValues, int CurrentRow)
        {
            Dictionary<string, string> DictValues = new Dictionary<string, string>();
            string Key, Value;
            foreach (string Target in PassValues.Split(','))
            {
                if (Target.Contains('['))
                    //Colctr = TC.HeaderInfo.IndexOf(Target.Substring(1,Target.Length-2));
                    Key = Target.Substring(1, Target.Length - 2);
                else
                    //Colctr = TC.HeaderInfo.IndexOf(Target.Substring(0, Target.Length));
                    Key = Target.Substring(0, Target.Length);

                //Key = Target.Substring(1, Target.Length - 2);
                Value = TC.TestRowList[CurrentRow].DataValue[Key];
                DictValues.Add(Key, Value);
            }
            return DictValues;
        }