Exemple #1
0
    public static void ExportToTxt(TableInfo tableInfo)
    {
        string errorString = null;

        if (AppValues.MergeTableList.ContainsKey(tableInfo.TableName))
        {
            TableExportToTxtHelper.ExportTableToTxt2(tableInfo, out errorString);
            if (errorString != null)
            {
                AppLog.LogErrorAndExit(errorString);
            }
            else
            {
                AppLog.Log("合并表导出txt成功");
            }
            return;
        }

        // 对表格按默认方式导出
        if (TableAnalyzeHelper.GetOneConfigData(tableInfo, TxtStruct.Excel_Config_ExportTxt, ref TxtStruct.IsExportTxt))
        {
            // 对表格按默认方式导出
            if (TxtStruct.IsExportTxt == true)
            {
                TableExportToTxtHelper.ExportTableToTxt(tableInfo, out errorString);
                if (errorString != null)
                {
                    AppLog.LogErrorAndExit(errorString);
                }
                else
                {
                    AppLog.Log("按默认方式导出txt成功");
                }
            }
        }
        else
        {
            // 对表格按默认方式导出
            if (TxtStruct.IsExport == true)
            {
                TableExportToTxtHelper.ExportTableToTxt(tableInfo, out errorString);
                if (errorString != null)
                {
                    AppLog.LogErrorAndExit(errorString);
                }
                else
                {
                    AppLog.Log("按默认方式导出txt成功");
                }
            }
        }
    }
    public static void ExportToHrl(TableInfo tableInfo)
    {
        string errorString = null;

        // 对表格按默认方式导出
        if (TableAnalyzeHelper.GetOneConfigData(tableInfo, HrlStruct.Excel_Config_ExportHrl, ref HrlStruct.IsExportHrl))
        {
            // 对表格按默认方式导出
            if (HrlStruct.IsExportHrl == true)
            {
                TableAnalyzeHelper.GetOneConfigData(tableInfo, HrlStruct.Excel_Config_HrlTopInfo, ref HrlStruct.HrlTopInfo);
                TableAnalyzeHelper.GetOneConfigData(tableInfo, HrlStruct.Excel_Config_HrlEndInfo, ref HrlStruct.HrlEndInfo);
                TableExportToHrlHelper.ExportTableToHrl(tableInfo, out errorString);
                if (errorString != null)
                {
                    AppLog.LogErrorAndExit(errorString);
                }
                else
                {
                    AppLog.Log("按默认方式导出Hrl成功");
                }
            }
        }
        else
        {
            // 对表格按默认方式导出
            if (HrlStruct.IsExport == true)
            {
                TableExportToHrlHelper.ExportTableToHrl(tableInfo, out errorString);
                if (errorString != null)
                {
                    AppLog.LogErrorAndExit(errorString);
                }
                else
                {
                    AppLog.Log("按默认方式导出Hrl成功");
                }
            }
        }
    }
    public static bool ExportTableToErlang(TableInfo tableInfo, out string errorString)
    {
        StringBuilder content = new StringBuilder();

        // 当前缩进量
        int currentLevel = 1;

        // 判断是否设置要将主键列的值作为导出的table中的元素
        bool isAddKeyToLuaTable = tableInfo.TableConfigData2 != null && tableInfo.TableConfigData2.ContainsKey(ErlangStruct.Excel_Config_AddKeyToErlangTable) && tableInfo.TableConfigData2[ErlangStruct.Excel_Config_AddKeyToErlangTable].Count > 0 && "true".Equals(tableInfo.TableConfigData2[ErlangStruct.Excel_Config_AddKeyToErlangTable][0], StringComparison.CurrentCultureIgnoreCase);

        //if(tableInfo.ExcelName== "ad_watch_videoType_info-视频类型信息")
        //{
        //    errorString = "该表没有字段";
        //}
        // 逐行读取表格内容生成erlang table
        List <FieldInfo> allField = tableInfo.GetAllFieldInfo();//获取所有字段,第2行没有定义也获取
        int dataCount             = tableInfo.GetKeyColumnFieldInfo().Data.Count;

        for (int row = 0; row < dataCount; ++row)
        {
            // 将主键列作为key生成

            FieldInfo keyColumnField = allField[0];
            if (keyColumnField.DatabaseFieldName == null)
            {
                errorString = null;
                return(true);
            }

            if (keyColumnField.DataType == DataType.Int || keyColumnField.DataType == DataType.Long)
            {
                content.Append("get(").Append(keyColumnField.Data[row]).Append(")->");
            }
            // 注意:像“1_2”这样的字符串作为table的key必须加[""]否则lua认为是语法错误
            else if (keyColumnField.DataType == DataType.String)
            {
                string FieldString = keyColumnField.Data[row].ToString();// _GetOneField(keyColumnField, row, currentLevel, out errorString);
                content.Append("get(").Append(FieldString.ToLower()).Append(")->");
            }
            else
            {
                errorString = "用ExportTableToErlang导出不支持的主键列数据类型";
                AppLog.LogErrorAndExit(errorString);
                return(false);
            }
            // content.Append(_GetErlangIndentation(currentLevel));
            content.AppendLine(" #{");
            //  ++currentLevel;

            // 如果设置了要将主键列的值作为导出的table中的元素
            //if (isAddKeyToLuaTable == true)
            //{
            //    content.Append(_GetErlangIndentation(currentLevel));
            //    content.Append(keyColumnField.FieldName);
            //    content.Append(" = ");
            //    if (keyColumnField.DataType == DataType.Int || keyColumnField.DataType == DataType.Long)
            //        content.Append(keyColumnField.Data[row]);
            //    else if (keyColumnField.DataType == DataType.String)
            //        content.AppendFormat("\"{0}\"", keyColumnField.Data[row]);

            //    content.AppendLine(",");
            //}

            // 将其他列依次作为value生成
            int i = 0;
            for (int column = 1; column < allField.Count; ++column)
            {
                string oneFieldString = _GetOneField(allField[column], row, currentLevel, out errorString);
                if (oneFieldString == null)
                {
                    continue;
                }
                else
                {
                    i++;
                }
                // if (i > 1)
                // {
                if (ErlangStruct.ExportErlangIsFormat == true)
                {
                    content.Append(_GetErlangIndentation(currentLevel));
                }
                // }

                if (errorString != null)
                {
                    errorString = string.Format("导出表格{0}失败,", tableInfo.TableName) + errorString;
                    return(false);
                }
                else
                {
                    if (i > 1)
                    {
                        content.Append(",");
                    }

                    if (ErlangStruct.ExportErlangIsFormat == true)
                    {
                        content.Append("'").Append(allField[column].DatabaseFieldName.ToLower()).Append("' => ").AppendLine(oneFieldString);
                    }
                    else
                    {
                        content.Append("'").Append(allField[column].DatabaseFieldName.ToLower()).Append("' => ").Append(oneFieldString);
                    }
                    //content.AppendLine(",");
                }
            }

            // 一行数据生成完毕后添加右括号结尾等
            // --currentLevel;
            // content.Append(_GetErlangIndentation(currentLevel));
            //content.Remove(content.Length - 3, 1);
            content.AppendLine("};");
        }

        string exportString2 = content.ToString();
        //if (ErlangStruct.ExportErlangIsFormat == false)
        //{
        //    StringBuilder stringBuilder2 = new StringBuilder();
        //    for (int i = 0; i < exportString2.Length; ++i)
        //    {
        //        char c = exportString2[i];

        //        if (c == '\n' || c == '\r')
        //        {
        //        }
        //        else
        //            stringBuilder2.Append(c);
        //    }
        //    exportString2 = stringBuilder2.ToString();
        //}
        StringBuilder stringBuilder = new StringBuilder();
        // 生成数据内容开头
        string erlangTableName = tableInfo.TableName;

        TableAnalyzeHelper.GetOneConfigData(tableInfo, ErlangStruct.Excel_Config_ExportErlangOtherName, ref erlangTableName);

        stringBuilder.AppendLine("%%--- coding:utf-8 ---");
        stringBuilder.Append("-module(").Append(ErlangStruct.ExportNameBeforeAdd + erlangTableName).AppendLine(").");
        stringBuilder.AppendLine(@"-export([get/1,get_list/0]).");
        stringBuilder.Append(exportString2);

        // 生成数据内容结尾
        stringBuilder.AppendLine("get(_N) -> false.");
        stringBuilder.AppendLine("get_list() ->");
        stringBuilder.Append("\t[");
        for (int i = 0; i < dataCount; i++)
        {
            string FieldString = allField[0].Data[i].ToString();// _GetOneField(allField[0], i, currentLevel, out errorString);
            stringBuilder.Append(FieldString.ToLower()).Append(",");
        }
        stringBuilder.Remove(stringBuilder.Length - 1, 1);
        stringBuilder.AppendLine("].");

        string exportString = stringBuilder.ToString();

        //if (ErlangStruct.IsNeedColumnInfo == true)
        //    exportString = _GetColumnInfo(tableInfo) + exportString;

        // 保存为erlang文件
        if (SaveErlang.SaveErlangFile(tableInfo.ExcelName, ExcelMethods.GetSaveTableName(erlangTableName), exportString) == true)
        {
            errorString = null;
            return(true);
        }
        else
        {
            errorString = "保存为erlang文件失败\n";
            return(false);
        }
    }
    public static void ExportToLua(TableInfo tableInfo)
    {
        string errorString = null;

        if (LuaStruct.ExportLuaIsFormat == false)
        {
            LuaStruct.IndentationString = "";
        }
        // 判断是否设置要是否要导出null字段
        TableAnalyzeHelper.GetOneConfigData(tableInfo, LuaStruct.Excel_Config_NotExportLuaNil, ref LuaStruct.IsExportLuaNilConfig);

        //if (tableInfo.TableConfig != null && tableInfo.TableConfig.ContainsKey(LuaStruct.Excel_Config_NotExportLuaNil))
        //{
        //    if (tableInfo.TableConfig[LuaStruct.Excel_Config_NotExportLuaNil].Count > 0)
        //    {
        //        if ("false".Equals(tableInfo.TableConfig[LuaStruct.Excel_Config_NotExportLuaNil][0], StringComparison.CurrentCultureIgnoreCase))
        //        {
        //            LuaStruct.IsExportLuaNilConfig = false;
        //        }
        //    }
        //}

        // 以下为旧的代码。判断是否设置了特殊导出规则
        if (tableInfo.TableConfigData2 != null && tableInfo.TableConfigData2.ContainsKey("tableExportConfig"))
        {
            List <string> inputParams = tableInfo.TableConfigData2[LuaStruct.Excel_Config_SpecialExportLua];
            if (inputParams.Contains(LuaStruct.Excel_Config_NotExportLuaOriginalTable))
            {
                LuaStruct.IsExportLua = false;
                if (inputParams.Count == 1)
                {
                    AppLog.LogWarning(string.Format("警告:你设置了不对表格\"{0}\"按默认方式进行导出Lua,而又没有指定任何其他自定义导出规则,本工具对此表格不进行任何导出,请确认是否真要如此", tableInfo.TableName));
                }
                else
                {
                    AppLog.Log("你设置了不对此表进行默认规则导出Lua");
                }
            }
            // 执行设置的特殊导出规则
            foreach (string param in inputParams)
            {
                if (!LuaStruct.Excel_Config_NotExportLuaOriginalTable.Equals(param, StringComparison.CurrentCultureIgnoreCase))
                {
                    AppLog.Log(string.Format("对此表格按\"{0}\"自定义规则进行导出Lua:", param));
                    TableExportToLuaHelper.SpecialExportTableToLua(tableInfo, param, out errorString);
                    if (errorString != null)
                    {
                        AppLog.LogErrorAndExit(string.Format("导出特殊lua失败:\n{0}\n", errorString));
                    }
                    else
                    {
                        AppLog.Log("导出特殊lua成功");
                    }
                }
            }
        }

        //以下为新的代码
        if (TableAnalyzeHelper.GetOneConfigData(tableInfo, LuaStruct.Excel_Config_SpecialExportLua, ref LuaStruct.SpecialExportLuaParams))
        {
            // 特殊嵌套导出
            foreach (string param in LuaStruct.SpecialExportLuaParams)
            {
                AppLog.Log(string.Format("对此表格按\"{0}\"自定义规则进行导出Lua:", param));
                TableExportToLuaHelper.SpecialExportTableToLua(tableInfo, param, out errorString);
                if (errorString != null)
                {
                    AppLog.LogErrorAndExit(string.Format("导出特殊lua失败:\n{0}\n", errorString));
                }
                else
                {
                    AppLog.Log("导出特殊lua成功");
                }
            }
        }

        if (TableAnalyzeHelper.GetOneConfigData(tableInfo, LuaStruct.Excel_Config_ExportLua, ref LuaStruct.IsExportLua))
        {
            // 对表格按默认方式导出
            if (LuaStruct.IsExportLua == true)
            {
                TableExportToLuaHelper.ExportTableToLua(tableInfo, out errorString);
                if (errorString != null)
                {
                    AppLog.LogErrorAndExit(errorString);
                }
                else
                {
                    AppLog.Log("按默认方式导出lua成功");
                }
            }
        }
        else
        {
            // 对表格按默认方式导出
            if (LuaStruct.IsExport == true)
            {
                TableExportToLuaHelper.ExportTableToLua(tableInfo, out errorString);
                if (errorString != null)
                {
                    AppLog.LogErrorAndExit(errorString);
                }
                else
                {
                    AppLog.Log("按默认方式导出lua成功");
                }
            }
        }
    }
Exemple #5
0
    public static void ExportToJson(TableInfo tableInfo)
    {
        string errorString = null;

        // 判断是否设置要是否要导出null字段
        TableAnalyzeHelper.GetOneConfigData(tableInfo, JsonStruct.Excel_Config_NotExportJsonNull, ref JsonStruct.IsExportJsonNullConfig);
        //if (tableInfo.TableConfig != null && tableInfo.TableConfig.ContainsKey(JsonStruct.Excel_Config_NotExportJsonNull))
        //{
        //    if (tableInfo.TableConfig[JsonStruct.Excel_Config_NotExportJsonNull].Count > 0)
        //    {
        //        if ("false".Equals(tableInfo.TableConfig[JsonStruct.Excel_Config_NotExportJsonNull][0], StringComparison.CurrentCultureIgnoreCase))
        //        {
        //            JsonStruct.IsExportJsonNullConfig = false;
        //        }
        //    }
        //}

        // 以下为旧代码:判断是否设置了特殊导出规则

        /*
         * if (tableInfo.TableConfig != null && tableInfo.TableConfig.ContainsKey(JsonStruct.Excel_Config_SpecialExportJson))
         * {
         *  List<string> inputParams = tableInfo.TableConfig[JsonStruct.Excel_Config_SpecialExportJson];
         *  if (inputParams.Contains(JsonStruct.Excel_Config_NotExportJsonOriginalTable))
         *  {
         *      JsonStruct.IsExportJson = false;
         *      if (inputParams.Count == 1)
         *          AppLog.LogWarning(string.Format("警告:你设置了不对表格\"{0}\"按默认方式进行导出json,而又没有指定任何其他自定义导出规则,本工具对此表格不进行任何导出,请确认是否真要如此", tableInfo.TableName));
         *      else
         *          AppLog.Log("你设置了不对此表进行默认规则导出json");
         *  }
         *  // 执行设置的特殊导出规则
         *  foreach (string param in inputParams)
         *  {
         *      if (!JsonStruct.Excel_Config_NotExportJsonOriginalTable.Equals(param, StringComparison.CurrentCultureIgnoreCase))
         *      {
         *          AppLog.Log(string.Format("对此表格按\"{0}\"自定义规则进行导出:", param));
         *         TableExportToJsonHelper.SpecialExportTableToJson(tableInfo, param, out errorString);
         *          if (errorString != null)
         *              AppLog.LogErrorAndExit(string.Format("导出特殊json失败:\n{0}\n", errorString));
         *          else
         *              AppLog.Log("导出特殊json成功");
         *      }
         *  }
         * }
         */
        //以下为新的代码
        if (TableAnalyzeHelper.GetOneConfigData(tableInfo, JsonStruct.Excel_Config_SpecialExportJson, ref JsonStruct.SpecialExportJsonParams))
        {
            // 特殊嵌套导出
            foreach (string param in JsonStruct.SpecialExportJsonParams)
            {
                AppLog.Log(string.Format("对此表格按\"{0}\"自定义规则进行导出json:", param));
                TableExportToJsonHelper.SpecialExportTableToJson(tableInfo, param, out errorString);
                if (errorString != null)
                {
                    AppLog.LogErrorAndExit(string.Format("导出特殊json失败:\n{0}\n", errorString));
                }
                else
                {
                    AppLog.Log("导出特殊json成功");
                }
            }
        }

        // 对表格按默认方式导出
        if (TableAnalyzeHelper.GetOneConfigData(tableInfo, JsonStruct.Excel_Config_ExportJson, ref JsonStruct.IsExportJson))
        {
            // 对表格按默认方式导出
            if (JsonStruct.IsExportJson == true)
            {
                TableExportToJsonHelper.ExportTableToJson(tableInfo, out errorString);
                if (errorString != null)
                {
                    AppLog.LogErrorAndExit(errorString);
                }
                else
                {
                    AppLog.Log("按默认方式导出json成功");
                }
            }
        }
        else
        {
            // 对表格按默认方式导出
            if (JsonStruct.IsExport == true)
            {
                TableExportToJsonHelper.ExportTableToJson(tableInfo, out errorString);
                if (errorString != null)
                {
                    AppLog.LogErrorAndExit(errorString);
                }
                else
                {
                    AppLog.Log("按默认方式导出json成功");
                }
            }
        }
    }
    public static void ExportToMySQL()
    {
        if (MySQLStruct.IsExport == false)
        {
            return;
        }
        string errorString = null;

        AppLog.Log("\n导出表格数据到MySQL数据库\n");

        errorString = null;
        List <string> errorInfo = new List <string>();

        foreach (KeyValuePair <string, TableInfo> kvp in AppValues.TableInfo)
        {
            string    tableExportNameforMySQL = kvp.Key;
            TableInfo tableInfo = kvp.Value;
            foreach (FieldInfo fieldInfo in tableInfo.GetAllFieldInfo())
            {
                string databaseInfoString = null;
                if (string.IsNullOrEmpty(databaseInfoString))
                {
                    fieldInfo.DatabaseFieldName = null;
                    fieldInfo.DatabaseFieldType = null;
                }
                else
                {
                    int leftBracketIndex  = databaseInfoString.IndexOf('(');
                    int rightBracketIndex = databaseInfoString.LastIndexOf(')');
                    if (leftBracketIndex == -1 || rightBracketIndex == -1 || leftBracketIndex > rightBracketIndex)
                    {
                        errorString = string.Format("表名为:{0},的第 {1} 列(第 {2} 行声明字段名为 {3} 错误,\n导出到MySQL中表字段信息声明错误,必须在字段名后的括号中声明对应数据库中的数据类型)", tableInfo.ExcelName, ExcelMethods.GetExcelColumnName(fieldInfo.ColumnSeq + 1), ExcelTableSetting.DataFieldExportDataBaseFieldInFoRowIndex, fieldInfo.DatabaseInfoString);
                        errorInfo.Add(errorString);
                    }

                    fieldInfo.DatabaseFieldName = databaseInfoString.Substring(0, leftBracketIndex);
                    fieldInfo.DatabaseFieldType = databaseInfoString.Substring(leftBracketIndex + 1, rightBracketIndex - leftBracketIndex - 1);
                }
            }
        }
        if (errorInfo.Count > 0)
        {
            AppLog.LogErrorAndExit(errorInfo.ToString());
        }

        TableExportToMySQLHelper.ConnectToDatabase(out errorString);
        if (!string.IsNullOrEmpty(errorString))
        {
            AppLog.LogErrorAndExit(string.Format("无法连接至MySQL数据库:{0}\n导出至MySQL数据库被迫中止,请修正错误后重试\n", errorString));
        }

        foreach (KeyValuePair <string, TableInfo> kvp in AppValues.TableInfo)
        {
            string        tableExportNameforMySQL = kvp.Key;
            TableInfo     tableInfo   = kvp.Value;
            List <string> inputParams = new List <string>();
            if (TableAnalyzeHelper.GetOneConfigData(tableInfo, MySQLStruct.CONFIG_NAME_EXPORT_DATABASE_TABLE_NAME, ref inputParams))
            {
                tableExportNameforMySQL = inputParams[0];
            }

            if (TableAnalyzeHelper.GetOneConfigData(tableInfo, MySQLStruct.Excel_Config_ExportMySQL, ref MySQLStruct.IsExportMySQL))
            {
                if (MySQLStruct.IsExportMySQL == true)
                {
                    TableExportToMySQLHelper.ExportTableToDatabase(kvp.Value, tableExportNameforMySQL, out errorString);
                    if (!string.IsNullOrEmpty(errorString))
                    {
                        AppLog.LogErrorAndExit(string.Format("导出失败:{0}\n导出至MySQL数据库被迫中止,请修正错误后重试\n", errorString));
                    }
                }
            }
            else
            {
                //if (MySQLStruct.IsExport == true)
                //{
                TableExportToMySQLHelper.ExportTableToDatabase(kvp.Value, tableExportNameforMySQL, out errorString);
                if (!string.IsNullOrEmpty(errorString))
                {
                    AppLog.LogErrorAndExit(string.Format("导出失败:{0}\n导出至MySQL数据库被迫中止,请修正错误后重试\n", errorString));
                }
                //}
            }
        }
    }
Exemple #7
0
    public static void ExportToErlang(TableInfo tableInfo)
    {
        string errorString = null;

        if (ErlangStruct.ExportErlangIsFormat == false)
        {
            ErlangStruct.IndentationString = "";
        }
        // 判断是否设置要是否要导出null字段
        TableAnalyzeHelper.GetOneConfigData(tableInfo, ErlangStruct.Excel_Config_NotExportErlangNull, ref ErlangStruct.IsExportErlangNullConfig);

        if (TableAnalyzeHelper.GetOneConfigData(tableInfo, ErlangStruct.Excel_Config_SpecialExportErlang, ref ErlangStruct.SpecialExportErlangParams))
        {
            // 特殊嵌套导出
            foreach (string param in ErlangStruct.SpecialExportErlangParams)
            {
                AppLog.Log(string.Format("对此表格按\"{0}\"自定义规则进行导出erlang:", param));
                TableExportToErlangHelper.SpecialExportTableToErlang(tableInfo, param, out errorString);
                if (errorString != null)
                {
                    AppLog.LogErrorAndExit(string.Format("导出特殊erlang失败:\n{0}\n", errorString));
                }
                else
                {
                    AppLog.Log("导出特殊erlang成功");
                }
            }
        }

        // 对表格按默认方式导出
        if (TableAnalyzeHelper.GetOneConfigData(tableInfo, ErlangStruct.Excel_Config_ExportErlang, ref ErlangStruct.IsExportErlang))
        {
            // 对表格按默认方式导出
            if (ErlangStruct.IsExportErlang == true)
            {
                TableExportToErlangHelper.ExportTableToErlang(tableInfo, out errorString);
                if (errorString != null)
                {
                    AppLog.LogErrorAndExit(errorString);
                }
                else
                {
                    AppLog.Log("按默认方式导出erlang成功");
                }
            }
        }
        else
        {
            // 对表格按默认方式导出
            if (ErlangStruct.IsExport == true)
            {
                TableExportToErlangHelper.ExportTableToErlang(tableInfo, out errorString);
                if (errorString != null)
                {
                    AppLog.LogErrorAndExit(errorString);
                }
                else
                {
                    AppLog.Log("按默认方式导出erlang成功");
                }
            }
        }
    }