csharp
public class ExcelParse : MonoBehaviour
{
public Dictionary<string, DataTable> GetExcelData(string filePath)
{
Dictionary<string, DataTable> worksheets = new Dictionary<string, DataTable>();
FileInfo fileInfo = new FileInfo(filePath);
using (ExcelPackage package = new ExcelPackage(fileInfo))
{
ExcelWorkbook workbook = package.Workbook;
if (workbook != null)
{
foreach (ExcelWorksheet worksheet in workbook.Worksheets)
{
// 创建一个新的DataTable对象
DataTable dataTable = ExcelFileRead(worksheet,false);
// 将 DataTable 存储到 Dictionary 中
worksheets.Add(worksheet.Name, dataTable);
}
}
}
return worksheets;
}
/// <summary>
///
/// </summary>
/// <param name="workBook"></param>
/// <param name="index"></param>
/// <param name="sheetName"></param>
/// <param name="isHadColumnName">是否包含列名,默认有</param>
/// <returns></returns>
private DataTable ExcelFileRead(ExcelWorksheet sheet,bool isHadColumnName = true)
{
DataTable dt = new DataTable();
int cellCount = sheet.Dimension.End.Column; //总列数
int rowCount = sheet.Dimension.End.Row; //总行数
if (sheet != null && (rowCount + 1) != 0)
{
int firstRow = sheet.Dimension.Start.Row;
int firsColumn=sheet.Dimension.Start.Column;
if (isHadColumnName)
{
for (int i =firsColumn; i < cellCount; i++)
{
string columnName = Convert.ToString(sheet.Cells[firstRow, i].Value);
dt.Columns.Add(columnName);
}
firstRow = 2;
}
else
{
for (int i = 0; i < cellCount; i++)
{
DataColumn dataColumn = new DataColumn("Column" + i);
dt.Columns.Add(dataColumn);
}
}
for (int i = firstRow; i < rowCount+1; i++)
{
DataRow dataRow = dt.NewRow();
for (int j = firsColumn; j < cellCount+1; j++)
{
if (sheet.Cells[i, j].Value != null)
{
dataRow[j-1] = sheet.Cells[i, j].Value.ToString();
//UnityEngine.Debug.Log(dataRow[j - 1]);
}
else
{
dataRow[j-1] = "";
}
}
dt.Rows.Add(dataRow);
}
}
return dt;
}
经过测试只能在编辑器和打包exe能解析成功,打包到安卓apk就无法解析