XLSZhanYaoDataLoader.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. 
  2. using CommonLang;
  3. using CommonLang.IO;
  4. using NPOI.HSSF.UserModel;
  5. using NPOI.SS.UserModel;
  6. using NPOI.XSSF.UserModel;
  7. using System;
  8. using System.IO;
  9. using XmdsCommonServer.XLS.Data;
  10. namespace XmdsCommonServer.XLS
  11. {
  12. public class XLSZhanYaoDataLoader : XLSLoader
  13. {
  14. private HashMap<int, ZhanYaoData> ZhanYaoDatas = new HashMap<int, ZhanYaoData>();
  15. public XLSZhanYaoDataLoader(string path)
  16. {
  17. byte[] data = Resource.LoadData(path);
  18. if (data == null)
  19. {
  20. throw new Exception("Can not read xls file : " + path);
  21. }
  22. using (MemoryStream ms = new MemoryStream(data))
  23. {
  24. IWorkbook Workbook = null;
  25. if (path.Contains(".xlsx"))
  26. {
  27. Workbook = new XSSFWorkbook(ms);
  28. }
  29. else if (path.Contains(".xls"))
  30. {
  31. Workbook = new HSSFWorkbook(ms);
  32. }
  33. for (int si = 0; si < Workbook.NumberOfSheets; si++)
  34. {
  35. ISheet sheet = Workbook.GetSheetAt(si) as ISheet;
  36. try
  37. {
  38. if (sheet.SheetName == "Zhanyao_title")
  39. {
  40. LoadSheet(sheet);
  41. }
  42. }
  43. catch (Exception error)
  44. {
  45. throw new Exception(string.Format("XLSZhanYaoDataLoader 初始化斩妖配置错误SheetName = {0},Error = {1}",
  46. sheet.SheetName, error.ToString()));
  47. }
  48. }
  49. }
  50. log.Info("XLSZhanYaoDataLoader 初始化怪物配置完成.");
  51. }
  52. private void LoadSheet(ISheet sheet)
  53. {
  54. int index = 0;
  55. try
  56. {
  57. foreach (ZhanYaoData m in LoadSheet<ZhanYaoData>(sheet))
  58. {
  59. ZhanYaoDatas.Add(m.Zhanyao_TitleLv, m);
  60. index++;
  61. }
  62. }
  63. catch (Exception error)
  64. {
  65. throw new Exception(string.Format("XLSZhanYaoDataLoader Error : index = {0} Error = {1}", index, error.ToString()));
  66. }
  67. log.Info(string.Format("loadSheet【{0}】Complete", sheet.SheetName));
  68. }
  69. public ZhanYaoData GetZhanYaoData(int level)
  70. {
  71. return this.ZhanYaoDatas.Get(level);
  72. }
  73. }
  74. }