예제 #1
0
        private static void exportFile(string excelPath, string outputDir, TableExportFormat fmt)
        {
            var data = TableExcelReader.loadFromExcel(excelPath);

            switch (fmt)
            {
            case TableExportFormat.Dat:
            {
                var exportPath = Path.Combine(outputDir, string.Format("{0}.exdat", Path.GetFileNameWithoutExtension(excelPath)));
                TableExcelExportDat.exportExcelFile(data, exportPath);
            }
            break;

            case TableExportFormat.Json:
            {
                var exportPath = Path.Combine(outputDir, string.Format("{0}.json", Path.GetFileNameWithoutExtension(excelPath)));
                TableExcelExportJson.exportExcelFile(data, exportPath);
            }
            break;

            case TableExportFormat.Xml:
            {
                var exportPath = Path.Combine(outputDir, string.Format("{0}.xml", Path.GetFileNameWithoutExtension(excelPath)));
                TableExcelExportXml.exportExcelFile(data, exportPath);
            }
            break;

            case TableExportFormat.Lua:
            {
                var exportPath = Path.Combine(outputDir, string.Format("{0}.lua", Path.GetFileNameWithoutExtension(excelPath)));
                TableExcelExportLua.exportExcelFile(data, exportPath);
            }
            break;
            }
        }
예제 #2
0
        private void btnGenAll_Clicked(object sender, RoutedEventArgs e)
        {
            string            excelDir  = AppData.Config.ExcelDir;
            string            exportDir = AppData.Config.ExportDir;
            TableExportFormat fmt       = AppData.Config.ExportFormat;

            if (string.IsNullOrEmpty(excelDir) || !Directory.Exists(excelDir))
            {
                Log.Err("请选择合法的Excel配置目录!");
                return;
            }

            if (string.IsNullOrEmpty(exportDir) || !Directory.Exists(exportDir))
            {
                Log.Err("请选择合法的导出目录!");
                return;
            }

            if (fmt == TableExportFormat.Unknown)
            {
                Log.Err("请选择导出数据格式!");
                return;
            }

            var excels = tree.AllExcels.ToList();

            if (excels.Count == 0)
            {
                Log.Wrn("您选择的配置目录中不包含任何Excel文件! 目录:{0}", excelDir);
                return;
            }

            Log.Msg("=================================================");
            int succ = 0, failed = 0;

            foreach (var filePath in excels)
            {
                bool succeed = _genSingleFileImpl(filePath, exportDir, fmt);

                if (succeed)
                {
                    succ++;
                }
                else
                {
                    failed++;
                }
            }

            if (failed > 0)
            {
                Log.Err("========== {0} 个成功, {1} 个失败 ========== ", succ, failed);
            }
            else
            {
                Log.Suc("========== {0} 个成功 ========== ", succ);
            }
        }
예제 #3
0
        private void _genSingleFileImpl(string filePath, string exportDir, TableExportFormat fmt)
        {
            Log.Msg("正在分析 {0}", filePath);
            try
            {
                TableExcelData data = TableExcelReader.loadFromExcel(filePath);
                string         errmsg;
                if (!data.checkUnique(out errmsg))
                {
                    Log.Wrn(errmsg);
                }
                switch (fmt)
                {
                case TableExportFormat.Json:
                {
                    var exportPath = Path.Combine(exportDir, string.Format("{0}.json", Path.GetFileNameWithoutExtension(filePath)));
                    TableExcelExportJson.exportExcelFile(data, exportPath);
                }
                break;

                    /*
                     * case TableExportFormat.Dat:
                     * {
                     *  var exportPath = Path.Combine(exportDir, string.Format("{0}.exdat", Path.GetFileNameWithoutExtension(filePath)));
                     *  TableExcelExportDat.exportExcelFile(data, exportPath);
                     * }
                     * break;
                     * case TableExportFormat.Xml:
                     * {
                     *  var exportPath = Path.Combine(exportDir, string.Format("{0}.xml", Path.GetFileNameWithoutExtension(filePath)));
                     *  TableExcelExportXml.exportExcelFile(data, exportPath);
                     * }
                     * break;
                     * case TableExportFormat.Lua:
                     * {
                     *  var exportPath = Path.Combine(exportDir, string.Format("{0}.lua", Path.GetFileNameWithoutExtension(filePath)));
                     *  TableExcelExportLua.exportExcelFile(data, exportPath);
                     * }
                     * break;
                     */
                }
                //生成.h文件
                {
                    var exportPath = Path.Combine(exportDir, string.Format("{0}.h", Path.GetFileNameWithoutExtension(filePath)));
                    var outCppData = CreateTableCpp.toFileData(Path.GetFileNameWithoutExtension(filePath), data.Headers);
                    File.WriteAllBytes(exportPath, Encoding.UTF8.GetBytes(outCppData));
                }

                Log.Msg("生成成功");
            }
            catch (System.Exception ex)
            {
                Log.Err(ex.Message);
            }
        }
예제 #4
0
        private void _genSingleFileImpl(string filePath, string exportDir, TableExportFormat fmt)
        {
            Log.Msg("正在分析 {0}", filePath);
            try
            {
                TableExcelData data = TableExcelReader.loadFromExcel(filePath);
                string         errmsg;
                if (!data.checkUnique(out errmsg))
                {
                    Log.Wrn(errmsg);
                }
                switch (fmt)
                {
                case TableExportFormat.Dat:
                {
                    var exportPath = Path.Combine(exportDir, string.Format("{0}.exdat", Path.GetFileNameWithoutExtension(filePath)));
                    TableExcelExportDat.exportExcelFile(data, exportPath);
                }
                break;

                case TableExportFormat.Json:
                {
                    var exportPath = Path.Combine(exportDir, string.Format("{0}.json", Path.GetFileNameWithoutExtension(filePath)));
                    TableExcelExportJson.exportExcelFile(data, exportPath);
                }
                break;

                case TableExportFormat.Xml:
                {
                    var exportPath = Path.Combine(exportDir, string.Format("{0}.xml", Path.GetFileNameWithoutExtension(filePath)));
                    TableExcelExportXml.exportExcelFile(data, exportPath);
                }
                break;

                case TableExportFormat.Lua:
                {
                    var exportPath = Path.Combine(exportDir, string.Format("{0}.lua", Path.GetFileNameWithoutExtension(filePath)));
                    TableExcelExportLua.exportExcelFile(data, exportPath);
                }
                break;
                }
                Log.Msg("生成成功");
            }
            catch (System.Exception ex)
            {
                Log.Err(ex.Message);
            }
        }
예제 #5
0
        public void genSingleFile(string filePath, string exportDir, TableExportFormat fmt)
        {
            if (!File.Exists(filePath))
            {
                Log.Err("源文件不存在! {0}", filePath);
                return;
            }

            if (!Directory.Exists(exportDir))
            {
                Log.Err("导出目录不存在! {0}", exportDir);
                return;
            }

            if (fmt == TableExportFormat.Unknown)
            {
                Log.Err("导出数据格式不合法!");
                return;
            }

            Log.Msg("=================================================");
            _genSingleFileImpl(filePath, exportDir, fmt);
        }
예제 #6
0
        private bool _genSingleFileImpl(string filePath, string exportDir, TableExportFormat fmt)
        {
            Log.Msg("----------正在导出 {0}----------", filePath);
            string exportPath = exportDir;

            try
            {
                TableExcelData data = TableExcelReader.loadFromExcel(filePath);
                string         errmsg;
                if (!data.checkUnique(out errmsg))
                {
                    throw new System.Exception(errmsg);
                }
                if (!data.checkDataType(out errmsg))
                {
                    throw new System.Exception(errmsg);
                }
                switch (fmt)
                {
                case TableExportFormat.Dat:
                {
                    exportPath = Path.Combine(exportDir, string.Format("{0}.exdat", Path.GetFileNameWithoutExtension(filePath)));
                    TableExcelExportDat.exportExcelFile(data, exportPath);
                }
                break;

                case TableExportFormat.Json:
                {
                    // export json
                    exportPath = Path.Combine(exportDir, string.Format("{0}.json", Path.GetFileNameWithoutExtension(filePath)));
                    TableExcelExportJson.exportExcelFile(data, exportPath);

                    // export cs
                    string fileName = Path.GetFileNameWithoutExtension(filePath);
                    fileName   = fileName.Substring(0, 1).ToUpper() + fileName.Substring(1);
                    exportPath = Path.Combine(exportDir, string.Format($"{ fileName }.cs"));
                    TableExcelExportCs.ExportExcelFile(data, exportPath);

                    // export csEx
                    exportPath = Path.Combine(exportDir, string.Format($"{ fileName }.Ex.cs"));
                    if (!File.Exists(exportPath))
                    {
                        TableExcelExportCsEx.ExportExcelFile(data, exportPath, fileName);
                    }
                }
                break;

                case TableExportFormat.Xml:
                {
                    exportPath = Path.Combine(exportDir, string.Format("{0}.xml", Path.GetFileNameWithoutExtension(filePath)));
                    TableExcelExportXml.exportExcelFile(data, exportPath);
                }
                break;

                case TableExportFormat.Lua:
                {
                    exportPath = Path.Combine(exportDir, string.Format("{0}.lua", Path.GetFileNameWithoutExtension(filePath)));
                    if (AppData.Config.FitUnity3D == true)
                    {
                        exportPath += ".txt";
                    }
                    TableExcelExportLua.exportExcelFile(data, exportPath);
                }
                break;
                }
                Log.Msg("----------导出成功 {0} ----------", exportPath);
                return(true);
            }
            catch (System.Exception ex)
            {
                Log.Err(ex.Message);
                Log.Err("----------导出失败 {0} ----------", exportPath);
                return(false);
            }
        }
예제 #7
0
 public bool ExportTable(ddl worker, Type tabletype, string dest_directory, TableExportFormat format, string delimiter)
 {
     try
     {
         if (format == TableExportFormat.RawDump)
         {
             string dest_file = Path.Combine(dest_directory, tabletype.Name + ".shermtable");
             using (var comp = new FileStream(dest_file, FileMode.Create, FileAccess.Write))
             {
                 /* export a single table to the destination directory */
                 ITable table = (ITable)Activator.CreateInstance(tabletype);
                 using (GZipStream zip = new GZipStream(comp, CompressionMode.Compress))
                 {
                     table.SerializeContent(worker, zip);
                     comp.Flush();
                 }
             }
         }
         else if (format == TableExportFormat.CSV)
         {
             /* [dlatikay 20180102] default delimiter is the tabulator */
             ITable table = (ITable)Activator.CreateInstance(tabletype);
             if (String.IsNullOrWhiteSpace(delimiter))
             {
                 delimiter = "\t";
             }
             using (var t = table.DbSelectAll(worker))
             {
                 using (var comp = new FileStream(dest_directory, FileMode.Create, FileAccess.Write))
                 {
                     using (var sw = new StreamWriter(comp, System.Text.UnicodeEncoding.UTF8))
                     {
                         var first = true;
                         var any   = false;
                         foreach (DataColumn col in t.Columns)
                         {
                             if (first)
                             {
                                 first = false;
                             }
                             else
                             {
                                 sw.Write(delimiter);
                             }
                             sw.Write(col.ColumnName);
                             any = true;
                         }
                         if (any)
                         {
                             sw.Write(Environment.NewLine);
                         }
                         foreach (DataRow dr in t.Rows)
                         {
                             any   = false;
                             first = true;
                             foreach (DataColumn col in t.Columns)
                             {
                                 if (first)
                                 {
                                     first = false;
                                 }
                                 else
                                 {
                                     sw.Write(delimiter);
                                 }
                                 sw.Write(dr[col.ColumnName].ToString());
                                 any = true;
                             }
                             if (any)
                             {
                                 sw.Write(Environment.NewLine);
                             }
                         }
                     }
                 }
             }
         }
         else
         {
             throw new NotSupportedException("Table/view export format \"" + format.ToString() + "\"");
         }
         /* succeeded */
         return(true);
     }
     catch (Exception ex)
     {
         /* some error */
         OnLoadError(tabletype.Name, ex.ToString());
         return(false);
     }
 }