/// <summary>
        /// Exporta todas as <see cref="System.Data.DataTable"/> de um <see cref="System.Data.DataSet"/> para um arquivo XLSX.
        /// Utiliza como modelo um arquivo XLSX passado como parâmetro.
        /// </summary>
        /// <param name="p_filename">Nome do arquivo XLSX a ser salvo.</param>
        /// <param name="p_templatename">Nome do arquivo XLSX a ser usado como template.</param>
        private void ExportXLSX(string p_filename, string p_templatename)
        {
            Spartacus.ThirdParty.SejExcel.OoXml v_package = null;
            Spartacus.ThirdParty.SejExcel.gSheet v_sheet;

            try
            {
                v_package = new Spartacus.ThirdParty.SejExcel.OoXml(p_templatename);

                if (v_package != null && v_package.sheets != null && v_package.sheets.Count > 0)
                {
                    this.v_progress.FireEvent("Spartacus.Utils.Excel", "ExportXLSX", 0.0, "Salvando arquivo " + p_filename);

                    this.v_numtotalrows = 0;
                    foreach (System.Data.DataTable v_table in this.v_set.Tables)
                        this.v_numtotalrows += v_table.Rows.Count;
                    this.v_inc = 100.0 / (double) this.v_numtotalrows;

                    this.v_perc = 0.0;
                    foreach (string v_key in v_package.sheets.Keys)
                    {
                        v_sheet = v_package.sheets[v_key];
                        if (v_sheet != null)
                            this.FillSheetWithDataTable(v_sheet, this.v_set.Tables[v_sheet.Name]);
                        else
                            throw new Spartacus.Utils.Exception("Arquivo {0} contem uma planilha invalida.", p_templatename);
                    }
                }
                else
                    throw new Spartacus.Utils.Exception("Arquivo {0} nao pode ser aberto, ou nao contem planilhas com dados.", p_templatename);

                v_package.Save(p_filename);

                this.v_progress.FireEvent("Spartacus.Utils.Excel", "ExportXLSX", 100.0, "Arquivo " + p_filename + " salvo.");
            }
            catch (Spartacus.Utils.Exception e)
            {
                throw new Spartacus.Utils.Exception("Erro ao salvar o arquivo {0}", e, p_filename);
            }
            catch (System.Exception e)
            {
                throw new Spartacus.Utils.Exception("Erro ao salvar o arquivo {0}", e, p_filename);
            }
            finally
            {
                if (v_package != null)
                {
                    v_package.Close();
                    v_package = null;
                }
            }
        }
        /// <summary>
        /// Importa todas as planilhas de um arquivo XLSX para várias <see cref="System.Data.DataTable"/> dentro de um <see cref="System.Data.DataSet"/>.
        /// </summary>
        /// <param name="p_filename">Nome do arquivo XLSX.</param>
        private void ImportXLSX(string p_filename)
        {
            Spartacus.ThirdParty.SejExcel.OoXml v_package = null;
            Spartacus.ThirdParty.SejExcel.gSheet v_sheet;

            try
            {
                v_package = new Spartacus.ThirdParty.SejExcel.OoXml(p_filename);

                if (v_package != null && v_package.sheets != null && v_package.sheets.Count > 0)
                {
                    foreach (string v_key in v_package.sheets.Keys)
                    {
                        v_sheet = v_package.sheets[v_key];
                        if (v_sheet != null)
                            this.v_set.Tables.Add(this.SheetToDataTable(v_package, v_sheet));
                    }
                }
                else
                    throw new Spartacus.Utils.Exception("Arquivo {0} nao pode ser aberto, ou nao contem planilhas com dados.", p_filename);
            }
            catch (Spartacus.Utils.Exception e)
            {
                throw new Spartacus.Utils.Exception("Erro ao carregar o arquivo {0}.", e, p_filename);
            }
            catch (System.Exception e)
            {
                throw new Spartacus.Utils.Exception("Erro ao carregar o arquivo {0}.", e, p_filename);
            }
            finally
            {
                if (v_package != null)
                {
                    v_package.Close();
                    v_package = null;
                }
            }
        }