Unity 底下操作寫入Excel 檔案且匯出xlsx 副檔名,並且需要前置工作,否則匯入dll檔案會導致Unity 錯誤,如果少了dll 檔案發佈專案後,也會導致無法正常輸入Excel 檔案。

當然在正常遊戲設計領域,很少會使用到這項功能,但是 Unity 強項,並非只有在製作遊戲上面哦。

以下來進行,今天主題的內容如何實踐吧~

所先要下載,可以製作Excel方式來進行方便開發。

Excel 全部相關DLL下載   提取碼: 0xso  /  備用載點

所使用的工具 EPPLUS 組件方式,來方便撰寫。

Dll 載入Unity中,會出現一些紅字問題。

如下圖:

image

那個問題是Unity 表示,無法讀取 .Net Standard 2.0 API, 因此需要設定專案。

操作方式為: File/Build Setting....(快捷鍵 : ctrl +shift +b),會出現 Bulid setting 視窗

Visual Studio code 組件圖示

再設定 API Compatibility Level 選項選擇 .Net4.0 (文章Unity 版本: 2018)

Visual Studio code 組件圖示

選擇完後,錯誤紅字就會消失,如果還有出現錯誤請刪除 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 發佈與未發佈,執行結果是會有差距的。

因此需要發佈執行為主。

Visual Studio code 組件圖示

 

 

arrow
arrow
    文章標籤
    unity教學 Excel 軟體
    全站熱搜

    Xauxas 發表在 痞客邦 留言(0) 人氣()