public ITableRowBuilder <TSource> Apply() { int indexColumn = 0; var data = _dataFunc().ToList(); foreach (var item in data) { foreach (var row in _columnSources.GroupBy(x => x.Row).ToList()) { indexColumn = _tablePositionFinder.GetColumnForNewRow(); foreach (var column in row) { var columnOptionsBuilder = new ColumnOptionsBuilder <TSource>(); column.ActionOptions?.Invoke(columnOptionsBuilder); ColumnOptions options = columnOptionsBuilder; // set color if present function options.TextColor = columnOptionsBuilder.TextColorFunc?.Invoke(item) ?? options.TextColor; options.BackgroundColor = columnOptionsBuilder.BackgroundColorFunc?.Invoke(item) ?? options.BackgroundColor; var pos = _tablePositionFinder.GetNewPosition(indexColumn, options.Colspan, options.Rowspan); setExcelRange(column.SelectorFunc?.Invoke(item) ?? "", pos, options); indexColumn = indexColumn + options.Colspan; } } } return(this); }
public ITableColumnBuilder Column <T>(T value, Action <ColumnOptionsBuilder> action) { var columnOptionsBuilder = new ColumnOptionsBuilder(); action?.Invoke(columnOptionsBuilder); ColumnOptions options = columnOptionsBuilder; var pos = _rowBuilder.GetPositionForCurrentColumn(options.Colspan, options.Rowspan); setExcelRange(value, pos, options); _rowBuilder.NextColumn(options.Colspan); // next column in the current row return(this); }
public ITableColumnBuilder ColumnRange <T>(IEnumerable <T> values, Action <ColumnOptionsBuilder> action = null) { var columnOptionsBuilder = new ColumnOptionsBuilder(); action?.Invoke(columnOptionsBuilder); ColumnOptions options = columnOptionsBuilder; foreach (var val in values) { var pos = _rowBuilder.GetPositionForCurrentColumn(options.Colspan, options.Rowspan); setExcelRange(val, pos, options); _rowBuilder.NextColumn(options.Colspan); // next column in the current row } return(this); }
public IWorksheetFactory Text(string text, Position pos, Action <ColumnOptionsBuilder> action = null, double?rowHeight = null) { var columnOptionsBuilder = new ColumnOptionsBuilder(); action?.Invoke(columnOptionsBuilder); ColumnOptions options = columnOptionsBuilder; ; using (var range = ws.Cells[pos.Row, pos.Col, pos.Row + options.Rowspan - 1, pos.Col + options.Colspan - 1]) { range.Merge = options.Colspan > 1 || options.Rowspan > 1; range.Value = text; if (options.Width.HasValue) { ws.Column(pos.Col).Width = options.Width.Value; } if (rowHeight.HasValue) { ws.Row(pos.Row).Height = rowHeight.Value; } range.Style.WrapText = true; range.Style.HorizontalAlignment = options.HorizontalAlignment.ToEPPlusHorizontalAligment(); range.Style.VerticalAlignment = options.VerticalAlignment.ToEpPlusVerticalAlignment(); range.Style.Font.Bold = options.FontBold; range.Style.Font.Size = options.FontSize ?? 11; // border //range.Style.Border.BorderAround(OfficeOpenXml.Style.ExcelBorderStyle.Thin); if (options.VerticalText) { range.Style.TextRotation = 90; } range.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; range.Style.Font.Color.SetColor(options.TextColor); range.Style.Fill.BackgroundColor.SetColor(options.BackgroundColor); } return(this); }