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成功"); } } } }
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)); } //} } } }
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成功"); } } } }