using UnityEngine; using Excel; using System.Data; using System.IO; using System.Collections.Generic; using System.Linq; using OfficeOpenXml; using OfficeOpenXml.Table; using Unity.VisualScripting; namespace ZXL.Excel { public class ReadExcel { //public static string Excel = "Book"; public static List SelectPlayerTable(string name, string sheetName = "Sheet1") { string excelName = name + ".xlsx"; List array = new List(); var objs = ReadExcel.Read(excelName, sheetName); var xLeng = objs.GetLength(1); var yLeng = objs.GetLength(0); for (var i = 2; i < yLeng; i++) //列 { string id = objs[i, 1].ToString(); string playerName = objs[i, 2].ToString(); Player_DataInfo info = new Player_DataInfo( id, playerName ); array.Add(info); } return array; } public static List SelectGroupTable(string name, string sheetName = "Sheet1") { string excelName = name + ".xlsx"; List array = new List(); var objs = ReadExcel.Read(excelName, sheetName); var xLeng = objs.GetLength(1); var yLeng = objs.GetLength(0); for (var i = 2; i < yLeng; i++) //列 { string id = objs[i, 1].ToString(); string groupName = objs[i, 2].ToString(); GroupData_DataInfo info = new GroupData_DataInfo( id, groupName ); array.Add(info); } return array; } /// /// 读取 Excel ; 需要添加 Excel.dll; System.Data.dll; /// /// excel文件名 /// sheet名称 /// DataRow的集合 static object[,] Read(string excelName, string sheetName) { object[,] objs = new object[,] { }; using FileStream fs = new FileStream(Application.streamingAssetsPath + "/Excel/" + excelName, FileMode.Open, FileAccess.Read, FileShare.Read); using (var pck = new ExcelPackage(fs)) { var sheet = pck.Workbook.Worksheets[sheetName]; var excelRange = sheet.Cells["b:g"]; int row = excelRange.Count(x => x.Address.Length == 2 && x.Address[1] == '2'); var enumerable = excelRange.Select((x, i) => { if (x.Address.Length == 2 && x.Address[1] == '1') { return null; } return x.Value.ToString(); }); var strings = enumerable.Where(x => x is not null).ToArray(); List list = new List(); var stringsLength = strings.Length; for (var i = 0; (i + row - 1) < stringsLength; i += row) { var strings1 = new string[row]; for (var i1 = 0; i1 < row; i1++) { strings1[i1] = strings[i + i1]; } list.Add(strings1); } foreach (var strings1 in list) { Debug.Log(string.Join(',', strings1)); } objs = sheet.Cells.Value as object[,]; return objs; } // string path = Application.streamingAssetsPath + "/Excel/" + excelName; // //string path = Application.dataPath + "/" + excelName; // FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read); // IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); // // DataSet result = excelReader.AsDataSet(); // //int columns = result.Tables[0].Columns.Count; // //int rows = result.Tables[0].Rows.Count; // // //tables可以按照sheet名获取,也可以按照sheet索引获取 // //return result.Tables[0].Rows; // return result.Tables[sheetName].Rows; } private static DataTable GetDataTable() { return new DataTable(""); } /// /// 读取 Excel ; 需要添加 Excel.dll; System.Data.dll; /// /// excel文件名 /// sheet索引 /// DataRow的集合 static DataRowCollection Read(string excelName, int sheetIndex) { string path = Application.streamingAssetsPath + "/Excel/" + excelName; //string path = Application.dataPath + "/" + excelName; FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read); IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); DataSet result = excelReader.AsDataSet(); //int columns = result.Tables[0].Columns.Count; //int rows = result.Tables[0].Rows.Count; //tables可以按照sheet名获取,也可以按照sheet索引获取 //return result.Tables[0].Rows; return result.Tables[sheetIndex].Rows; } } }