前提:使用unity讀取excel時(shí),使用如圖的dll:

去讀取的時(shí)候,在編輯器內(nèi)運(yùn)行正常,但是在導(dǎo)出時(shí)會(huì)發(fā)現(xiàn)exe在運(yùn)行時(shí)不能正常讀取excel。
用這個(gè)dll可以讀取2007以后的格式.xlsx,也可以讀取97-2003的.xls。
筆者最開(kāi)始使用的是2007版本,導(dǎo)出exe不能讀取數(shù)據(jù)。
解決方法:讀取97-2003的文件就可以。但是讀取97-2003文檔的方法有點(diǎn)不同,
//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;//獲取列數(shù)
rows = result.Tables[0].Rows.Count;//獲取行數(shù)
Debug.Log(columns);
Debug.Log(rows);
////從第二行開(kāi)始讀
//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);
//? ? }
//}
}
本文如有版權(quán)問(wèn)題請(qǐng)聯(lián)系作者。
?源碼地址:https://github.com/ExcelDataReader/ExcelDataReader