using CommonAI.Data; using CommonLang; using CommonLang.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; using System.IO; using XmdsCommonServer.XLS.Data; using static XmdsCommonServer.XLS.Data.RandomName; namespace XmdsCommonServer.XLS { public class XLSRandomNameLoader : XLSLoader { private List mPrefixName = new List(); private List mSuffixName = new List(); private bool mHasData; public XLSRandomNameLoader(string path) { byte[] data = Resource.LoadData(path); if (data == null) { throw new Exception("Can not read xls file : " + path); } using (MemoryStream ms = new MemoryStream(data)) { IWorkbook Workbook = null; if (path.Contains(".xlsx")) { Workbook = new XSSFWorkbook(ms); } else if (path.Contains(".xls")) { Workbook = new HSSFWorkbook(ms); } for (int si = 0; si < Workbook.NumberOfSheets; si++) { ISheet sheet = Workbook.GetSheetAt(si) as ISheet; try { if (sheet.SheetName == "Prefix") { foreach (PrefixName m in LoadSheet(sheet)) { mPrefixName.Add(m); } } else if (sheet.SheetName == "Suffix") { foreach (SuffixName m in LoadSheet(sheet)) { mSuffixName.Add(m); } } mHasData = mPrefixName.Count > 0 && mSuffixName.Count > 0; } catch (Exception error) { throw new Exception(string.Format("XLSZhanYaoDataLoader 初始化斩妖配置错误SheetName = {0},Error = {1}", sheet.SheetName, error.ToString())); } } } log.Info("XLSZhanYaoDataLoader 初始化怪物配置完成."); } public string GetRanomName() { if(!mHasData) { return null; } int indexPrefix = GlobalData.gRandom.Next() % this.mPrefixName.Count; int indexSuffix = GlobalData.gRandom.Next() % this.mSuffixName.Count; return this.mPrefixName[indexPrefix].prefix + this.mSuffixName[indexSuffix].suffix; } } }