private 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}", textOutBytesFilePath.Text, tableHeadArr[currValueColumn, 0] + ".bytes"), FileMode.Create); fs.Write(buffer, 0, buffer.Length); fs.Close(); currValueColumn++; #endregion } } catch (Exception ex) { ToolStatus.Text = "表格=>" + fileName + " 处理失败:" + ex.Message; } }
private 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}", textOutBytesFilePath.Text, fileName + ".bytes"), FileMode.Create); fs.Write(buffer, 0, buffer.Length); fs.Close(); ToolStatus.Text = "客户端表格=>" + fileName + " 生成bytes文件完毕"; } { FileStream fs = new FileStream(string.Format("{0}\\{1}", textOutBytesFilePath_Server.Text, fileName + ".bytes"), FileMode.Create); fs.Write(buffer, 0, buffer.Length); fs.Close(); ToolStatus.Text = "服务器端表格=>" + fileName + " 生成bytes文件完毕"; } CreateEntity(fileName, tableHeadArr); ToolStatus.Text = "客户端表格=>" + fileName + " 生成实体脚本完毕"; CreateServerEntity(fileName, tableHeadArr); ToolStatus.Text = "服务器表格=>" + fileName + " 生成实体脚本完毕"; CreateDBModel(fileName, tableHeadArr); ToolStatus.Text = "客户端表格=>" + fileName + " 生成数据访问脚本完毕"; CreateServerDBModel(fileName, tableHeadArr); ToolStatus.Text = "服务器表格=>" + fileName + " 生成数据访问脚本完毕"; } catch (Exception ex) { ToolStatus.Text = "表格=>" + fileName + " 处理失败:" + ex.Message; } }