Unity 底下操作寫入Excel 檔案且匯出xlsx 副檔名,並且需要前置工作,否則匯入dll檔案會導致Unity 錯誤,如果少了dll 檔案發佈專案後,也會導致無法正常輸入Excel 檔案。
當然在正常遊戲設計領域,很少會使用到這項功能,但是 Unity 強項,並非只有在製作遊戲上面哦。
以下來進行,今天主題的內容如何實踐吧~
所先要下載,可以製作Excel方式來進行方便開發。
Excel 全部相關DLL下載 提取碼: 0xso / 備用載點
所使用的工具 EPPLUS 組件方式,來方便撰寫。
Dll 載入Unity中,會出現一些紅字問題。
如下圖:
那個問題是Unity 表示,無法讀取 .Net Standard 2.0 API, 因此需要設定專案。
操作方式為: File/Build Setting....(快捷鍵 : ctrl +shift +b),會出現 Bulid setting 視窗
再設定 API Compatibility Level 選項選擇 .Net4.0 (文章Unity 版本: 2018)
選擇完後,錯誤紅字就會消失,如果還有出現錯誤請刪除 System.Data.dll 這個檔案即可。
再來 我們就來測試一下是否,可以正常寫入與讀取匯出。
我查詢了許多相關資訊,也是有很多方式,覺得比較複雜,這裡提供簡單方式來進行。
再來就是程式部分了 呵呵~
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Excel;
using OfficeOpenXml;
using System.IO;
public class ExcelTest : MonoBehaviour
{
public string filePath = @"C:\Users\user\Desktop\123.xlsx";
FileInfo fileInfo;
ExcelPackage package;
ExcelWorksheet worksheet;
string str = "";
private void OnGUI() {
// 寫入Excel 檔案裏面內容
if(GUILayout.Button("寫入Excel 檔案內容"))
writeExcel();
if(GUILayout.Button("讀取 Excel 檔案名稱")){
str = readExcel();
}
GUILayout.Label("測試: " + str);
}
// 讀取 Excel 檔案
string readExcel(){
string result = "";
fileInfo = new FileInfo(filePath);
package = new ExcelPackage(fileInfo);
worksheet = package.Workbook.Worksheets["Test"];
string str = worksheet.Cells[1, 1].Text;
string str1 = worksheet.Cells[2, 1].Text;
string str2 = worksheet.Cells[3, 1].Text;
result = str + str1 + str2;
return result;
}
// 寫入Excel 檔案
void writeExcel(){
fileInfo = new FileInfo(filePath);
if(fileInfo.Exists){
fileInfo.Delete();
fileInfo = new FileInfo(filePath);
}
fileInfo = new FileInfo(filePath);
package = new ExcelPackage(fileInfo);
worksheet = package.Workbook.Worksheets.Add("Test");
worksheet.Cells[1, 1].Value = "ID";
worksheet.Cells[2, 1].Value = "小名";
worksheet.Cells[3, 1].Value = "小花";
package.Save();
}
}
程式部分解釋:
Excel 裡面表格,可以看成 X, Y 座標的方式來進行。
string str = worksheet.Cells[1, 1].Text;
以上那段程式解釋 string 負責接值由worksheet.cells.text 來傳值。
會發現到Cells[1, 1] 裡面顯示1,1 那個表示Excel 表格位置,當然也可以直接寫成Cells[A1],只是不建議就是了。
主要是寫成A1的話,是直接指定,如果多筆資料要一個一個指定較麻煩,不如使用迴圈條件來進行寫入較方便。
這段程式: worksheet = package.Workbook.Worksheets["Test"]; 是Excel 活頁簿 ,因此Excel 必要有活頁簿才能進行執行。
----------------
結果圖如下:
Unity 發佈與未發佈,執行結果是會有差距的。
因此需要發佈執行為主。