public void DataLine <T>(ExcelWorksheet ws, IFormatMapping <T> formatMapper, T entity, ref int row) // where T : IRateConvertable { var keys = formatMapper.Keys; var i = 0; for (i = 0; i < keys.Count; i++) { (var key, var argsFunc, var func, var formatOptions) = keys[i]; var value = FormatValue(entity, func(entity), formatOptions); ws.Cells[row, i + 1].Value = value; } var validable = entity as IValidable; if (validable != null) { if (!validable.IsValid) { ws.Row(row).Style.Fill.PatternType = ExcelFillStyle.Solid; ws.Row(row).Style.Fill.BackgroundColor.SetColor(Color.Yellow); ws.Cells[row, i + 1].Value = validable.Error; } } row++; }
public void TotalLine <T>(ExcelWorksheet ws, IFormatMapping <T> formatMapper, IEnumerable <T> entities, ref int row) { if (formatMapper.TotalKeys == null || formatMapper.TotalKeys.Count == 0) { return; } ws.Row(row).Style.Font.Bold = true; ws.Cells[row, 1].Value = localizer.T("Total"); foreach (var totalKey in formatMapper.TotalKeys) { (var key, var func) = totalKey; var totalValue = Math.Round(entities.Sum(func), 2); var idxOfTotal = formatMapper.GetKeyIndex(key); if (idxOfTotal < 0) { continue; } ws.Cells[row, idxOfTotal + 1].Formula = "=SUM(" + ws.Cells[1, idxOfTotal + 1].Address + ":" + ws.Cells[row - 1, idxOfTotal + 1].Address + ")"; // ws.Cells[row, idxOfTotal+1].Value = totalValue; } row++; }
public void WriteHeader <T>(ExcelWorksheet ws, IFormatMapping <T> formatMapper, Profile profile, ref int row) // where T : IRateConvertable { var keys = formatMapper.Keys; ws.Row(row).Style.Font.Bold = true; for (var i = 0; i < keys.Count; i++) { ws.Column(i + 1).Width = 15; (var key, var argsFunc, var func, var formatOptions) = keys[i]; ws.Column(i + 1).Width = formatOptions.Width ?? 15; var args = argsFunc != null?argsFunc.Select(x => x(profile)).ToArray() : null; ws.Cells[row, i + 1].Value = localizer.T <T>(key, args); } row++; }