Unity Excel读取

43 篇文章 0 订阅

使用ExcelDataReader库https://github.com/ExcelDataReader/ExcelDataReader

可用vs nuget 获取 ExcelDataReader和ExcelDataReader.DataSet库;

void ReadExcel(Stream _s)
    {
        IExcelDataReader excelReader = ExcelReaderFactory.CreateReader(_s);
        var _ds = excelReader.AsDataSet(new ExcelDataSetConfiguration() {
            ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
            {
                UseHeaderRow = true
            },
            UseColumnDataType = false
        });
        //var _ds = excelReader.AsDataSet(); 
        DataRowCollection _rows = _ds.Tables[0].Rows;
        for (int i = 1; i < _rows.Count; i++)
        {
            //string _str = "工作项-" + _rows[i][0] + " 工作内容-" + _rows[i][1] + " 责任人-" + _rows[i][2];
            Debug.Log(_str);
            //_text.text += _str;
        }
        Debug.Log("ExcelReader--Read()");
        string sheetName = excelReader.Name;
        int sheetfield = excelReader.FieldCount;
        int sheetCount = excelReader.ResultsCount;
        Debug.Log("SheetCount:" + sheetCount + " SheetField:" + sheetfield + " of SheetName:" + sheetName);
        //while (excelReader.Read())
        //{
        //    Debug.Log(excelReader.GetString(0));
        //    Debug.Log(excelReader.GetString(1));
        //    Debug.Log(excelReader.GetString(2));
        //
        //}
        excelReader.Close();

    }


---------------------------------------------------------------------------------------------

如果报错:InvalidCastException: Cannot cast from source type to destination type.
System.Data.Common.DoubleDataContainer.DoCopyValue (System.Data.Common.DataContainer from, Int32 from_index, Int32 to_index)
System.Data.Common.DataContainer.CopyValue (System.Data.Common.DataContainer from, Int32 from_index, Int32 to_index)

System.Data.Common.RecordCache.CopyRecord (System.Data.DataTable fromTable, Int32 fromRecordIndex, Int32 toRecordIndex)

调用AsDataSet时,出现InvalidCastException: Cannot cast from source type to destination type.错误,是由于Excel的cell中没有内容导致,可以用如下方法绕过这个错误:
DataSet ds = reader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable = (tableReader) => new ExcelDataTableConfiguration()
{
UseHeaderRow = true
},

UseColumnDataType = false
});


Unity读取Excel文件,你可以使用第三方库来实现。下面是一种常用的方法: 1. 下载并导入NPOI库(https://github.com/tonyqus/npoi)到你的Unity项目中。 2. 创建一个C#脚本,用于读取Excel文件的数据。下面是一个简单的示例: ```csharp using UnityEngine; using System.IO; using NPOI.SS.UserModel; using NPOI.HSSF.UserModel; public class ExcelReader : MonoBehaviour { void Start() { // Excel文件路径 string filePath = Application.dataPath + "/your_excel_file.xls"; // 使用HSSFWorkbook类加载Excel文件 HSSFWorkbook workbook; using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { workbook = new HSSFWorkbook(fileStream); } // 获取第一个工作表 ISheet sheet = workbook.GetSheetAt(0); // 获取行数和列数 int rowCount = sheet.LastRowNum + 1; int columnCount = sheet.GetRow(0).LastCellNum; // 遍历每一行 for (int i = 0; i < rowCount; i++) { IRow row = sheet.GetRow(i); // 遍历每一列 for (int j = 0; j < columnCount; j++) { ICell cell = row.GetCell(j); // 获取单元格的值 string cellValue = cell.ToString(); // 在这里处理每个单元格的数据 Debug.Log("Cell[" + i + "," + j + "]: " + cellValue); } } } } ``` 确保将 `your_excel_file.xls` 替换为你的Excel文件的路径和名称。 3. 将脚本附加到一个游戏对象上,运行游戏即可读取Excel文件的数据。 这样就可以在Unity读取Excel文件了。请注意,该示例使用的是NPOI库来读取.xls格式的文件,如果你需要读取.xlsx格式的文件,可以使用NPOI的另一个版本 NPOI.XSSF。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值