环境
Unity:2021.3.6f1c1
EPPlus:5.8.14 net.3.5
准备
- 使用Nuget下载EPPlus,找到 net3.5中的EPPlus.dll文件,导入Unity的Plugins文件夹
- 创建一个xlsx(excel)文件,测试内容如下图
. - 表格内容解释
第一行解释第二行的内容,
第二行对应变量名称,后续使用反射设置变量的值
第三行和第四行成员变量需要设置的内容
"学生信息"是表单的名称,后续使用该名称获取表中的数据
测试脚本
- 加载excel数据,数据内容显示在窗口
using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Text;
using UnityEngine;
using UnityEngine.UI;
public class TestEpplus : MonoBehaviour
{
string filePath = "C:\\Users\\Administrator\\Desktop\\班级信息.xlsx";
[SerializeField] Text text;
void Start()
{
text.text = "数据加载中...";
var infos = ExcelData.CreateObjsFormExcel(filePath);
if (infos != null)
{
var length = infos.Count;
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < length; i++)
{
stringBuilder.Append(infos[i].ToString());
if (i != length - 1)
stringBuilder.Append("\n");
}
text.text = stringBuilder.ToString();
}
else
{
text.text = "excel表格没有加载成功";
}
}
}
- 测试数据类
[System.Serializable]
public class ExcelData
{
public string grade;
public string name;
public int age;
public bool isMale;
public static List<ExcelData> CreateObjsFormExcel(string path)
{
List<ExcelData> gradeData = new List<ExcelData>() { Capacity = 4 };
Type type = typeof(ExcelData);
using (var package = new ExcelPackage(new FileInfo(path)))
{
//获取工作表
ExcelWorksheet excelWorksheet = package.Workbook.Worksheets["学生信息"];
//获取excel表格行列信息
var dimension = excelWorksheet.Dimension;
//行
int begin = dimension.Start.Row;
int end = dimension.End.Row;
//列
int columnBegin = dimension.Start.Column;
int columnEnd = dimension.End.Column;
//逐行 注意行列不是从零开始
//+2 从第三行开始获取对应成员的值
for (int i = begin + 2; i <= end; i++)
{
ExcelData excelData = new ExcelData();
//逐列
for (int j = columnBegin; j <= columnEnd; j++)
{
//GetValue方法获取表格中的值
//根据字符串 反射成员变量信息
FieldInfo fieldInfo = type.GetField(excelWorksheet.GetValue(2, j).ToString());
//设置对象成员变量的值
//使用ChangeType将表格中的值转换为对应类型
fieldInfo.SetValue(excelData, Convert.ChangeType(excelWorksheet.GetValue(i, j), fieldInfo.FieldType));
}
gradeData.Add(excelData);
}
}
return gradeData;
}
public override string ToString()
{
return "班级:" + grade + "、姓名:" + name + "、年龄:" + age + "、性别:" + (isMale == true ? "男。" : "女。");
}
}
编辑器中运行
文章来源:https://www.toymoban.com/news/detail-474126.html
发布后运行
发布后运行,不能加载excel数据文章来源地址https://www.toymoban.com/news/detail-474126.html
解决方法
- 找到Unity编辑器的安装路径
例如:
2019.4.34f1c1\Editor\Data\MonoBleedingEdge\lib\mono\unityjit - 找到以下dll
I18N.CJK.dll 、I18N.dll、I18N.MidEast.dll
I18N.Other.dll、I18N.Rare.dll、I18N.West.dll - 将这些dll放入打包后的文件中
XXXX_Data\Managed
到了这里,关于使用EPPlus加载excel数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!