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<Row> rows)
{
int index = -1;
int count = rows.Count(r => !r.IsEmpty());
if (count == 0)
return;
//將二維數字存到列表 ,通過行列讀取
List<Row> rowData = new List<Row>(rows);
for (int j = 1; j < rowData .Count; j++)//行
{
for (int i = 0; i < rowData[j].Count; i++)//列
{
Debug.Log(rowData[j][i].Text);
}
}
}
就是這麼簡單,讀取你想要的數據,幹你想幹的事情。