Unity3D开发过程中,对于Excel表的读取是很频繁的一件事情,主要是用来记录各种数据,各个平台可能有很多方式方法,比如Android,你可以插件,也可以用第三方Java开发,打包成Plugin下用的.dll包,再C#和Java交互实现Excel读取(比较麻烦,不建议,除非你对安卓开发也很了解,可以使用)
今天说一下FlexReader插件,专门读取Excel文件内容。
直接上代码:
插件:可以上Asset Store上直接搜FlexReader(土豪使用)
下载地址:链接:https://pan.baidu.com/s/1mLTu2ymQY0Wmvpzb0DQ5iw 密码:j9m6
//异步加载文件

 IEnumerator LoadGuideAync(string path, DownloadHandler handler)
    {
        var url = Path.Combine(Application.streamingAssetsPath, path);
        using (var request = UnityWebRequest.Get(url))
        {
            yield return request.SendWebRequest();
            var bytes = request.downloadHandler.data;
            handler(bytes);
        }
    }

//加载到内容回调

  void LoadGuideData(byte[] bytes)
    {
        //bytes就是加载Excel中文件内容流
        if (bytes.Length == 0)
            return;
        //通过插件的WorkBook类转换得到一个列表,这个列表的大小就表示的是Excel中表的个数。
        var book = new WorkBook(bytes);
        Debug.Log(book.Count);
        if (book.Count < 2)
            return;
        InitNoviceGuideRectTransform(book[0]);
        InitNoviceGuideRectTransform(book[1]);
    }

对每一个表进行解析,读取每格的数据

         void InitNoviceGuideRectTransform(IEnumerable rows)
    {
        int index = -1;
        int count = rows.Count(r => !r.IsEmpty());
        if (count == 0)
            return;
                //将二维数字存到列表 ,通过行列读取 
        List rowData = new List(rows);
                 for (int j = 1; j < rowData .Count; j++)//行
        {
            for (int i = 0; i < rowData[j].Count; i++)//列
            {
                Debug.Log(rowData[j][i].Text);
            }
        }  
  }

就是这么简单,读取你想要的数据,干你想干的事情。