WaiXie_QuestionSystem/Assets/Script/Excel/Read/ReadExcel.cs

182 lines
6.3 KiB
C#
Raw Normal View History

2023-12-10 12:28:20 +08:00
using UnityEngine;
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<Player_DataInfo> SelectPlayerTable(string name, string sheetName = "Sheet1")
{
string excelName = name + ".xlsx";
List<Player_DataInfo> array = new List<Player_DataInfo>();
var objs = ReadExcel.Read(excelName, sheetName);
var xLeng = objs.GetLength(1);
var yLeng = objs.GetLength(0);
for (var i = 2; i < yLeng; i++) //<2F><>
{
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;
}
2023-12-12 10:29:10 +08:00
public static List<TeamData_DataInfo> SelectTeamTable(string name, string sheetName = "Sheet1")
2023-12-10 12:28:20 +08:00
{
string excelName = name + ".xlsx";
2023-12-12 10:29:10 +08:00
List<TeamData_DataInfo> array = new List<TeamData_DataInfo>();
2023-12-10 12:28:20 +08:00
var objs = ReadExcel.Read(excelName, sheetName);
var xLeng = objs.GetLength(1);
var yLeng = objs.GetLength(0);
for (var i = 2; i < yLeng; i++) //<2F><>
{
string id = objs[i, 1].ToString();
2023-12-12 10:29:10 +08:00
string teamName = objs[i, 2].ToString();
TeamData_DataInfo info = new TeamData_DataInfo(
2023-12-10 12:28:20 +08:00
id,
2023-12-12 10:29:10 +08:00
teamName
);
array.Add(info);
}
return array;
}
public static List<CultrueData_DataInfo> SelectCultrueTable(string name, string sheetName = "Sheet1")
{
string excelName = name + ".xlsx";
List<CultrueData_DataInfo> array = new List<CultrueData_DataInfo>();
var objs = ReadExcel.Read(excelName, sheetName);
var xLeng = objs.GetLength(1);
var yLeng = objs.GetLength(0);
for (var i = 2; i < yLeng; i++) //<2F><>
{
string id = objs[i, 1].ToString();
string cultrueName = objs[i, 2].ToString();
CultrueData_DataInfo info = new CultrueData_DataInfo(
id,
cultrueName
2023-12-10 12:28:20 +08:00
);
array.Add(info);
}
return array;
}
/// <summary>
/// <20><>ȡ Excel ; <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD> Excel.dll; System.Data.dll;
/// </summary>
/// <param name="excelName">excel<65>ļ<EFBFBD><C4BC><EFBFBD></param>
/// <param name="sheetName">sheet<65><74><EFBFBD><EFBFBD></param>
/// <returns>DataRow<6F>ļ<EFBFBD><C4BC><EFBFBD></returns>
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<string[]> list = new List<string[]>();
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<65><73><EFBFBD>԰<EFBFBD><D4B0><EFBFBD>sheet<65><74><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ҳ<EFBFBD><D2B2><EFBFBD>԰<EFBFBD><D4B0><EFBFBD>sheet<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
// //return result.Tables[0].Rows;
// return result.Tables[sheetName].Rows;
}
private static DataTable GetDataTable()
{
return new DataTable("");
}
/// <summary>
/// <20><>ȡ Excel ; <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD> Excel.dll; System.Data.dll;
/// </summary>
/// <param name="excelName">excel<65>ļ<EFBFBD><C4BC><EFBFBD></param>
/// <param name="sheetName">sheet<65><74><EFBFBD><EFBFBD></param>
/// <returns>DataRow<6F>ļ<EFBFBD><C4BC><EFBFBD></returns>
// 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<65><73><EFBFBD>԰<EFBFBD><D4B0><EFBFBD>sheet<65><74><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ҳ<EFBFBD><D2B2><EFBFBD>԰<EFBFBD><D4B0><EFBFBD>sheet<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
// //return result.Tables[0].Rows;
// return result.Tables[sheetIndex].Rows;
// }
2023-12-10 12:28:20 +08:00
}
2023-12-10 12:28:20 +08:00
}