123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- using System.IO;
- using UnityEditor;
- using UnityEngine;
- using System.Data;
- using GFGEditor;
- using OfficeOpenXml;
- namespace GFGEditor
- {
- public class ExcelReader
- {
- public delegate void RowCollectionHandler(ExcelWorksheet rowCollection, string configName, string configArrayName);
- public static void ReadExcel(RowCollectionHandler rowCollectionHandler)
- {
- string[] files = Directory.GetFiles(ExcelConfig.excelsFolderPath);
- int totalCount = files.Length;
- string strCfgArrayDispose = "";
- string strCfgArrayInit = "";
- for (int i = 0; i < totalCount; i++)
- {
- string filePath = files[i];
- string fileName = Path.GetFileNameWithoutExtension(filePath);
- if (!fileName.Contains("~"))
- {
- 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);
- strCfgArrayDispose = strCfgArrayDispose + dispose;
- strCfgArrayInit = strCfgArrayInit + init;
- }
- }
- string functionDispose = CodeTemplateFactory.FunctionDisposeTemplate;
- functionDispose = functionDispose.Replace("{StrCfgArrayDispose}", strCfgArrayDispose);
- string disposeAllCfgsCache = CodeTemplateFactory.DisposeAllCfgsCacheTemplate;
- disposeAllCfgsCache = disposeAllCfgsCache.Replace("{FunctionDispose}", functionDispose);
- using (StreamWriter sw = new StreamWriter(ExcelConfig.handleAllCfgsCache + "DisposeAllCfgsCache.cs"))
- {
- sw.Write(disposeAllCfgsCache);
- }
- string functionInit = CodeTemplateFactory.FunctionInitTemplate;
- functionInit = functionInit.Replace("{StrCfgArrayInit}", strCfgArrayInit);
- string initAllCfgsCache = CodeTemplateFactory.InitAllCfgsCacheTemplate;
- initAllCfgsCache = initAllCfgsCache.Replace("{FunctionInit}", functionInit);
- using (StreamWriter sw = new StreamWriter(ExcelConfig.handleAllCfgsCache + "InitAllCfgsCache.cs"))
- {
- sw.Write(initAllCfgsCache);
- }
- }
- private static void HandleTableCollection(ExcelWorksheets Worksheets, RowCollectionHandler rowCollectionHandler, out string strDispose, out string strInit)
- {
- strDispose = "";
- strInit = "";
- for (int i = 1; i <= Worksheets.Count; i++)
- {
- ExcelWorksheet worksheet = Worksheets[i];
- string configArrayName = HandleTable(worksheet, rowCollectionHandler);
- if (string.IsNullOrEmpty(configArrayName)) continue;
- string dispose = CodeTemplateFactory.StrCfgArrayDisposeTemplate.Replace("{configArrayName}", configArrayName);
- strDispose = strDispose + "\n" + dispose;
- string init = CodeTemplateFactory.StrCfgArrayInitTemplate.Replace("{configArrayName}", configArrayName);
- strInit = strInit + "\n" + init;
- }
- }
- private static string HandleTable(ExcelWorksheet worksheet, RowCollectionHandler rowCollectionHandler)
- {
- string[] names = worksheet.Name.Split('_');
- if (names.Length < 2)
- {
- //未正确命名的表格
- 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);
- rowCollectionHandler(worksheet, configItemName, configManagerName);
- return configManagerName;
- }
- }
- }
|