unity 读取Excel

前提:使用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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值