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 ...
随机推荐
- JavaScript 字符串函数 之查找字符方法(一)
1.JavaScript查找字符方法 首先看一张 有关字符串函数的查找字符的方法图 接下里补充里面的方法说明 2.charAt() charAt() 方法返回字符串中指定位置的字符 语法 ...
- javascript之求最值
求最值: var selections = $("#deliveryGridSalesOrGoods").datagrid('getRows'); var costPrice = ...
- Java数据结构漫谈-Vector
List除了ArrayList和LinkedList之外,还有一个最常用的就是Vector. Vector在中文的翻译是矢量,向量,所以大家喜欢把Vector叫做矢量数组,或者向量数组. 其实就底层实 ...
- Javscript中的null和undefined
1.null是JavaScript关键字,含义是“非对象”,它可以表示数字.字符串和对象是“无值”的. var x = null; typeof x ;//返回“object” var x=null, ...
- unity碰撞组件、刚体组件
游戏导入标准资源包“Character Controllers”后可以为游戏对象添加 character(角色控制器)组件: 添加角色控制器组建以后可以控制游戏对象移动: 角色控制器组件因为与碰撞组件 ...
- 方法覆盖(override)”的要点
方法覆盖要求子类与父类的方法一模一样,否则就是方法重载(overload)!请自行编写代码测试以下特性:在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. 结论: 在“ ...
- hdu5351 MZL's Border(规律题,java)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud MZL's Border Time Limit: 2000/1000 MS (Ja ...
- I Love You Too HDU 2816
Description This is a true story. A man showed his love to a girl,but the girl didn't replied clearl ...
- SharpZipLib 压缩文档下载
using ICSharpCode.SharpZipLib.Zip; Response.Clear(); Response.ClearContent(); Response.ClearHeaders( ...
- 为什么要采用外部js文件
这篇文章主要讲的是为什么要采用外部js文件,有什么好处. 为什么不把js内嵌在html中呢,这样不是好分析吗?对,这样你是好分析,同样的别人呢?不内嵌在html中有如下原因: 安全性: 只要查看页 ...