private void AddColumns(DataTable dataTable, ICollection <WorksheetColumnDefinition> columns) { foreach (var column in columns) { WorksheetColumnDefinition columnDefinition = column; dataTable.Columns.Add(columnDefinition.ColumnName, columnDefinition.DataType); } }
public bool AddDataToWorksheet <T>(string worksheetName, ICollection <T> reportables) { WorksheetDefinition worksheetDefinition; if (WorkSheets.ContainsKey(worksheetName)) { worksheetDefinition = WorkSheets.GetValueOrDefault(worksheetName); } else { return(false); } foreach (T entity in reportables) { DataRow row = worksheetDefinition.Worksheet.NewRow(); List <DataRow> rows = new List <DataRow>() { row }; foreach (var column in worksheetDefinition.WorksheetColumns.Columns) { WorksheetColumnDefinition columnDefinition = column; if (columnDefinition.DataMapping == null) { return(false); } dynamic innerEntity = ExpressionHelper.GetInnerCollection(entity, columnDefinition.InnerCollection); if (!(innerEntity is IEnumerable)) { row[columnDefinition.ColumnName] = ExpressionHelper.GetValue(innerEntity, columnDefinition); } else { IEnumerable enumerable = (IEnumerable)innerEntity; rows.Remove(row); foreach (dynamic item in enumerable) { DataRow newRow = worksheetDefinition.Worksheet.NewRow(); newRow.ItemArray = row.ItemArray; newRow[columnDefinition.ColumnName] = ExpressionHelper.GetValue(item, columnDefinition); rows.Add(newRow); } } } rows.ForEach(r => worksheetDefinition.Worksheet.Rows.Add(r)); } return(true); }
public static object GetValue <T>(T entity, WorksheetColumnDefinition columnDefinition) { Delegate compiledExpression = CompileExpression(typeof(T), columnDefinition.DataMapping.Body); return(compiledExpression.DynamicInvoke(entity)); }