/// <summary>
        /// Map header_hs values to Rate_Position_1,2,3... in "Dividend_DTC_Position" table
        /// Using [SortOrder] as reference to get the value
        /// </summary>
        /// <param name="header_hs">column header names in dataTable from excel</param>
        /// <returns>Dictionary with [Table_Column] index as key</returns>
        public Dictionary <int, List <string> > Get_colHeader_mapping(HashSet <string> header_hs)
        {
            Dictionary <int, List <string> > mapping = new Dictionary <int, List <string> >();

            if (header_hs == null)
            {
                return(mapping);
            }

            //Rate_Position_1,2,3 as key
            Dictionary <int, DTC_Position_Headers> dic = new Dictionary <int, DTC_Position_Headers>();

            foreach (DTC_Position_Headers mi in this.all_headers_list)
            {
                dic[mi.TableCol_index] = mi;
            }

            List <DTC_Position_Headers> distinct_TC_list = new List <DTC_Position_Headers>();//we may have duplicate [Table_Column] in [DTC_Position_Headers]

            foreach (DTC_Position_Headers mi in dic.Values)
            {
                distinct_TC_list.Add(mi);
            }
            distinct_TC_list.Sort((m1, m2) => (m1.SortOrder.Value - m2.SortOrder.Value));//excel file is created based on sort order

            string header_keyWord = "Option";

            foreach (string header in header_hs)
            {
                List <string> word_list = HssStr.Str_to_wordList(header);
                if (word_list.Count < 2)
                {
                    continue;
                }
                if (!word_list[0].Equals(header_keyWord, StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }

                int index = -1;
                if (!int.TryParse(word_list[1], out index))
                {
                    continue;
                }

                if (index <= 0 || index > distinct_TC_list.Count)
                {
                    continue;
                }
                else
                {
                    --index;
                }

                int keyVal = distinct_TC_list[index].TableCol_index;
                if (mapping.ContainsKey(keyVal))
                {
                    mapping[keyVal].Add(header);
                }
                else
                {
                    List <string> tempList = new List <string>();
                    tempList.Add(header);
                    mapping[keyVal] = tempList;
                }
            }

            return(mapping);
        }