/// <summary> /// Adds new excel sheet. /// </summary> /// <param name="reportRenderer">Report renderer.</param> /// <param name="reportRows">Report rows.</param> /// <param name="fillCellReferences">Fill cell references after sheet builded.</param> /// <returns>Builder instance.</returns> public ExcelReportBuilder AddReportSheet( IReportRenderer reportRenderer, IEnumerable <IPropertyContainer> reportRows, bool fillCellReferences = true) { reportRenderer.AssertArgumentNotNull(nameof(reportRenderer)); reportRows.AssertArgumentNotNull(nameof(reportRows)); var sheetMetadata = reportRenderer.GetMetadata <ExcelSheetMetadata>() ?? _defaultSheetMetadata; // Add a WorksheetPart to the WorkbookPart. WorkbookPart workbookPart = _documentContext.Document.WorkbookPart; uint sheetCount = workbookPart.GetSheetCount(); WorksheetPart worksheetPart = workbookPart.AddNewPart <WorksheetPart>($"sheet{sheetCount+1}"); var sheetContext = new SheetContext(_documentContext, worksheetPart, sheetMetadata, reportRenderer); AddSheet(sheetContext); AddSheetData(sheetContext, reportRows); if (fillCellReferences) { sheetContext.SheetElement.FillCellReferences(forceFill: fillCellReferences); } // External customization var configureSheet = ExcelSheetMetadata.ConfigureSheet.GetFirstDefinedValue( sheetContext.SheetMetadata, _documentMetadata); configureSheet?.Invoke(sheetContext); return(this); }
public ExcelReportBuilder AddSheetDataTBD( IReportRenderer reportRenderer, IEnumerable <IPropertyContainer> reportRows, bool fillCellReferences = true) { var sheetMetadata = reportRenderer.GetMetadata <ExcelSheetMetadata>() ?? _defaultSheetMetadata; // FIND ALL PARTS!!! WorkbookPart workbookPart = _documentContext.Document.WorkbookPart; WorksheetPart worksheetPart = workbookPart.GetPartsOfType <WorksheetPart>().FirstOrDefault(); Sheets sheets = workbookPart.Workbook.Sheets; var sheetContext = new SheetContext(_documentContext, worksheetPart, sheetMetadata, reportRenderer); sheetContext.SheetData = new SheetData(); return(this); }