Unity实现Excel导表操作

本文详细介绍了如何在Unity游戏引擎中实现Excel文件的读取和写入操作,包括利用Unity工具进行数据导入,以及在游戏中动态更新和保存Excel数据的方法,为游戏开发中的数据管理提供便利。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;


#if UNITY_EDITOR
using Newtonsoft.Json;
using OfficeOpenXml;
using UnityEditor;
using System.IO;
#endif

public class UnityTools : MonoBehaviour
{
    static int startCount = 2;    //开始行数
    static int EndCount = 500;    //结束行数


    static int nameCount = 1;      //列数下标
    static int passwordCount = 2;   //列数下标
    static int idCount = 3;     //列数下标

    [MenuItem("Disassembly/数据转换")]
    public static void ChangeData()
    {
        string excelfilepath = Path.Combine(Application.dataPath.Replace("Assets", ""), "Excel/Data.xlsx");   //这个是拿到整个excel的项目路径
        if (!File.Exists(excelfilepath))                                           //插件只支持xlsx
        {
            Debug.Log("此文件不存在");
            return;
        }

        using (ExcelPackage ep = new ExcelPackage(new FileInfo(excelfilepath)))
        {
            ExcelWorksheet worksheet = ep.Workbook.Worksheets[1];   ///表格都是从1下标开始的,不是从0 的
            if (worksheet != null)
            {
                MyDtate myData = new MyDtate();    //数据实例

                for (int i = startCount; i < EndCount; i++)
                {
                    SigleData sd = new SigleData();  //数据实例
                    sd.name = worksheet.Cells[i, nameCount].GetValue<string>();
                    sd.password = worksheet.Cells[i, passwordCount].GetValue<string>();
                    sd.id = worksheet.Cells[i, idCount].GetValue<int>();    //数据填入
                    myData.sigleData.Add(sd); 
                }

                string disassemblyjson = JsonConvert.SerializeObject(myData, Formatting.Indented);   //数据序列化
                File.WriteAllText(Path.Combine(Application.streamingAssetsPath, "Data.json"), disassemblyjson);   //写入对应位置的json
                Debug.Log("End!!!");

            }
        }
    }


    private void Start()
    {
        //string str = Application.dataPath.Replace("Assets", "");
        //Debug.Log(str);
    }

[MenuItem("Disassembly/打开Excel文件")]
    public static void OpenFile()
    {
        System.Diagnostics.Process.Start(Path.Combine(Application.dataPath.Replace("Assets", ""), "Excels/Disassembly.xlsx"));   //打开文件快捷键
    }

}

/// <summary>
/// 数据结构
/// </summary>
public class MyDtate
{
    public List<SigleData> sigleData = new List<SigleData>();
}


public class SigleData
{
    public string name;
    public string password;
    public int id;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一丁目赠我

谢谢你的打赏,感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值