示例#1
0
            public static SheetCtx New(Metadata meta, Dictionary <string, object> headerValues, AsyncExprCtx parent)
            {
                var sc     = meta.ctxHdr;
                var values = new object[sc.values.Count];

                sc.values.CopyTo(values, 0);
                var k2n = sc.name2ndx;

                values[k2n[HdrCellsRef.name]] = headerValues;
                {
                    var prevRowVals = new OPs.ListOfConst();
                    for (int i = meta.ctxRow.values.Count; i > 0; i--)
                    {
                        prevRowVals.Add(null);
                    }
                    // imitate empty zero row
                    prevRowVals[iRowVals]         = new Dictionary <string, object>();
                    values[k2n[PrevValsRef.name]] = prevRowVals;
                }
                // template metadata info context
                var aec = new AsyncExprCtx(sc.parent, sc.parent.values, parent);
                //
                var ctx = new SheetCtx(meta, values, aec);

                return(ctx.Condition ? ctx : null);
            }
示例#2
0
 public SheetCtx TryGetSheetCtx(AsyncExprCtx parent, Dictionary <string, object> headerValues, int nHeaderRows)
 {
     if (nHeaderRows == iHdrMaxUsedRow)
     {
         return(SheetCtx.New(this, headerValues, parent));
     }
     if (nHeaderRows > iHdrMaxUsedRow)
     {
         return(SheetCtx.Empty);
     }
     else
     {
         return(null);
     }
 }