|
@@ -11,7 +11,8 @@ namespace GFGEditor
|
|
|
{
|
|
|
public class ExcelReader
|
|
|
{
|
|
|
- public delegate void RowCollectionHandler(ExcelWorksheet rowCollection, string configName, string configArrayName);
|
|
|
+ public delegate void RowCollectionHandler(ExcelWorksheet rowCollection, string configName,
|
|
|
+ string configArrayName);
|
|
|
|
|
|
public static void ReadExcel(RowCollectionHandler rowCollectionHandler)
|
|
|
{
|
|
@@ -23,19 +24,24 @@ namespace GFGEditor
|
|
|
{
|
|
|
string filePath = files[i];
|
|
|
string fileName = Path.GetFileNameWithoutExtension(filePath);
|
|
|
- if (!fileName.Contains("~"))
|
|
|
+ if (!fileName.Contains("~") && !fileName.StartsWith(".") && fileName != "")
|
|
|
{
|
|
|
+ EditorUtility.DisplayProgressBar("进度", $"fileNmae{fileName}", 1);
|
|
|
ET.Log.Debug($"fileName {fileName}");
|
|
|
Stream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
|
|
|
ExcelPackage excelPackage = new ExcelPackage(stream);
|
|
|
//IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
|
|
|
//DataSet result = excelReader.AsDataSet();
|
|
|
|
|
|
- HandleTableCollection(excelPackage.Workbook.Worksheets, rowCollectionHandler, out string dispose, out string init);
|
|
|
+ HandleTableCollection(excelPackage.Workbook.Worksheets, rowCollectionHandler, out string dispose,
|
|
|
+ out string init);
|
|
|
strCfgArrayDispose = strCfgArrayDispose + dispose;
|
|
|
strCfgArrayInit = strCfgArrayInit + init;
|
|
|
+ // stream.Dispose();
|
|
|
+ // excelPackage.Dispose();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
string functionDispose = CodeTemplateFactory.FunctionDisposeTemplate;
|
|
|
functionDispose = functionDispose.Replace("{StrCfgArrayDispose}", strCfgArrayDispose);
|
|
|
string disposeAllCfgsCache = CodeTemplateFactory.DisposeAllCfgsCacheTemplate;
|
|
@@ -55,7 +61,8 @@ namespace GFGEditor
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private static void HandleTableCollection(ExcelWorksheets Worksheets, RowCollectionHandler rowCollectionHandler, out string strDispose, out string strInit)
|
|
|
+ private static void HandleTableCollection(ExcelWorksheets Worksheets, RowCollectionHandler rowCollectionHandler,
|
|
|
+ out string strDispose, out string strInit)
|
|
|
{
|
|
|
strDispose = "";
|
|
|
strInit = "";
|
|
@@ -64,7 +71,8 @@ namespace GFGEditor
|
|
|
ExcelWorksheet worksheet = Worksheets[i];
|
|
|
string configArrayName = HandleTable(worksheet, rowCollectionHandler);
|
|
|
if (string.IsNullOrEmpty(configArrayName)) continue;
|
|
|
- string dispose = CodeTemplateFactory.StrCfgArrayDisposeTemplate.Replace("{configArrayName}", configArrayName);
|
|
|
+ string dispose =
|
|
|
+ CodeTemplateFactory.StrCfgArrayDisposeTemplate.Replace("{configArrayName}", configArrayName);
|
|
|
strDispose = strDispose + "\n" + dispose;
|
|
|
string init = CodeTemplateFactory.StrCfgArrayInitTemplate.Replace("{configArrayName}", configArrayName);
|
|
|
strInit = strInit + "\n" + init;
|
|
@@ -79,17 +87,20 @@ namespace GFGEditor
|
|
|
//未正确命名的表格
|
|
|
return "";
|
|
|
}
|
|
|
+
|
|
|
if (worksheet.Name.Contains("#"))
|
|
|
{
|
|
|
//被注释的表格
|
|
|
return "";
|
|
|
}
|
|
|
+
|
|
|
string configItemName = names[1];
|
|
|
string managerTag = "";
|
|
|
if (names.Length > 2)
|
|
|
{
|
|
|
managerTag = names[2];
|
|
|
}
|
|
|
+
|
|
|
//文件名及管理器名
|
|
|
string configManagerName = string.Format(ExcelConfig.CONFIG_ARRAY_TEMPLATE, configItemName, managerTag);
|
|
|
|
|
@@ -108,10 +119,13 @@ namespace GFGEditor
|
|
|
{
|
|
|
string filePath = files[i];
|
|
|
string fileName = Path.GetFileNameWithoutExtension(filePath);
|
|
|
- if (!fileName.Contains("~") && !fileName.Contains("0000自动生表工具") && !fileName.Contains("zzzzGFG数值"))
|
|
|
+ if (!fileName.Contains("~") && !fileName.Contains("0000自动生表工具") && !fileName.Contains("zzzzGFG数值")
|
|
|
+ && fileName != "" && !fileName.StartsWith("."))
|
|
|
{
|
|
|
+ Debug.Log(fileName + "开始导入");
|
|
|
string newPath = ExcelConfig.excelsCacheFolderPath + fileName + ".xlsx";
|
|
|
- Stream newStream = new FileStream(newPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
|
|
|
+ Stream newStream = new FileStream(newPath, FileMode.OpenOrCreate, FileAccess.ReadWrite,
|
|
|
+ FileShare.ReadWrite);
|
|
|
ExcelPackage newExcelPackage = new ExcelPackage(newStream);
|
|
|
ExcelWorksheets newWorksheets = newExcelPackage.Workbook.Worksheets;
|
|
|
|
|
@@ -143,14 +157,17 @@ namespace GFGEditor
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
if (newWorksheet == null)
|
|
|
{
|
|
|
newWorksheets.Add(worksheet.Name);
|
|
|
newWorksheet = newWorksheets[newWorksheets.Count];
|
|
|
}
|
|
|
+
|
|
|
WriteTitle(newWorksheet, worksheet);
|
|
|
// Debug.Log(worksheet.Name + "写入完成");
|
|
|
}
|
|
|
+
|
|
|
newExcelPackage.Save();
|
|
|
excelPackage.Save();
|
|
|
newStream.Close();
|
|
@@ -175,6 +192,7 @@ namespace GFGEditor
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
+
|
|
|
bool needWriteColumn = true;
|
|
|
for (int j = 1; j <= newColumnNum; j++)
|
|
|
{
|
|
@@ -185,6 +203,7 @@ namespace GFGEditor
|
|
|
needWriteColumn = false;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
if (needWriteColumn)
|
|
|
{
|
|
|
newColumnNum = newWorksheet.Dimension == null ? 0 : newWorksheet.Dimension.End.Column;
|
|
@@ -196,8 +215,10 @@ namespace GFGEditor
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
WriteCell(newWorksheet, worksheet);
|
|
|
}
|
|
|
+
|
|
|
private static void WriteCell(ExcelWorksheet newWorksheet, ExcelWorksheet worksheet)
|
|
|
{
|
|
|
int newRowNum = newWorksheet.Dimension == null ? 0 : newWorksheet.Dimension.End.Row;
|
|
@@ -210,6 +231,7 @@ namespace GFGEditor
|
|
|
{
|
|
|
Debug.Log("");
|
|
|
}
|
|
|
+
|
|
|
for (int i = 5; i <= rowNum; i++)
|
|
|
{
|
|
|
newRowNum = newWorksheet.Dimension == null ? 0 : newWorksheet.Dimension.End.Row;
|
|
@@ -226,8 +248,10 @@ namespace GFGEditor
|
|
|
{
|
|
|
dicArray[title] = 0;
|
|
|
}
|
|
|
+
|
|
|
dicArray[title] = dicArray[title] + 1;
|
|
|
}
|
|
|
+
|
|
|
if (string.IsNullOrEmpty(title)) continue;
|
|
|
|
|
|
Dictionary<string, int> newDicArray = new Dictionary<string, int>();
|
|
@@ -241,10 +265,14 @@ namespace GFGEditor
|
|
|
{
|
|
|
newDicArray[newTitle] = 0;
|
|
|
}
|
|
|
+
|
|
|
newDicArray[newTitle] = newDicArray[newTitle] + 1;
|
|
|
}
|
|
|
+
|
|
|
bool isSame = newTitle == title && newType == type;
|
|
|
- if (isSame && (dicArray.ContainsKey(title) && newDicArray.ContainsKey(newTitle) && dicArray[title] == newDicArray[newTitle] || !dicArray.ContainsKey(title) && !newDicArray.ContainsKey(newTitle)))
|
|
|
+ if (isSame && (dicArray.ContainsKey(title) && newDicArray.ContainsKey(newTitle) &&
|
|
|
+ dicArray[title] == newDicArray[newTitle] || !dicArray.ContainsKey(title) &&
|
|
|
+ !newDicArray.ContainsKey(newTitle)))
|
|
|
{
|
|
|
column = k;
|
|
|
break;
|
|
@@ -254,9 +282,11 @@ namespace GFGEditor
|
|
|
newWorksheet.Cells[newRowNum + 1, column].Value = worksheet.Cells[i, j].Value;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
newRowNum = newWorksheet.Dimension == null ? 0 : newWorksheet.Dimension.End.Row;
|
|
|
newWorksheet.InsertRow(newRowNum + 1, 2);
|
|
|
}
|
|
|
+
|
|
|
private static void DeleteExcle()
|
|
|
{
|
|
|
string path = ExcelConfig.excelsCacheFolderPath;
|
|
@@ -264,6 +294,7 @@ namespace GFGEditor
|
|
|
{
|
|
|
Directory.CreateDirectory(path);
|
|
|
}
|
|
|
+
|
|
|
DirectoryInfo dir = new DirectoryInfo(path);
|
|
|
// FileInfo[] files = dir.GetFiles();
|
|
|
string[] files = Directory.GetFiles(path);
|
|
@@ -273,16 +304,14 @@ namespace GFGEditor
|
|
|
{
|
|
|
File.Delete(item);
|
|
|
}
|
|
|
+
|
|
|
return;
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
ET.Log.Debug("Delete Failed!");
|
|
|
return;
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
-}
|
|
|
+}
|