ExcelEditor.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using OfficeOpenXml;
  5. using System.IO;
  6. using System;
  7. using SimpleJSON;
  8. /*使用方法
  9. using OfficeOpenXml;
  10. FileInfo fileInfo = new FileInfo(filePath);
  11. using (ExcelPackage package = new ExcelPackage(fileInfo))
  12. {
  13. ...
  14. 脚本A(package);
  15. 脚本B(package);
  16. ...
  17. package.Save(); //如果要保存就加这一行(记得关闭excel!!!)
  18. }
  19. 使用方法*/
  20. public class ExcelEditor
  21. {
  22. //获取所有Sheet名称
  23. public static List<string> ReadExcelSheetsInfo(ExcelPackage package)
  24. {
  25. // 获取Sheet数量
  26. int sheetCount = package.Workbook.Worksheets.Count;
  27. // 获取所有Sheet名称
  28. List<string> sheetNames = new List<string>();
  29. foreach (ExcelWorksheet worksheet in package.Workbook.Worksheets)
  30. {
  31. sheetNames.Add(worksheet.Name);
  32. }
  33. return sheetNames;
  34. }
  35. //修改Sheet名称
  36. public static bool RenameSheet(ExcelPackage package, string oldSheetName, string newSheetName)
  37. {
  38. try
  39. {
  40. ExcelWorksheet worksheet = package.Workbook.Worksheets[oldSheetName];
  41. worksheet.Name = newSheetName;
  42. Debug.Log($"修改Sheet名\"{oldSheetName}\"为\"{newSheetName}\"");
  43. return true;
  44. }
  45. catch (System.InvalidOperationException e)
  46. {
  47. Debug.LogError($"请关闭Excel后重试");
  48. return false;
  49. }
  50. catch (System.ArgumentException)
  51. {
  52. Debug.LogError($"Sheet名重复请重试");
  53. return false;
  54. }
  55. catch (System.Exception e)
  56. {
  57. Debug.Log(e.GetType());
  58. Debug.LogException(e);
  59. return false;
  60. }
  61. }
  62. //获取excel数据
  63. public static string GetCellData(ExcelPackage package, string sheetName, string cellId)
  64. {
  65. ExcelWorksheet worksheet = package.Workbook.Worksheets[sheetName];
  66. var value = worksheet.Cells[cellId].Value;
  67. return value?.ToString() ?? string.Empty;
  68. }
  69. //修改excel文件(地址索引)
  70. public static bool ModifyExcel(ExcelPackage package, string sheetMame, string cellId, string newData)
  71. {
  72. try
  73. {
  74. ExcelWorksheet worksheet = package.Workbook.Worksheets[sheetMame];
  75. worksheet.Cells[cellId].Value = newData; // 通过单元格地址
  76. return true;
  77. }
  78. catch (System.InvalidOperationException e)
  79. {
  80. Debug.LogError($"请关闭Excel后重试");
  81. return false;
  82. }
  83. catch (System.Exception e)
  84. {
  85. Debug.LogException(e);
  86. return false;
  87. }
  88. }
  89. //修改excel文件(行列索引)
  90. public static bool ModifyExcel(ExcelPackage package, string sheetMame, int cell_row, int cell_column, string newData)
  91. {
  92. try
  93. {
  94. ExcelWorksheet worksheet = package.Workbook.Worksheets[sheetMame];
  95. worksheet.Cells[cell_row, cell_column].Value = newData; // 通过行列索引
  96. package.Save();
  97. return true;
  98. }
  99. catch (System.InvalidOperationException e)
  100. {
  101. Debug.LogError($"请关闭Excel后重试");
  102. return false;
  103. }
  104. catch (System.Exception e)
  105. {
  106. Debug.LogException(e);
  107. return false;
  108. }
  109. }
  110. //删除连续多行数据[start_row, end_row]
  111. public static bool RemoveExcelRows(ExcelPackage package, string sheetMame, int start_row, int end_row)
  112. {
  113. ExcelWorksheet worksheet = package.Workbook.Worksheets[sheetMame];
  114. try
  115. {
  116. for (int i = end_row; i >= start_row; i--)
  117. {
  118. worksheet.DeleteRow(i);
  119. }
  120. return true;
  121. }
  122. catch (System.InvalidOperationException e)
  123. {
  124. Debug.LogError($"请关闭Excel后重试");
  125. return false;
  126. }
  127. catch (System.Exception e)
  128. {
  129. Debug.LogException(e);
  130. return false;
  131. }
  132. }
  133. //读取excel的jason参数
  134. public static JSONNode Loader(string fileName)
  135. {
  136. return JSON.Parse(File.ReadAllText("GenerateDatas/json/" + fileName + ".json"));
  137. }
  138. }