Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed ExcelToLuaJson.zip
Binary file not shown.
12 changes: 6 additions & 6 deletions Export.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,27 +12,27 @@ class Export
private string _ExportExcelFileName = "";
private ExcelTableData excelTable;
public Export(string excelFileName)
{
{
_ExportExcelFileName = excelFileName;
excelTable = new ExcelTableData();
excelTable.LoadFromFile(excelFileName);
}

public void DoExport(string exportBasePath,string exportMode,string exportType)
public void DoExport(string exportBasePath, string exportMode, string exportType)
{
ExporterBase exporter = null;
switch (exportType)
{
case "lua":
{
exporter = new ExporterLua();
exporter = new ExporterLua(exportMode);
}
break;
case "json":
{
exporter = new ExporterJson();
exporter = new ExporterJson(exportMode);
}
break;
break;
}


Expand All @@ -44,6 +44,6 @@ public void DoExport(string exportBasePath,string exportMode,string exportType)

}


}
}
22 changes: 14 additions & 8 deletions Exporter/ExporterBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,18 @@ namespace ExcelExport.Exporter
{
public class ExporterBase
{
private string _exportMode;
protected ExporterBase(string exportMode)
{
this._exportMode = exportMode;
}

protected virtual void ExportTiny(ExcelSheetData data,StreamWriter writer)
protected virtual void ExportTiny(ExcelSheetData data, StreamWriter writer)
{
//nothing
}

protected virtual void ExportBase(ExcelSheetData data,StreamWriter writer)
protected virtual void ExportBase(ExcelSheetData data, StreamWriter writer, string exportMode)
{
//nothing
}
Expand All @@ -39,29 +44,30 @@ private void CheckCreateDir(string dir)
{
var targetDir = Directory.GetParent(dir).ToString();
if (!Directory.Exists(targetDir))
{
{
Directory.CreateDirectory(targetDir);
}
}

public void SaveToFile(ExcelSheetData data , string fileName)
public void SaveToFile(ExcelSheetData data, string fileName)
{

CheckCreateDir(fileName);

var stream = new FileStream(fileName, FileMode.Create);
var writer = new StreamWriter(stream);

AddHeader(data, writer);
if (data.exportSchema == "base")
{
ExportBase(data, writer);
} else if(data.exportSchema == "tiny")
AddHeader(data, writer);
ExportBase(data, writer, this._exportMode);
AddEnd(data, writer);
}
else if (data.exportSchema == "tiny")
{
ExportTiny(data, writer);
}

AddEnd(data, writer);
writer.Close();
stream.Close();

Expand Down
103 changes: 74 additions & 29 deletions Exporter/ExporterJson.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,17 @@ namespace ExcelExport.Exporter
{
public class ExporterJson : ExporterBase
{

public ExporterJson(string exportMode) : base(exportMode)
{
}
protected override void AddHeader(ExcelSheetData data, StreamWriter writer)
{
writer.WriteLine("{");
writer.WriteLine("[");
}

protected override void AddEnd(ExcelSheetData data, StreamWriter writer)
{
writer.WriteLine("}");
writer.WriteLine("]");
}

protected override void ExportTiny(ExcelSheetData data, StreamWriter writer)
Expand All @@ -30,38 +32,64 @@ protected override void ExportTiny(ExcelSheetData data, StreamWriter writer)
for (var rowCount = 0; rowCount < fieldDataKey.dataList.Count; rowCount++)
{
string str = "";
str = string.Format("{0}:\"{1}\"",fieldDataKey.dataList[rowCount], fieldDataValue.dataList[rowCount]);
int intRes = -1;
double doubleRes = 0;
string value = fieldDataValue.dataList[rowCount];
if (int.TryParse(value, out intRes))
{
str = string.Format("\"{0}\":{1}", fieldDataKey.dataList[rowCount], intRes);
}
else if (double.TryParse(value, out doubleRes))
{
str = string.Format("\"{0}\":{1}", fieldDataKey.dataList[rowCount], doubleRes);
}
else
{
if (value.StartsWith("[") && value.EndsWith("]"))
{
str = string.Format("\"{0}\":{1}", fieldDataKey.dataList[rowCount], value);
}
else
{
str = string.Format("\"{0}\":\"{1}\"", fieldDataKey.dataList[rowCount], value);
}
}

if (rowCount != fieldDataKey.dataList.Count)
if (rowCount != fieldDataKey.dataList.Count - 1)
{
str += ",";
}
writer.WriteLine(str);
}

writer.WriteLine("}");
}

protected override void ExportBase(ExcelSheetData data, StreamWriter writer)
protected override void ExportBase(ExcelSheetData data, StreamWriter writer, string exportMode)
{
FieldData fieldData = null;
var rowCount = data.filedList[0].RowCount;


for (var rowIndex = 0; rowIndex < rowCount; rowIndex++)
{

//处理keyCount
string key = "";
for (var i = 0; i < data.keyCount; i++)
{
key += string.Format("\"{0}\" : ", data.filedList[i].dataList[rowIndex]) + "{";
//key += string.Format("\"{0}\" : ", data.filedList[i].dataList[rowIndex]) + "{";
key += "{";
}

writer.WriteLine(key);
string appendStr = (key + "\n");

for (var i = 0; i < data.filedList.Count; i++)
{
fieldData = data.filedList[i];
bool isAppendEndStr = true;
if (!fieldData.CanExportTo(exportMode))
{
continue;
}

//数组列表
if (fieldData.IsArrayField())
{
Expand All @@ -79,42 +107,59 @@ protected override void ExportBase(ExcelSheetData data, StreamWriter writer)

str += "]";

writer.Write(str);
appendStr += str;
}
else
{
var tempData = fieldData.dataList[rowIndex];
//普通字段
if (fieldData.fieldType == typeof(string))
{
string str = string.Format(" \"{0}\":\"{1}\"", fieldData.fieldName, fieldData.dataList[rowIndex]);
writer.Write(str);
string str;
if ((tempData.StartsWith("{") && tempData.EndsWith("}")) || (tempData.StartsWith("[") && tempData.EndsWith("]")))
{
str = string.Format(" \"{0}\":{1}", fieldData.fieldName, tempData);
}
else
{
str = string.Format(" \"{0}\":\"{1}\"", fieldData.fieldName, tempData);
}
appendStr += str;
}
else
{
string str = string.Format(" \"{0}\":{1}", fieldData.fieldName, fieldData.dataList[rowIndex]);
writer.Write(str);
if (tempData != "")
{
string str = string.Format(" \"{0}\":{1}", fieldData.fieldName, tempData);
appendStr += str;
}
else {
isAppendEndStr = false;
}
}

}

//最后一行不给逗号分隔
if (i != data.filedList.Count - 1)
{
writer.WriteLine(",");
}
else
if (isAppendEndStr)
{
writer.WriteLine(" ");
appendStr += ",\n";
}
}

if (rowIndex == rowCount - 1)
{
writer.WriteLine(" }");
}
else

appendStr = appendStr.Substring(0, appendStr.Length - 2);
writer.WriteLine(appendStr);

if (appendStr.Length > 2)
{
writer.WriteLine(" },");
if (rowIndex == rowCount - 1)
{
writer.WriteLine(" }");
}
else
{
writer.WriteLine(" },");
}
}

}
Expand Down
45 changes: 26 additions & 19 deletions Exporter/ExporterLua.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ namespace ExcelExport.Exporter
{
public class ExporterLua : ExporterBase
{
public ExporterLua(string exportMode) : base(exportMode)
{
}

protected override void ExportTiny(ExcelSheetData data, StreamWriter writer)
{
var fieldDataKey = data.filedList[0];
Expand All @@ -30,27 +34,33 @@ protected override void ExportTiny(ExcelSheetData data, StreamWriter writer)
writer.WriteLine("}");
}

protected override void ExportBase(ExcelSheetData data, StreamWriter writer)
protected override void ExportBase(ExcelSheetData data, StreamWriter writer, string exportMode)
{
FieldData fieldData = null;
var rowCount = data.filedList[0].RowCount;


for (var rowIndex = 0; rowIndex < rowCount; rowIndex++)
{

//处理keyCount
string key = "";
for (var i = 0; i < data.keyCount; i++)
{
key += string.Format("[{0}] = ", data.filedList[i].dataList[rowIndex]) + "{";
}

writer.WriteLine(key);
string appendStr = key + "\n";

for (var i = 0; i < data.filedList.Count; i++)
{
fieldData = data.filedList[i];
fieldData = data.filedList[i];

if (!fieldData.CanExportTo("s"))
{
continue;
}

//数组列表
if (fieldData.IsArrayField())
{
Expand All @@ -66,41 +76,38 @@ protected override void ExportBase(ExcelSheetData data, StreamWriter writer)
}
}

writer.Write(str);
appendStr += str;
}
else
{
//普通字段
if (fieldData.fieldType == typeof(string))
{
string str = string.Format(" {0}=\"{1}\"", fieldData.fieldName, fieldData.dataList[rowIndex]);
writer.Write(str);
appendStr += str;
}
else
{
string str = string.Format(" {0}={1}", fieldData.fieldName, fieldData.dataList[rowIndex]);
writer.Write(str);
appendStr += str;
}
}

//最后一行不给逗号分隔
if (i != data.filedList.Count - 1)
{
writer.WriteLine(",");
}
else
{
writer.WriteLine(" ");
}
appendStr += ",\n";
}
if(rowIndex == rowCount - 1)

appendStr = appendStr.Substring(0, appendStr.Length - 2);
writer.WriteLine(appendStr);

if (rowIndex == rowCount - 1)
{
writer.WriteLine(" }");
} else
}
else
{
writer.WriteLine(" },");
}

}

}
Expand Down
7 changes: 4 additions & 3 deletions FormMain.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,11 @@ private void btn_Export_Click(object sender, EventArgs e)
LogUtils.instance.AddLog("读取完成 : " + fileName);

LogUtils.instance.AddLog("开始导出到JSON");
exporter.DoExport(export_path.Text + "\\data\\client\\", "c", "json");
exporter.DoExport(export_path.Text + "\\client\\", "c", "json");
exporter.DoExport(export_path.Text + "\\server\\", "s", "json");

LogUtils.instance.AddLog("开始导出到LUA");
exporter.DoExport(export_path.Text + "\\data\\server\\", "s", "lua");
//LogUtils.instance.AddLog("开始导出到LUA");
//exporter.DoExport(export_path.Text + "\\data\\server\\", "s", "lua");

LogUtils.instance.AddLog("完成处理Excel :" + fileName);

Expand Down