Dictionary <string, ConfigFile> ReadXML(string path) { //path = Application.dataPath + "/../Builder/builder_config.xls"; Dictionary <string, ConfigFile> ret = new Dictionary <string, ConfigFile>(); // !< 说明:客户端的表读取,就不走服务器那样的复杂处理啦.. HSSFWorkbook wk = new HSSFWorkbook(File.OpenRead(path)); HSSFSheet sheet = null; string sheetname = ""; for (int a = 0; a < wk.NumberOfSheets; ++a) { sheet = wk.GetSheetAt(a) as HSSFSheet; sheetname = wk.GetSheetName(a); if (sheet == null) { Debug.LogError("异常!" + wk.GetFullName()); continue; } if (ret.ContainsKey(sheetname)) { Debug.LogError("该excel表的sheet名字重复了:" + wk.GetSheetName(a)); } else { ConfigFile result = new ConfigFile(wk.GetFullName() + "_" + sheetname); List <String> header = new List <string>(); for (int i = sheet.FirstRowNum; i <= sheet.LastRowNum; ++i) { HSSFRow row = sheet.GetRow(i) as HSSFRow; if (row == null) { continue; } ArrayList line = new ArrayList(); for (int j = row.FirstCellNum; j <= row.LastCellNum; ++j) { HSSFCell cell = row.GetCell(j) as HSSFCell; if (cell == null) { continue; } if (i == sheet.FirstRowNum) { header.Add(cell.ToString()); } else { line.Add(cell.ToString()); } } if (i == sheet.FirstRowNum) { result.SetTitles(header.ToArray()); } else { if (line.Count > 0) { result.AddData(line[0] as String, line); } else { // !< 读完了? break; } } } ret.Add(sheetname, result); } } return(ret); }