コード例 #1
0
        public static object WRptGenerateReportExpr(CallExpr ce, Generator.Ctx callerCtx)//(object tmplFileName, Expr outputFilesExpr)
        {
            var ctx = new Generator.Ctx(callerCtx);

            ctx.CreateValue(FuncDefs_Core.stateTryGetConst, string.Empty);
            var templateFileName = Convert.ToString(Generator.Generate(ce.args[0], ctx));
            var outputFilesExpr  = ce.args[1];
            var sheetExprs       = new List <Expr>();
            int iSheet           = 0;
            int blockNum         = 0;

            var xr = new Xlsx.Reader(templateFileName);

            var lstStrTbl = new OPs.ListOfConst(xr.stringTable);

            ctx.CreateValue(XlsxR.Sheet.sStrTbl, lstStrTbl);

            foreach (var s in xr.EnumSheetInfos())
            {
                var cells     = new XlsxR.Sheet(s.sheetCells.ToArray(), xr.styles);
                var sheetExpr = cells.GetSheetExpr(s.sheetFile, ctx, outputFilesExpr, ref blockNum);
                sheetExprs.Add(new CallExpr(FuncDefs_Core._block,
                                            sheetExpr,
                                            XlsxR.PROGRESS("sheet", new ConstExpr(xr.sheetNames[iSheet]))
                                            ));
                iSheet++;
            }
            ;

            var loopRef = new ReferenceExpr("sheet");

            var res = CallExpr.Eval(
                CallExpr.let(new ConstExpr(XlsxR.Sheet.sTmplFiles), new ConstExpr(xr.xmlFiles)),
                CallExpr.let(new ConstExpr(XlsxR.Sheet.sStrTbl), new ConstExpr(lstStrTbl)),
                XlsxR.PROGRESS("sheets", new ConstExpr(new OPs.ListOfConst(xr.sheetNames))),
                new CallExpr(FuncDefs_Core._ForEach, loopRef, new ArrayExpr(sheetExprs), loopRef),
                new CallExpr((Fxy)WRptCopyFiles, new ConstExpr(xr.xmlFiles), outputFilesExpr),
                new CallExpr((Fx)WRptWriterDone, outputFilesExpr)
                );

            return(res);
        }
コード例 #2
0
        public static object WRptExploreDependencies(CallExpr ce, Generator.Ctx callerCtx)//(object tmplFileName, string[] forCells)
        {
            var ctx = new Generator.Ctx(callerCtx);

            ctx.CreateValue(FuncDefs_Core.stateTryGetConst, string.Empty);
            var templateFileName = Convert.ToString(Generator.Generate(ce.args[0], ctx));
            var sheets           = new Dictionary <string, XlsxR.Sheet>();

            var xr = new Xlsx.Reader(templateFileName);

            foreach (var s in xr.EnumSheetInfos())
            {
                sheets.Add(s.sheetName, new XlsxR.Sheet(s.sheetCells.ToArray(), xr.styles));
            }

            var forCells = Utils.AsIList(Generator.Generate(ce.args[1], ctx))
                           .Cast <object>()
                           .Select(o => Convert.ToString(o))
                           .ToArray();

            var code = DepsHelper.DumpDeps(ctx, sheets, xr.stringTable, forCells);

            return(code);
        }