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

182 lines
6.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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++) //ÁÐ
{
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<TeamData_DataInfo> SelectTeamTable(string name, string sheetName = "Sheet1")
{
string excelName = name + ".xlsx";
List<TeamData_DataInfo> array = new List<TeamData_DataInfo>();
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 teamName = objs[i, 2].ToString();
TeamData_DataInfo info = new TeamData_DataInfo(
id,
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++) //ÁÐ
{
string id = objs[i, 1].ToString();
string cultrueName = objs[i, 2].ToString();
CultrueData_DataInfo info = new CultrueData_DataInfo(
id,
cultrueName
);
array.Add(info);
}
return array;
}
/// <summary>
/// ¶ÁÈ¡ Excel ; ÐèÒªÌí¼Ó Excel.dll; System.Data.dll;
/// </summary>
/// <param name="excelName">excelÎļþÃû</param>
/// <param name="sheetName">sheetÃû³Æ</param>
/// <returns>DataRowµÄ¼¯ºÏ</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¿ÉÒÔ°´ÕÕsheetÃû»ñÈ¡£¬Ò²¿ÉÒÔ°´ÕÕsheetË÷Òý»ñÈ¡
// //return result.Tables[0].Rows;
// return result.Tables[sheetName].Rows;
}
private static DataTable GetDataTable()
{
return new DataTable("");
}
/// <summary>
/// ¶ÁÈ¡ Excel ; ÐèÒªÌí¼Ó Excel.dll; System.Data.dll;
/// </summary>
/// <param name="excelName">excelÎļþÃû</param>
/// <param name="sheetName">sheetË÷Òý</param>
/// <returns>DataRowµÄ¼¯ºÏ</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¿ÉÒÔ°´ÕÕsheetÃû»ñÈ¡£¬Ò²¿ÉÒÔ°´ÕÕsheetË÷Òý»ñÈ¡
// //return result.Tables[0].Rows;
// return result.Tables[sheetIndex].Rows;
// }
}
}