[Unity对Excel的读取]

     做项目突然想优化一下数据的输入方式,并不想用代码一行一行的插入,感觉很low。

     于是就想到用excel来做,先把数据写好在excel中,然后来个批导入,一个foreach就能把数据读到我们要维护的数据结构里。

      废话不多说,来看看怎么做。首先你得去Excel的官网下载他的动态链接库:一个Excel.dll,一个ICSharpCode.SharpZipLib.dll,然后放在项目目录下,最好是在plugins下。

当然,这是你会注意到还有一个叫做system.data的东西,没错这也是需要我们去弄的dll.

不过这个dll不需要下载,这属于.net自带的东西,Unity的源目录就有,这里就不得不吐槽一下Unity,讲道理这个应该直接添加依赖就可以了,但是会出现一个找不到名称空间的bug,anyway,在他的原目录下ctrl+f找一下,把这个dll也要拷到工程目录下。

好的接下来就是上代码了。

首先是名称空间的引用:

using UnityEngine;
using System.Collections;
using Excel;
using System.Data;
using System.IO;
using System.Collections.Generic;
接着你需要定义一个自己的结构,这个取决于你的excel表到底放了些啥,我的excel表每行只有两个属性,所以我定义了:
public struct DepenceTableData
	{
		public string word;
		public string instruct;
	};
接着我们首先读取文件变成一个dataset型的变量:

static DataSet ReadExcel(string path)  
		{  
			FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read);  
			IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);  
			DataSet result = excelReader.AsDataSet();  
			return result;  
		}
接着对于我们比较主要的属性是dataset下的table[0],这里记录着真正的数据,以及一些总行数,总列数的信息:
public static List<DepenceTableData> Load(string path)
		{
			List<DepenceTableData> _data = new List<DepenceTableData> ();
			DataSet resultds = ReadExcel (path);
			int columns = resultds.Tables[0].Columns.Count;
			int rows = resultds.Tables[0].Rows.Count;
			for (int i = 1; i < rows; i++)
			{
				DepenceTableData temp_data;
				temp_data.instruct = resultds.Tables [0].Rows [i] [0].ToString();
				temp_data.word = resultds.Tables [0].Rows [i] [1].ToString ();
				_data.Add (temp_data);
			}
			return _data;
		}

.rows后面这个索引就可以按二维数组来理解了。

效果图:

这是我的excel:




接着是把链表往控台写了写:


没截图完,但可以看出所有信息输出了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值