今天想弄个Unity读取Excel的功能的,发现网上有许多方法,采用其中一种方法:加入库文件 Excel.dll 和ICSharpCode.SharpZipLib.dll库文件,(还有System.Data.dll也要拷贝进来,在Unity安装路径C:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity中),代码下载链接在最后。
使用时要注意1997-2003和2007版本的脚本不一样:
然后编写脚本DoExcel.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Data;
using System.IO;
using Excel;
public class DoExcel {
public static DataSet ReadExcel(string path)
{
FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read);
// CreateOpenXmlReader用于读取Excel2007版本及以上的文件
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
DataSet result = excelReader.AsDataSet();
excelReader.Close();
return result;
}
public static List
{
List
DataSet resultds = ReadExcel(path);
int column = resultds.Tables[0].Columns.Count;
int row = resultds.Tables[0].Rows.Count;
Debug.LogWarning(column + " " + row);
for(int i=1;i { DepenceTableData temp_data; temp_data.instruct = resultds.Tables[0].Rows[i][0].ToString(); temp_data.word = resultds.Tables[0].Rows[i][1].ToString(); Debug.Log(temp_data.instruct + " " + temp_data.word); _data.Add(temp_data); } return _data; } } public struct DepenceTableData { public string word; public string instruct; } 再写一个脚本PrintExcel.cs using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PrintExcel : MonoBehaviour { public List void Start () { Text T = GameObject.Find("Canvas/Text").GetComponent T.text = "";//清空一开始的文本 listdata = DoExcel.Load(Application.dataPath + "\\Data\\" + "Test2007.xlsx"); foreach(var listing in listdata) { print(listing.instruct + " " + listing.word); T.text += (listing.instruct + " " + listing.word + "\n").ToString(); } } } 编写Excel如下: 层级视图如下: Test2007.xlsx放到新建的Data文件夹下; 将PrintExcel拖拽到Main Camera脚本中,添加Canvas->Text用于显示Excel提取的文本,编辑器运行如下: 发布时打开调试功能: 问题是发布exe之后,然后需要手动添加Excel文件到***_Data下,例如我的Excel放在Data文件夹: 运行后发现不能打开文件,报错了! 发现需要添加I18N*.dll等一些列dll才能打开。添加时可以在编辑器的Plugins添加,也可以发布后在***_Data/Managed下面添加这些dll。 这些dll来自Unity安装路径C:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity中。 添加好之后,便可以显示文本!!!如下所示。 如果用 FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read); IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream); 打开Excel1997-2003文件。会发现不能显示中文和字母,发布后也不能显示,加上I18N*.dll也不能显示。把Excel的编码格式改成UTF-8也不能显示。 打开Excel1997-2003文本显示如下,中文和字母不能显示: 查了一些资料都不能解决这个问题,奇了怪了,有谁知道的交流一下啊! 工程源代码下载路径:http://download.csdn.net/detail/u011423279/9865038 采用Unity5.5.1开发的,请用相近的版本打开,如果打开奔溃或报错,则将工程下的Assets和ProjectSettings保留,其他全部删除再重新打开