private Cell ConstructCell(ColumnContext columnContext, IPropertyContainer source) { var propertyRenderer = columnContext.PropertyRenderer; string textValue = propertyRenderer.Render(source); var cellMetadata = propertyRenderer.GetMetadata <ExcelCellMetadata>(); CellValues dataType = ExcelMetadata.GetFirstDefinedValue( ExcelMetadata.DataType, cellMetadata, columnContext.ColumnMetadata, columnContext.SheetMetadata, columnContext.DocumentMetadata); Cell cell = ConstructCell(textValue, dataType); if (dataType == CellValues.Date) { cell.StyleIndex = _documentContext.GetCellFormatIndex("Date"); var isLocalTime = propertyRenderer.PropertyType == typeof(LocalTime) || propertyRenderer.PropertyType == typeof(LocalTime?); if (isLocalTime) { cell.StyleIndex = _documentContext.GetCellFormatIndex("Time"); } } // External customization var customizeFunc = cellMetadata?.GetValue(ExcelCellMetadata.ConfigureCell); if (customizeFunc != null) { customizeFunc.Invoke(new CellContext(columnContext, cellMetadata, cell)); } return(cell); }
public CellContext(ColumnContext columnContext, IExcelMetadata cellMetadata, Cell cell) { ColumnContext = columnContext.AssertArgumentNotNull(nameof(columnContext)); CellMetadata = cellMetadata.AssertArgumentNotNull(nameof(cellMetadata)); Cell = cell; }