/// <summary>
        /// Preenche a planilha do template com os dados de uma <see cref="System.Data.DataTable"/>.
        /// </summary>
        /// <param name="p_sheet">Planilha do template.</param>
        /// <param name="p_table">Dados a serem preenchidos.</param>
        private void FillSheetWithDataTable(Spartacus.ThirdParty.SejExcel.gSheet p_sheet, System.Data.DataTable p_table)
        {
            Spartacus.Utils.Excel.Sheet v_info;
            string[] v_cells;
            string v_value;
            int k;

            v_info = new Spartacus.Utils.Excel.Sheet();
            v_info.v_name = p_sheet.Name;
            v_info.v_data = p_table;
            v_info.v_fixedrows = 0;

            v_cells = p_sheet.Row(0);
            if (int.TryParse(v_cells[0], out k))
                v_cells = p_sheet.Row(k);
            else
            {
                k = 1;
                v_cells = p_sheet.Row(k);
            }

            v_info.v_mapping = new System.Collections.Generic.Dictionary<int, string>();
            if (v_cells != null)
            {
                for (int i = 0; i < v_cells.Length; i++)
                {
                    if (!string.IsNullOrEmpty(v_cells[i]) && v_cells[i].Length > 1)
                        v_value = v_cells[i].Substring(0, 1);
                    else
                        v_value = v_cells[i];
                    if (v_value == "*")
                        v_info.v_mapping[i] = v_cells[i].Replace("*", "");
                }
                if (v_info.v_mapping.Count > 0)
                    v_info.v_fixedrows = k;
            }

            v_info.v_currentrow = v_info.v_fixedrows + 1;

            this.v_sheets.Add(v_info);

            p_sheet.SetSource(OnDataRow, v_info.v_fixedrows);
        }