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; 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); } } } private static void HandleTableCollection(ExcelWorksheets Worksheets, RowCollectionHandler rowCollectionHandler) { for (int i = 1; i <= Worksheets.Count; i++) { ExcelWorksheet worksheet = Worksheets[i]; HandleTable(worksheet, rowCollectionHandler); } } private static void 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); } } }