ExcelReader.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System.IO;
  2. using UnityEditor;
  3. using UnityEngine;
  4. using System.Data;
  5. using GFGEditor;
  6. using OfficeOpenXml;
  7. namespace GFGEditor
  8. {
  9. public class ExcelReader
  10. {
  11. public delegate void RowCollectionHandler(ExcelWorksheet rowCollection, string configName, string configArrayName);
  12. public static void ReadExcel(RowCollectionHandler rowCollectionHandler)
  13. {
  14. string[] files = Directory.GetFiles(ExcelConfig.excelsFolderPath);
  15. int totalCount = files.Length;
  16. for (int i = 0; i < totalCount; i++)
  17. {
  18. string filePath = files[i];
  19. string fileName = Path.GetFileNameWithoutExtension(filePath);
  20. if(!fileName.Contains("~"))
  21. {
  22. ET.Log.Debug($"fileName {fileName}");
  23. Stream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
  24. ExcelPackage excelPackage = new ExcelPackage(stream);
  25. //IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
  26. //DataSet result = excelReader.AsDataSet();
  27. HandleTableCollection(excelPackage.Workbook.Worksheets, rowCollectionHandler);
  28. }
  29. }
  30. }
  31. private static void HandleTableCollection(ExcelWorksheets Worksheets, RowCollectionHandler rowCollectionHandler)
  32. {
  33. for (int i = 1; i <= Worksheets.Count; i++)
  34. {
  35. ExcelWorksheet worksheet = Worksheets[i];
  36. HandleTable(worksheet, rowCollectionHandler);
  37. }
  38. }
  39. private static void HandleTable(ExcelWorksheet worksheet, RowCollectionHandler rowCollectionHandler)
  40. {
  41. string[] names = worksheet.Name.Split('_');
  42. if (names.Length < 2)
  43. {
  44. //未正确命名的表格
  45. return;
  46. }
  47. if (worksheet.Name.Contains("#"))
  48. {
  49. //被注释的表格
  50. return;
  51. }
  52. string configItemName = names[1];
  53. string managerTag = "";
  54. if (names.Length > 2)
  55. {
  56. managerTag = names[2];
  57. }
  58. //文件名及管理器名
  59. string configManagerName = string.Format(ExcelConfig.CONFIG_ARRAY_TEMPLATE, configItemName, managerTag);
  60. rowCollectionHandler(worksheet, configItemName, configManagerName);
  61. }
  62. }
  63. }