unity 中Excle的读取与使用

需要加入库文件 Excel.dll 和ICSharpCode.SharpZipLib库文件,官方链接 http://exceldatareader.codeplex.com/

然后引入 excle命名空间(using Excel;)

1.将excle数据读取并存入bytes文件

             FileStream stream = File.Open(文件路径, FileMode.Open, FileAccess.Read);


            IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

            ExcelDataSet set = new ExcelDataSet();//protobuf中定义的类
            do
            {
                ExcelDataTable table = new ExcelDataTable();
                // sheet name   
                while (excelReader.Read())//读取一行
                {
                    ExcelDataRow row = new ExcelDataRow();
                    for (int i = 0; i < excelReader.FieldCount; i++)
                    {
                        string value = excelReader.IsDBNull(i) ? "" : excelReader.GetString(i);//读取数据是否为null ,不为空取出数据
                        row.Cells.Add(value);
                    }
                    table.Rows.Add(row);
                }
                if (table.Rows.Count > 0)
                    set.Tables.Add(table);

            } while (excelReader.NextResult());
            
            //protobuf中的转化二进制方法
            var bytes = set.ToByteArray();

           //写入文件
            File.WriteAllBytes(targetPath, bytes);

2.读取excle生成的bytes文件

public class ReadExcel
{


    /// <summary>  
    /// 只读Excel方法  
    /// </summary>  
    /// <param name="ExcelPath"></param>  
    /// <returns></returns>  
    public static DataSet GameReadExcel(string ExcelPath)
    {

        TextAsset asset = ResourceManager.Instance.Load<TextAsset>(ExcelPath);//加载bytes文件
        var dataset = ExcelDataSet.Parser.ParseFrom(asset.bytes);//读取的文件转化为proto类

      
        //dataset.Tables[0].Rows[]
        
        DataSet set = ExcelUtils.ConvertDataSet(dataset);//将proto类转化为DataSet类型

        return set;
    }      
}


public class ExcelUtils : ScriptableObject
{

    //将protobuf中的数据转化成DataSet
    public static DataSet ConvertDataSet(ExcelDataSet dataSet )
    {
        DataSet set = new DataSet();
        for (int i = 0; i < dataSet.Tables.Count; i++)
        {
            var tableData = dataSet.Tables[i];

            DataTable table = new DataTable();

            int columnCount = dataSet.Tables[i].Rows[0].Cells.Count;
            int rowCount = dataSet.Tables[i].Rows.Count;
            for (int k = 0; k < columnCount; k++)
            {
                table.Columns.Add(new DataColumn());
            }

            for (int m = 0; m < rowCount; m++)
            {
                object[] rowData = new object[columnCount];
                for (int n = 0; n < columnCount; n++)
                {
                    rowData[n] = tableData.Rows[m].Cells[n];
                }
                table.Rows.Add(rowData);
            }
            set.Tables.Add(table);
        }

        return set;
    }

}

 

3.使用excle数据

public DataSet skillData;

skillData = ReadExcel.GameReadExcel(skillPath);

int rows = skillData.Tables[0].Rows.Count;//第一张表的行数
int itemcount = skillData.Tables[0].Rows[0].ItemArray.Length;//第一张表第一行的列数

string string_item skillTable.Rows[i][j].ToString();

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Unity读取Excel,你可以使用C#ExcelDataReader库。这个库可以帮助你在Unity项目读取Excel文件,然后将数据转换为C#的对象。 以下是使用ExcelDataReader库在Unity读取Excel文件的基本步骤: 1. 在Unity安装ExcelDataReader库。你可以使用NuGet包管理器来安装这个库,或者手动下载并添加到项目。 2. 在Unity项目创建一个C#脚本,然后添加ExcelDataReader命名空间。 3. 使用ExcelDataReader库打开Excel文件,并将数据读取到一个DataSet。 4. 遍历DataSet的数据,并将其转换为C#的对象。 5. 在Unity使用读取到的数据进行操作。 注意,ExcelDataReader库依赖于其他库,如System.Data和System.IO。因此,在使用ExcelDataReader之前,你需要确保这些库已经被正确地添加到你的项目。 下面是一个读取Excel文件并将其转换为C#对象的示例代码: ``` using ExcelDataReader; using System.Data; using System.IO; public class ExcelReader : MonoBehaviour { void Start() { // 读取Excel文件 using (var stream = File.Open("data.xlsx", FileMode.Open, FileAccess.Read)) { // 将数据读取DataSet using (var reader = ExcelReaderFactory.CreateReader(stream)) { var result = reader.AsDataSet(); // 遍历DataSet的数据 foreach (DataTable table in result.Tables) { foreach (DataRow row in table.Rows) { // 将数据转换为C#的对象 var obj = new MyObject(); obj.Field1 = row["Field1"].ToString(); obj.Field2 = int.Parse(row["Field2"].ToString()); // 在Unity使用读取到的数据进行操作 // ... } } } } } } public class MyObject { public string Field1 { get; set; } public int Field2 { get; set; } } ``` 这个例子展示了如何将Excel文件的数据读取到一个DataSet,并将其转换为C#的对象。你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值