在Unity环境中读取Excel配置文件(入门)

使用Excel作为配置的优势

a2c7ab4dc148441792feabef0ccc4e2c.png

        使用Excel作为配置文件有相对普通的文本文档/json等类型的配置文件有一个更好的优点,更易于编辑,更易读.譬如上面的例子,我可以制作一个人员名单,可以记录它们的姓名,年龄等信息,每一行就是一个对象,该表就是一个List.

环境准备

GitHub - ExcelDataReader/ExcelDataReader: Lightweight and fast library written in C# for reading Microsoft Excel files

6aa320c7bcbd403d9d233a83f4404f50.png

选择右侧release版本中较新的版本就可以

89ec621fb3f34342b78f47b44c0e6f59.png

        一般下载前两个,将拓展名改为能解压的类型(7z,zip等),然后解压在lib中找到dll,一般选择.netstandard2.0/2.1.放到Unity项目的Plugins文件夹下,后两个是源代码,大佬可以拿过来自己修改编译.

代码

        

using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.IO;
using ExcelDataReader;//引入命名空间
using UnityEngine;


namespace Project.Utility
{
  
 public class Person
 {
     public string name;
     public int age;
     public int gender;
     public string hobby;
 }

    public class GetConfigUtility 
    {
        /// <summary>
        /// 加载Excel配置,必须放在StreamingAssets/ConfigFiles下(必须放在StreamingAssets下)
        /// </summary>
        /// <param name="excelFileName">文件名(需加文件后缀)</param>
        /// <returns>返回一个Dictionary(表名,表)</returns>
        public Dictionary<string, DataTable> GetExcelConfig(string excelFileName)
        {
            //拼接路径
            string path = Path.Combine(Application.streamingAssetsPath, "ConfigFiles", excelFileName);
            //获得该Excel文件的流
            using (var stream = File.Open(path, FileMode.Open, FileAccess.Read))
            {
                //这个流给到ExcelReaderFactory,创建一个ExcelReader对象
                using (var reader = ExcelReaderFactory.CreateReader(stream))
                {
                    // 配置 DataSet 读取
                    var conf = new ExcelDataSetConfiguration
                    {
                        ConfigureDataTable = _ => new ExcelDataTableConfiguration
                        {
                            UseHeaderRow = true // 使用第一行作为列标题
                        }
                    };
                    //实例一个字典,键是表名(因为可以获取很多张表),值是一个表的对象
                    Dictionary<string, DataTable> dataTableDic = new Dictionary<string, DataTable>();
                    var dataSet = reader.AsDataSet(conf);//获取一个DataSet对象
                    //从DataSet对象中的Tables属性中遍历所有的表
                    foreach (DataTable dataTable in dataSet.Tables)
                    {
                        dataTableDic.Add(dataTable.TableName, dataTable);
                    }

                    return dataTableDic;
                }
            }
        }
        
            //读取某个表转为List
              public List<Person> GetPersonList(Dictionary<string, DataTable> excelDic)
          {
              var personList = new List<Person>();
              DataTable t = excelDic["你的表名"];//索引器填表名拿到表
              for (int i = 0; i < t.Rows.Count; i++)//Rows属性代表所有行
              {
                  Person person = new Person();
               //Rows[i]拿到具体的行,第一行被忽略,因为上面使用了ExcelDataSetConfiguration
               //Rows[i][0]代表i行第0个元素,但是类型是obj
                  person.name = t.Rows[i][0].ToString();
                  person.gender = int.Parse(t.Rows[i][1].ToString());
                  person.age = int.Parse(t.Rows[i][2].ToString());
                  person.name = t.Rows[i][3].ToString();
                  personList.Add(person);
               }
                  return personList;

              }
    }

}

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity读取Excel配置文件的插件有很多,其比较常用的有NPOI和ExcelDataReader。 NPOI是 Apache 的一个开源项目,它可以帮助我们在Unity读取、写入和操作Excel文件。NPOI提供了一系列的类和方法,可以很方便地打开Excel文件,读取的数据,并将其转换成对应的对象。我们只需要将NPOI的DLL文件导入到Unity项目,并在代码引入相关命名空间,就可以开始使用NPOI了。 另一个常用的插件是ExcelDataReader,它也是一个开源项目,可以在Unity读取Excel文件。与NPOI不同的是,ExcelDataReader不需要额外导入文件,它是直接在运行时解析Excel文件的。我们可以通过ExcelDataReader提供的API来打开Excel文件,并读取的数据。ExcelDataReader支持各种常见的Excel文件格式,包括XLS、XLSX等。 无论是使用NPOI还是ExcelDataReader,读取Excel配置文件的过程基本相似。首先,我们需要确定Excel文件的路径,然后使用相应的方法打开Excel文件。接下来,我们可以使用循环遍历的方式读取Excel的每一行,然后获取每个单元格的值。在读取Excel数据后,我们可以将其转化为我们需要的数据结构,例如数组、字典或自定义的对象。最后,我们可以根据读取到的数据进行相应的处理,例如初始化游戏的配置参数或生成游戏的物体。 总之,Unity读取Excel配置文件的插件可以帮助我们方便地获取Excel的数据,并在游戏进行处理和应用。根据具体需求,我们可以选择合适的插件来实现读取Excel配置文件的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值