Ejemplo n.º 1
0
        public static void WriteRow(this IExcelContext ctx, Collection <string> s)
        {
            var ws = ((ExcelContext)ctx).EnsureWorksheet();

            ctx.X = ctx.XStart;
            // execute-row-before
            var cr = ctx.ExecuteRow(When.Before, s, out Action after);

            if ((cr & CommandRtn.Skip) == CommandRtn.Skip)
            {
                return;
            }
            //
            for (var i = 0; i < s.Count; i++)
            {
                ctx.CsvX = i + 1;
                var v = s[i].ParseValue();
                // execute-col
                cr = ctx.ExecuteCol(s, v, out Action action);
                if ((cr & CommandRtn.Skip) == CommandRtn.Skip)
                {
                    continue;
                }
                if (ctx.Y > 0 && ctx.X > 0)
                {
                    if ((cr & CommandRtn.Formula) != CommandRtn.Formula)
                    {
                        ws.SetValue(ctx.Y, ctx.X, v);
                    }
                    else
                    {
                        ws.Cells[ctx.Y, ctx.X].Formula = s[i];
                    }
                    //if (v is DateTime) ws.Cells[ExcelCellBase.GetAddress(ctx.Y, ctx.X)].Style.Numberformat.Format = DateTimeFormatInfo.CurrentInfo.ShortDatePattern;
                }
                ctx.X += ctx.DeltaX;
                action?.Invoke();
            }
            after?.Invoke();
            ctx.Y += ctx.DeltaY;
            // execute-row-after
            ctx.ExecuteRow(When.After, s, out Action after2);
        }