Unity——读取Excel中的数据

本文介绍了在Unity中如何通过引入第三方库(Excel.dll, ICSharpCode.SharpZipLib.dll, System.Data.dll)来读取Excel数据。首先将库文件放入Assets的Plugins文件夹,接着在Unity工程中添加引用,然后编写读取Excel的脚本,最后创建另一个脚本来调用和显示数据。运行后,Unity能够成功读取并输出Excel表格内容。" 112035414,10535102,Github与Gitee同步操作指南,"['git', '代码管理', '版本控制', 'Github', 'Gitee']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       当涉及的数据很多且没有规律时,用代码一一写入,不仅耗时还很low。此时较好的方法就是讲数据写入Excel,然后获取表中的数据,简单又快,但unity不能直接导入读取Excel,需要借助第三方的库进行解析(需下载Excel.dll,ICSharpCode.SharpZipLib.dll,System.Data.dll),下载链接https://download.csdn.net/download/ro969668074/11125526,原本想上传分享给大家的,但莫名被设置成下载要积分了,没有积分或C币的朋友可以在网上找找。

        1.首先将现在好的解压到Asset的Plugins文件夹中,没有的话新建一个,如图

                                       

提示:一般unity中自带System.Data,不需要放到添加System.Data,多个System.Data在打包的时候会报错。

        2.光添加是不够的,还需要在当前工程目录下添加引用。(1)随机选择该项目中的脚本,打开Visual Studio,找到“解决方案资源管理器”下的“引用”,右键,选择“添加引用”,如图

### 如何在 Unity 中使用 C# 读取 Excel 文件 要在 Unity 中通过 C# 实现对 Excel 文件的读取功能,可以选择多种方法和技术栈。以下是几种常见的实现方式及其对应的代码示例。 #### 方法一:使用 NPOI 库 NPOI 是一个强大的开源库,支持读写 Microsoft Office 文档(包括 `.xls` 和 `.xlsx`)。以下是如何利用 NPOI 在 Unity读取 Excel 的具体实现: ```csharp using UnityEngine; using System.IO; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; public class ReadExcel : MonoBehaviour { void Start() { string filePath = Application.dataPath + "/example.xlsx"; // 替换为实际文件路径 if (!File.Exists(filePath)) { Debug.LogError("Excel 文件不存在!"); return; } using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { IWorkbook workbook = new XSSFWorkbook(fileStream); ISheet sheet = workbook.GetSheetAt(0); for (int rowIndex = sheet.FirstRowNum; rowIndex <= sheet.LastRowNum; rowIndex++) { IRow row = sheet.GetRow(rowIndex); if (row == null) continue; for (int colIndex = 0; colIndex < row.LastCellNum; colIndex++) { ICell cell = row.GetCell(colIndex); string value = cell?.ToString() ?? ""; Debug.Log($"Row {rowIndex}, Column {colIndex}: {value}"); } } } } } ``` 此代码片段展示了如何加载并解析 Excel 文件的内容[^1]。需要注意的是,在 Unity 环境下运行时,应确保 `NPOI.dll` 已被正确导入到项目中。 --- #### 方法二:借助第三方工具生成 JSON 或 CSV 数据 如果不想直接操作复杂的 Excel 结构,也可以先将 Excel 转化成更易于处理的形式——比如 JSON 或者 CSV。这种方法通常涉及以下几个步骤: 1. 使用 Python 或其他脚本语言提取数据; 2. 将其保存为简单的文本格式; 3. 让 Unity 加载这些简化后的资源。 下面是一段基于 Pandas 的 Python 脚本来完成这一目标的例子: ```python import pandas as pd def convert_excel_to_json(excel_path, json_path): df = pd.read_excel(excel_path) data = df.to_dict(orient='records') with open(json_path, 'w', encoding='utf-8') as f: import json json.dump(data, f, ensure_ascii=False) convert_excel_to_json('input.xlsx', 'output.json') ``` 随后可以在 Unity 中轻松地反序列化 JSON 对象[^2]: ```csharp using UnityEngine; using System.Collections.Generic; using Newtonsoft.Json; public class LoadJsonData : MonoBehaviour { public TextAsset jsonData; private List<Dictionary<string, object>> ParseJson(TextAsset asset) { return JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(asset.text); } void Start() { var parsedData = ParseJson(jsonData); foreach (var record in parsedData) { foreach (KeyValuePair<string, object> field in record) { Debug.Log($"{field.Key} -> {field.Value}"); } } } } ``` 这种方式的优点在于逻辑清晰简单,缺点则是增加了额外的数据预处理环节。 --- #### 方法三:自定义解析器 对于某些特定需求而言,可能并不需要依赖任何外部库就能解决问题。例如当面对纯 ASCII 编码且结构固定的表格文档时,可以直接逐行扫描字符串内容来进行分析。不过这种做法灵活性较差,仅适用于非常有限的情况[^4]。 --- ### 总结 综上所述,推荐优先考虑 **NPOI** 方案作为通用解决方案;而对于那些追求极致性能或者希望减少依赖项的应用,则可尝试采用中间媒介形式(如 JSON/CSV),再由 Unity 完成最终渲染过程。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值