private static void CreateLocalization(string fileName, DataTable dt) { try { int rows = dt.Rows.Count; int columns = dt.Columns.Count; int newcolumns = columns - 3; //减去前三列 后面表示有多少种语言 int currKeyColumn = 2; //当前的Key列 int currValueColumn = 3; //当前的值列 tableHeadArr = new string[columns, 3]; while (newcolumns > 0) { newcolumns--; #region 写入文件 byte[] buffer = null; using (MMO_MemoryStream ms = new MMO_MemoryStream()) { ms.WriteInt(rows - 3); //减去表头的三行 ms.WriteInt(2); //多语言表 只有2列 Key Value for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { if (i < 3) { tableHeadArr[j, i] = dt.Rows[i][j].ToString().Trim(); } else { if (j == currKeyColumn) { //写入key string value = dt.Rows[i][j].ToString().Trim(); ms.WriteUTF8String(value); } else if (j == currValueColumn) { //写入value string value = dt.Rows[i][j].ToString().Trim(); ms.WriteUTF8String(value); } } } } buffer = ms.ToArray(); } //------------------ //写入文件 //------------------ FileStream fs = new FileStream(string.Format("{0}/Localization/{1}", OutBytesFilePath, tableHeadArr[currValueColumn, 0] + ".bytes"), FileMode.Create); fs.Write(buffer, 0, buffer.Length); fs.Close(); currValueColumn++; #endregion } } catch (Exception ex) { Console.WriteLine("表格=>" + fileName + " 处理失败:" + ex.Message); } }
private static void CreateData(string fileName, DataTable dt) { try { //数据格式 行数 列数 二维数组每项的值 这里不做判断 都用string存储 tableHeadArr = null; byte[] buffer = null; using (MMO_MemoryStream ms = new MMO_MemoryStream()) { int rows = dt.Rows.Count; int columns = dt.Columns.Count; tableHeadArr = new string[columns, 3]; ms.WriteInt(rows - 3); //减去表头的三行 ms.WriteInt(columns); for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { if (i < 3) { tableHeadArr[j, i] = dt.Rows[i][j].ToString().Trim(); } else { string type = tableHeadArr[j, 1]; string value = dt.Rows[i][j].ToString().Trim(); //Console.WriteLine("type=" + type + "||" + "value=" + value); switch (type.ToLower()) { case "int": ms.WriteInt(string.IsNullOrEmpty(value) ? 0 : int.Parse(value)); break; case "long": ms.WriteLong(string.IsNullOrEmpty(value) ? 0 : long.Parse(value)); break; case "short": ms.WriteShort(string.IsNullOrEmpty(value) ? (short)0 : short.Parse(value)); break; case "float": ms.WriteFloat(string.IsNullOrEmpty(value) ? 0 : float.Parse(value)); break; case "byte": ms.WriteByte(string.IsNullOrEmpty(value) ? (byte)0 : byte.Parse(value)); break; case "bool": ms.WriteBool(string.IsNullOrEmpty(value) ? false : bool.Parse(value)); break; case "double": ms.WriteDouble(string.IsNullOrEmpty(value) ? 0 : double.Parse(value)); break; default: ms.WriteUTF8String(value); break; } } } } buffer = ms.ToArray(); } //------------------ //写入文件 //------------------ { FileStream fs = new FileStream(string.Format("{0}\\{1}", OutBytesFilePath, fileName + ".bytes"), FileMode.Create); fs.Write(buffer, 0, buffer.Length); fs.Close(); Console.WriteLine("客户端表格=>" + fileName + " 生成bytes文件完毕"); } { FileStream fs = new FileStream(string.Format("{0}\\{1}", OutBytesFilePath_Server, fileName + ".bytes"), FileMode.Create); fs.Write(buffer, 0, buffer.Length); fs.Close(); Console.WriteLine("服务器端表格=>" + fileName + " 生成bytes文件完毕"); } CreateEntity(fileName, tableHeadArr); Console.WriteLine("客户端表格=>" + fileName + " 生成实体脚本完毕"); CreateServerEntity(fileName, tableHeadArr); Console.WriteLine("服务器表格=>" + fileName + " 生成实体脚本完毕"); CreateDBModel(fileName, tableHeadArr); Console.WriteLine("客户端表格=>" + fileName + " 生成数据访问脚本完毕"); CreateServerDBModel(fileName, tableHeadArr); Console.WriteLine("服务器表格=>" + fileName + " 生成数据访问脚本完毕"); } catch (Exception ex) { Console.WriteLine("表格=>" + fileName + " 处理失败:" + ex.Message); } }