unity征服Unity3dunity3D技术分享

unity 读取Excel注意大坑

2016-06-30  本文已影响4279人  湛月

前提:使用unity读取excel时,使用如图的dll:

去读取的时候,在编辑器内运行正常,但是在导出时会发现exe在运行时不能正常读取excel。

用这个dll可以读取2007以后的格式.xlsx,也可以读取97-2003的.xls。

笔者最开始使用的是2007版本,导出exe不能读取数据。

解决方法:读取97-2003的文件就可以。但是读取97-2003文档的方法有点不同,

//1. Reading from a binary Excel file ('97-2003 format; *.xls)

IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);

//2. Reading from a OpenXml Excel file (2007 format; *.xlsx)

IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

读取到的excelReader有三种方法:选取一种可以使用的(自己多试试哈)

//3. DataSet - The result of each spreadsheet will be created in the 

result.TablesDataSet result = excelReader.AsDataSet();

//4. DataSet - Create column names from first row

excelReader.IsFirstRowAsColumnNames =true;

DataSet result = excelReader.AsDataSet();

//5. Data Reader methods

while(excelReader.Read())

{

//excelReader.GetInt32(0);

}

最后上代码:

public static void GameReadExcel(string ExcelPath)

{

FileStream stream = File.Open(Application.dataPath + ExcelPath, FileMode.Open, FileAccess.Read);

//读取2007以后版本

// IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

//读取2003以后版本

IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader (stream);

result = excelReader.AsDataSet();

columns = result.Tables[0].Columns.Count;//获取列数

rows = result.Tables[0].Rows.Count;//获取行数

Debug.Log(columns);

Debug.Log(rows);

////从第二行开始读

//for (int i = 1; i < rows; i++)

//{

//    for (int j = 0; j < columns; j++)

//    {

//        string nvalue = result.Tables[0].Rows[i][j].ToString();

//        Debug.Log(nvalue);

//    }

//}

}

本文如有版权问题请联系作者。

 源码地址:https://github.com/ExcelDataReader/ExcelDataReader

上一篇下一篇

猜你喜欢

热点阅读