예제 #1
0
        /// <summary>
        /// 解析文件夹下的Excel文件
        /// </summary>
        /// <param name="folderPath">Excel路径</param>
        /// <param name="dllSavePath">输出dll路径</param>
        /// <param name="xmlSavePath">输出xml路径</param>
        /// <param name="jsonSavePath">输出json路径</param>
        public void DoParseFolder(string folderPath, string dllSavePath, string xmlSavePath, string jsonSavePath)
        {
            Dictionary <string, string> classDic = new Dictionary <string, string>();

            foreach (var file in Directory.GetFiles(folderPath))
            {
                if (file.EndsWith(".xlsx"))
                {
                    ExcelParse parser = new ExcelParse(file);
                    parser.DoParse(ref classDic, xmlSavePath, jsonSavePath);
                }
            }

            var assemblyText = Resource1.ClassTemplete;

            assemblyText += "\r\n{\r\n";
            assemblyText += Resource1.ScriptBase;
            assemblyText += "\r\n\r\n";

            foreach (var classTextkv in classDic)
            {
                assemblyText += classTextkv.Value;
                assemblyText += "\r\n";
            }

            assemblyText += "\r\n}\r\n";

            DynamicCompile compile = new DynamicCompile();

            compile.Compile(assemblyText, dllSavePath + "\\TableConfig.dll");
        }
예제 #2
0
        /// <summary>
        /// 解析Excel文档
        /// </summary>
        public void DoParseTest(string outDllFileName)
        {
            var sheetNames = GetSheets();
            Dictionary <string, List <ExcelHeader> > headerDic = new Dictionary <string, List <ExcelHeader> >();
            Dictionary <string, string> classDic = new Dictionary <string, string>();

            foreach (var sheetName in sheetNames)
            {
                try
                {
                    var headers = GetHeader(sheetName);
                    headerDic[sheetName] = headers;

                    GenarateCSharpCode gc = new GenarateCSharpCode();
                    var classText         = gc.GenarateClass(sheetName, headers);
                    classDic.Add(sheetName, classText);
                    var indexValues = SaveXMLData(sheetName, headers, sheetName + ".xml", sheetName + ".json");

                    if (sheetName == "SystemConfig")
                    {
                        var enumText = gc.GenarateEnum(sheetName, indexValues);
                        classDic.Add(nameof(Enum) + sheetName, enumText);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Sheet [" + sheetName + "] header invalid");
                }
            }

            var assemblyText = Resource1.ClassTemplete;

            assemblyText += "\r\n{\r\n";
            assemblyText += Resource1.ScriptBase;
            assemblyText += "\r\n\r\n";

            foreach (var classTextkv in classDic)
            {
                assemblyText += classTextkv.Value;
                assemblyText += "\r\n";
            }

            assemblyText += "\r\n}\r\n";

            DynamicCompile compile = new DynamicCompile();
            var            asm     = compile.Compile(assemblyText, outDllFileName);

            //var type = asm.GetType("ExcelTables." + sheetName);
            //SaveXMLData(sheetName, headers, type, sheetName + ".xml");
        }