unity 读取Excel注意大坑

作者: 湛月 | 来源:发表于2016-06-30 14:56 被阅读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

    相关文章

      网友评论

      • 记得要忘记_c7b5:楼主的意思是这个方式打包EXE之后不能读取2007之后的Excel??
        6524726490e3:您好,请问在unity3d里面写入excelReader.IsFirstRowAsColumnNames = true;这句读取excel文件时,总是报错InvalidCastException: Cannot cast from source type to destination type.,您知道怎么回事吗?万分感谢
        6524726490e3:您好,请问在unity3d里面写入excelReader.IsFirstRowAsColumnNames = true;这句读取excel文件时,总是报错InvalidCastException: Cannot cast from source type to destination type.,您知道怎么回事吗?万分感谢
        a509960e2443:可以吧http://www.cnblogs.com/XRTSDUT2008/p/6964856.html
      • a8bf62b973c3:你好,读取的03版本的excel我这边测试只能读取到数字,英文和中文都获取不到,请问你有这个情况吗
        a509960e2443:我也是,试了不行,07可以http://www.cnblogs.com/XRTSDUT2008/p/6964856.html
        a509960e2443:@湛月 我试了一下不行,07发布可以显示excel文本,需要加一些dll。详见博客http://www.cnblogs.com/XRTSDUT2008/p/6964856.html
        湛月:你修改一下excel编码吧,用utf保存试试

      本文标题:unity 读取Excel注意大坑

      本文链接:https://www.haomeiwen.com/subject/jrxfjttx.html