protected virtual void DoWriteSpreadTable(Document book, SpreadTableOptions options, string htmlTable)
        {
            var range     = book.AppendHtmlText(htmlTable, DevExpress.XtraRichEdit.API.Native.InsertOptions.KeepSourceFormatting);
            var paragraph = book.Paragraphs.Append();

            book.CaretPosition = paragraph.Range.End;
            Script.Book.SCBook.ResetBookFormatting(book, book.CaretPosition);
            ScrollToCaret();

            Script.Book.SCBook.AddComments(book, range, options);

            WriteRangeToConsole(book, range);
        }
        protected virtual string GenerateTableHtml(SpreadTableOptions options)
        {
            string    htmlTable;
            IWorkbook workbook        = null;
            bool      disposeWorkbook = false;

            try
            {
                if (options._Spreadsheet != null)
                {
                    workbook = options._Spreadsheet.Workbook;
                }
                else if (!string.IsNullOrWhiteSpace(options._FileName))
                {
                    disposeWorkbook = true;

                    string fileName = Project.Current.MapPath(options._FileName);
                    if (!File.Exists(fileName))
                    {
                        throw new Exception($"File '{fileName}' does not exist.");
                    }

                    workbook = SpreadsheetUtils.CreateWorkbook();
                    workbook.LoadDocument(fileName);
                }
                else
                {
                    workbook = Host?.Spreadsheet?.Workbook;
                }

                if (workbook == null)
                {
                    throw new Exception("Spreadsheet is not specified");
                }

                var range = SpreadsheetUtils.GetWorkbookRange(workbook, options._TableName);

                var optionsHtml = new DevExpress.XtraSpreadsheet.Export.HtmlDocumentExporterOptions()
                {
                    SheetIndex = workbook.Sheets.IndexOf(range.Worksheet),
                    Range      = range.GetReferenceA1(),
                    Encoding   = Encoding.Unicode
                };

                using var stream = new MemoryStream();
                workbook.ExportToHtml(stream, optionsHtml);
                stream.Seek(0, SeekOrigin.Begin);

                using var reader = new StreamReader(stream, Encoding.UTF8);
                htmlTable        = reader.ReadToEnd();
            }
            finally
            {
                if (disposeWorkbook)
                {
                    workbook?.Dispose();
                }
            }

            return(htmlTable);
        }
        protected virtual void DoWriteSpreadTable(Spreadsheet.SCSpreadsheet spreadsheet, string fileName, string tableName, SpreadTableOptions options)
        {
            options ??= new SpreadTableOptions();

            options._Spreadsheet = spreadsheet;
            options._FileName    = fileName;
            options._TableName   = tableName;

            var book = options.Book?.Document ?? Document;

            string htmlTable = null;

            if ((spreadsheet == null && !string.IsNullOrWhiteSpace(fileName)) || spreadsheet != Host?.Spreadsheet)
            {
                htmlTable = GenerateTableHtml(options);
            }

            ExecuteSynchronized(() =>
            {
                if (htmlTable == null)
                {
                    htmlTable = GenerateTableHtml(options);
                }
                DoWriteSpreadTable(book, options, htmlTable);
            });
        }
 public SCBook WriteSpreadTable(Spreadsheet.SCSpreadsheet spreadsheet, string tableName, SpreadTableOptions options = null)
 {
     DoWriteSpreadTable(spreadsheet, null, tableName, options); return(this);
 }
 public SCBook WriteSpreadTable(string fileName, string tableName, SpreadTableOptions options = null)
 {
     DoWriteSpreadTable(null, fileName, tableName, options); return(this);
 }