ExcelTool.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Excel;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.IO;
  6. public class ExcelTool
  7. {
  8. public static List<LanguageData> ReadLanguageData(string ExcelPath, string sheetName)
  9. {
  10. DataRowCollection collect = ReadExcel(ExcelPath, sheetName);
  11. List<LanguageData> items = new List<LanguageData>();
  12. for (int i = 1; i < collect.Count; i++)
  13. {
  14. if (string.IsNullOrEmpty(collect[i][0].ToString()))
  15. continue;
  16. LanguageData item = new LanguageData
  17. {
  18. name = string.IsNullOrEmpty(collect[i][MultiLanguageConfigIndex.name].ToString()) ? "Null" : collect[i][MultiLanguageConfigIndex.name].ToString(),
  19. content = MultLanguageAdd(collect[i], MultiLanguageConfigIndex.en, (int)LanguageType.Count),
  20. };
  21. items.Add(item);
  22. }
  23. return items;
  24. }
  25. private static List<LanguageContent> MultLanguageAdd(DataRow dataRow, int min, int max)
  26. {
  27. List<LanguageContent> addition = new List<LanguageContent>();
  28. for (int i = min; i <= max; i++)
  29. {
  30. addition.Add(new LanguageContent(dataRow[i].ToString(), (LanguageType)i));
  31. }
  32. return addition;
  33. }
  34. private static DataRowCollection ReadExcel(string excelPath, string sheetName)
  35. {
  36. FileStream stream = File.Open(excelPath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
  37. IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
  38. DataSet result = excelReader.AsDataSet();
  39. return result.Tables[sheetName].Rows;
  40. }
  41. }