/// <summary>
        /// Creates new empty excel document and builder.
        /// </summary>
        /// <param name="outFilePath">Output file name.</param>
        /// <param name="documentMetadata">Default excel document metadata.</param>
        /// <returns>Builder instance.</returns>
        public static ExcelReportBuilder Create(string outFilePath, ExcelDocumentMetadata documentMetadata = null)
        {
            outFilePath.AssertArgumentNotNull(nameof(outFilePath));

            SpreadsheetDocument document = SpreadsheetDocument.Create(outFilePath, SpreadsheetDocumentType.Workbook);
            var builder = new ExcelReportBuilder(document, documentMetadata);

            return(builder);
        }
        /// <summary>
        /// Creates new empty excel document and builder.
        /// </summary>
        /// <param name="targetStream">Output stream.</param>
        /// <param name="documentMetadata">Default excel document metadata.</param>
        /// <returns>Builder instance.</returns>
        public static ExcelReportBuilder Create(Stream targetStream, ExcelDocumentMetadata documentMetadata = null)
        {
            targetStream.AssertArgumentNotNull(nameof(targetStream));

            SpreadsheetDocument document = SpreadsheetDocument.Create(targetStream, SpreadsheetDocumentType.Workbook);
            var builder = new ExcelReportBuilder(document, documentMetadata);

            return(builder);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ExcelReportBuilder"/> class.
 /// </summary>
 /// <param name="document">Excel document.</param>
 /// <param name="documentMetadata">Default excel document metadata.</param>
 public ExcelReportBuilder(SpreadsheetDocument document, ExcelDocumentMetadata documentMetadata)
 {
     _documentMetadata = documentMetadata ?? new ExcelDocumentMetadata();
     _documentContext  = InitDocument(document.AssertArgumentNotNull(nameof(document)));
 }