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); }