コード例 #1
0
        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++;
        }
コード例 #2
0
        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++;
        }
コード例 #3
0
        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++;
        }