Unity 读取CSV与Excel
前几天看到我们在游戏中需要动态加载某些角色的游戏策划值,关于这个问题怎么解决呢?其实办法很多种,归根到底,就是数据的读取。我们可以想到的存储数据的载体有很多。例如:txt,xml,csv,excel。甚至可以使用Sqlite,Mysql,Sqlserver等!这都不是问题!那么我们今天学习下CSV文件和Excel的读取。废话不多说了,开始了!
1.建个空的项目!

2 建议test.csv的文件并录入数据。

录入数据:

3,读取csv文件。
方法一:将CSV文件强制转换为txt格式,在Unity中使用TextAsset直接读取文本信息。
using UnityEngine;
using System.Collections;
using System.IO; public class read : MonoBehaviour
{
public TextAsset txtCSV;
public GUIText guitext;
void Start()
{
guitext.text = txtCSV.text;
print(txtCSV.text); }
}
运行结果:

第一种方式很简单,那么第二种方式读取,添加脚本 test.cs
using UnityEngine;
using System.Collections;
using System.IO; public class read : MonoBehaviour
{public GUIText guitext;
void Start()
{
readCSV();
}
/// <summary>
/// 读取CSV文件
/// </summary>
void readCSV()
{
//读取csv二进制文件
TextAsset binAsset = Resources.Load("csv", typeof(TextAsset)) as TextAsset;
//显示在GUITexture中
guitext.text = binAsset.text; string[] data = binAsset.text.Split("|"[]);
foreach (var dat in data)
{
Debug.Log(dat);
} ////读取每一行的内容
string[] lineArray = binAsset.text.Split("\r"[]);
////按‘|’进行拆分
string[] lineArray1 = binAsset.text.Split("|"[]); //创建二维数组
string[][] Array = new string[lineArray.Length][]; //把csv中的数据储存在二位数组中
for (int i = ; i < lineArray.Length; i++)
{
Array[i] = lineArray[i].Split("\r"[]);
Debug.Log(Array[i][].ToString()); }
}
}
运行结果:

OK 文本方式读取就结束了。下面进行Excel的读取。
需要插件: 稍后共享!

using UnityEngine;
using System.Collections;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using Excel;
using System.Data;
using UnityEngine.UI; public class NewBehaviourScript : MonoBehaviour
{
public Text readData;
void Start ()
{
XLSX();
} void XLSX()
{
FileStream stream = File.Open(Application.dataPath + "/UserLevel.xlsx", FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); DataSet result = excelReader.AsDataSet(); int columns = result.Tables[].Columns.Count;
int rows = result.Tables[].Rows.Count; for(int i = ; i< rows; i++)
{
for (int j = ; j < columns; j++)
{
string nvalue = result.Tables[].Rows[i][j].ToString();
Debug.Log(nvalue);
if (i > )
{
readData.text += "\t\t" + nvalue;
}
else
{
readData.text +=" \t" + nvalue;
}
}
readData.text += "\n";
}
} }

搞定收工!
PS:可以以数据集的形式存储读取到的二维表格,然后可直接以二维数组的形式获取各个元组的信息!
作为数据集进行存储
DataSet result = excelReader.AsDataSet();
取得数据集中第一张表格的行的数目
int rows = result.Tables[0].Rows.Count;
取得数据集中第一张表格的列的数目
int columns = result.Tables[0].Columns.Count;
直接对行列操作:
result.Tables[0].Rows[i][j].
百度网盘:http://pan.baidu.com/s/1kTGIGS3
Unity 读取CSV与Excel的更多相关文章
- C# 读取CSV和EXCEL文件示例
我们习惯了直接连到数据库上面读取数据表的数据内容: 如果有一天我们需要读取CSV,EXCEL文件的内容的时候,可不可以也像读数据表的方式一样呢?当然可以,使用OleDB ADO.NET是很简单的事情 ...
- Pandas系列-读取csv/txt/excel/mysql数据
本代码演示: pandas读取纯文本文件 读取csv文件 读取txt文件 pandas读取xlsx格式excel文件 pandas读取mysql数据表 import pandas as pd 1.读取 ...
- python读取csv,Excel,Txt,Yaml 文件
1.数据 1.Csv login.csv文件: byhy,88888888 ReadCsv.py文件 import csv #导入csv包 class ReadCsv(): def csv(self) ...
- python读取csv、excel、mysql内容
前提:导入扩展包 import pandas as pd import pymysql ①读取csv文件 fpath='/test.csv'ratings=pd.read_csv(fpath)prin ...
- asp.net读取CSV
原文:asp.net读取CSV 用Excel导了两天数据,各种问题,折磨客户也折磨了自己,以前没发现的问题一下子都暴露出来了 特意收集两篇Excel跟CSV读取相关的两篇文章 asp.net读取exc ...
- Python 读取csv文件到excel
朋友问我如何通过python把csv格式的文件另存为xls文件,自己想了想通过读取csv文件然后再保存到xls文件中即可,也许还有其他简单的方法,但这里也为了练习python语法及其他知识,所以采用了 ...
- 转换成CSV文件、Word、Excel、PDF等的方法--读取CSV文件的方法
1. 转换成CSV文件: http://www.dotnetgallery.com/lab/resource93-Export-to-CSV-file-from-Data-Table-in-Aspne ...
- EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类
大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换 //EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls ...
- Unity读取Excel文件(附源代码)
今天想弄个Unity读取Excel的功能的,发现网上有许多方法,采用其中一种方法:加入库文件 Excel.dll 和ICSharpCode.SharpZipLib.dll库文件,(还有System.D ...
随机推荐
- spark 高级算子
mapPartitionsWithIndex val func = (index: Int, iter: Iterator[(Int)]) => { iter.toList.map(x ...
- JavaScript 函数方法 - bind()
Function.prototype.bind() ECMAScript5中新增的方法,但是在ECMAScript3可以通过模仿实现其方法作用 作用: bind() 方法会创建一个新函数,当这个新函数 ...
- 报错要跟到底就很更快更准确的发现问题所在一直in进去(其实都知道的哈)
问题-查看详细信息-innerexception-innerexception
- C# 标签打印示例 1
初次写博客,有哪些不足的地方,还请多多指点,给予建议,谢谢! 如若想要源码,请留言. 本实例是在Webservice 中通过excel做模板来打印标签.具体需求是:一个订单一页纸打印4行 ...
- mysql的锁--行锁,表锁,乐观锁,悲观锁
一 引言--为什么mysql提供了锁 最近看到了mysql有行锁和表锁两个概念,越想越疑惑.为什么mysql要提供锁机制,而且这种机制不是一个摆设,还有很多人在用.在现代数据库里几乎有事务机制,aci ...
- NFS(网络文件系统)
http://baike.baidu.com/subview/44349/16134489.htm
- oracle 存储过程返回结果集 (转载)
好久没上来了, 难道今天工作时间稍有空闲, 研究了一下oracle存储过程返回结果集. 配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过 ...
- C语言中的sizeof和strlen
1.sizeof是算符,strlen是函数: 2.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的: 3.大部分编译程序,在编译的时候就把sizeof计算 ...
- web qq 获取好友列表hash算法
web qq 获取好友列表hash算法 在使用web qq的接口进行好友列表获取的时候,需要post一个参数:hash 在对其js文件进行分析之后,发现计算hash的函数位于: http://0.we ...
- 客户端技术:Cookie 服务端技术:HttpSession
客户端技术:Cookie 服务端技术:HttpSession 07. 五 / android基础 / 没有评论 一.会话技术1.什么是会话:客户打开浏览器访问一个网站,访问完毕之后,关闭浏览器.这 ...