2021-06-17 08:58发布
xcel 表的操作少不了要引入第三方库,首先我们需要引入 Excel.dll 和 ICSharpCode.SharpZipLib.dll,这两个类库在网上都能找到;然后我们还需要引入 System.Data.dll,这个类库在 Unity3D 的安装路径下的 Editor\Data\Mono\lib\mono\unity 文件夹下能找到。
代码如下:
1 using Excel; 2 using System.Data; 3 using System.IO; 4 using UnityEngine; 5 6 public class Test : MonoBehaviour 7 { 8 #region -- 变量定义 9 10 #endregion11 12 #region -- 系统函数13 private void Start()14 {15 DataRowCollection _dataRowCollection = ReadExcel(Application.streamingAssetsPath + "/学生信息.xlsx");16 //这里从 1 开始循环,因为第一行被表头占据了。所以具体解析数据的时候需要根据具体情况来定。17 for (int i = 1; i < _dataRowCollection.Count; i++)18 {19 Debug.Log("学号:" + _dataRowCollection[i][0] + "--" + "姓名:" + _dataRowCollection[i][1] + "--" + "年龄:" + _dataRowCollection[i][2]);20 }21 }22 #endregion23 24 #region -- 自定义函数25 /// 26 /// 读取 Excel 表并返回一个 DataRowCollection 对象27 /// 28 /// Excel 表路径29 /// 读取的 Sheet 索引。Excel 表中是有多个 Sheet 的30 /// 31 private static DataRowCollection ReadExcel(string _path, int _sheetIndex = 0)32 {33 FileStream stream = File.Open(_path, FileMode.Open, FileAccess.Read, FileShare.Read);34 //IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);//读取 Excel 1997-2003版本35 IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);//读取 2007及以后的版本36 DataSet result = excelReader.AsDataSet();37 return result.Tables[_sheetIndex].Rows;38 }39 /// 40 /// 读取 Excel 表并返回一个 DataRowCollection 对象41 /// 42 /// Excel 表路径43 /// 读取的 Sheet 名称。Excel 表中是有多个 Sheet 的44 /// 45 private static DataRowCollection ReadExcel(string _path, string _sheetName)46 {47 FileStream stream = File.Open(_path, FileMode.Open, FileAccess.Read, FileShare.Read);48 //IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);//读取 Excel 1997-2003版本49 IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);//读取 2007及以后的版本50 DataSet result = excelReader.AsDataSet();51 return result.Tables[_sheetName].Rows;52 }53 #endregion54 55 }
using System.Collections;using System.Collections.Generic;using UnityEngine;using System.IO; //操作文件夹时需引用该命名空间using System.Text;public class TxtWriteAndRead : MonoBehaviour{ TextAsset m_Txt; void Start() { // AddTxtTextByFileStream("第一种方法添加text文本"); // AddTxtTextByFileInfo("第二种方法添加txt文本"); //重写数据 // ReWriteMyTxtByFileStreamTxt(); // ReadTxtFirst(); //ReadTxtSecond(); //ReadTxtThird(); //ReadTxtForth(); ReadTxtFifth(); } /// /// 创建txt 方法一 /// /// public void AddTxtTextByFileStream(string txtText) { string path = Application.dataPath + "/Json/MyTxtByFileStream.txt"; // 文件流创建一个文本文件 FileStream file = new FileStream(path, FileMode.Create); //得到字符串的UTF8 数据流 byte[] bts = System.Text.Encoding.UTF8.GetBytes(txtText); // 文件写入数据流 file.Write(bts, 0, bts.Length); if (file != null) { //清空缓存 file.Flush(); // 关闭流 file.Close(); //销毁资源 file.Dispose(); } } /// /// 可以重新写入文件到一个已存在的txt文本中去 /// void ReWriteMyTxtByFileStreamTxt() { string path = Application.dataPath + "/Json/MyTxtByFileStream.txt"; string[] strs = { "123", "321", "234" }; File.WriteAllLines(path, strs); /* 文本内容为:(逐行显示的) 123 321 234 原文本内容为: 第一种方法添加text文本 */ //如果想在某一行中添加一行新的,可以将原txt文本读取下来,保存到数组里, //然后新建一个数组,载将原数组文本与新加入的行数据同时写入到新数组里 //然后用新数组数据替换(重写)原来的数据 } /// /// 创建txt 方法二 /// /// public void AddTxtTextByFileInfo(string txtText) { string path = Application.dataPath + "/MyInfo.txt"; StreamWriter sw; FileInfo fi = new FileInfo(path); if (!File.Exists(path)) { sw = fi.CreateText(); } else { sw = fi.AppendText(); //在原文件后面追加内容 } sw.WriteLine(txtText); sw.Close(); sw.Dispose(); } /// /// 读取txt文本方法一 /// 需要将txt文本放到Resources文件夹下读取 /// void ReadTxtFirst() { m_Txt = Resources.Load("readTxt"); string str = m_Txt.text.ToString(); print(str); //txt文本数据读取 } /// /// 读取txt文本方法二 /// 逐行读取 该方法可以单独获取某一行的数据 /// void ReadTxtSecond() { string path = Application.dataPath + "/Json/MyTxtByFileInfo.txt"; //逐行读取返回的为数组数据 string[] strs = File.ReadAllLines(path); foreach (string item in strs) { print(item); //第二种方法添加txt文本 //第二种方法添加txt文本 } } /// /// 第三种读取方法 /// 需引用 using System.Text; /// void ReadTxtThird() { string path = Application.dataPath + "/Json/MyTxtByFileInfo.txt"; string str = File.ReadAllText(path, Encoding.UTF8); print(str); //第二种方法添加txt文本 //第二种方法添加txt文本 } /// /// 第四种读取方法 /// void ReadTxtForth() { string path = Application.dataPath + "/Json/MyTxtByFileInfo.txt"; //FileStream fsSource = new FileStream(path, FileMode.Open, FileAccess.Read); //文件读写流 StreamReader strr = new StreamReader(path); //读取内容 string str = strr.ReadToEnd(); print(str); //第二种方法添加txt文本 //第二种方法添加txt文本 } /// /// 第五种读取方法 /// 文件流方式 /// void ReadTxtFifth() { string path = Application.dataPath + "/Json/MyTxtByFileInfo.txt"; FileStream files = new FileStream(path, FileMode.Open, FileAccess.Read); byte[] bytes = new byte[files.Length]; files.Read(bytes, 0, bytes.Length); files.Close(); string str = UTF8Encoding.UTF8.GetString(bytes); print(str); //第二种方法添加txt文本 //第二种方法添加txt文本 }}
首先要注意的点:
1.你的unity版本是多少,去对应的安装目录中取dll
2.System.Data.dll 在D:\Program Files\Unity2017.2\Editor\Data\Mono\lib\mono\2.0
3.I18N开头的dll 在 D:\Program Files\Unity2017.2\Editor\Data\Mono\lib\mono\unity
4.2017.2版本demo工程(包含其他所需要的excel相关dll) 下载,excel写入的表格 row,rol都是 从1 开始
引入pandas使用pandas下的read_csv方法,读取csv文件,参数是文件的路径,这是一个相对路径,是相对于当前工作目录的,那么如何知道当前的工作目录呢?使用os.getcwd()方法获取当前工作目录读取前三后数据,查看一下是否读取正确,显然都是乱码,这是什么问题呢?我们需要设定参数encoding,也就是编码方式,如果你不设定编码方式,默认是utf8,现在csv文件是gbk编码的,所以需要使用encoding='gbk'我用的编辑器是eric4,注意,eric4默认是不支持中文的,如果你想要显示中文,前提是设置正确的编码,在preferences中设置成utf8即可回到pandas,我们可以有更多选项来设置打开数据时的操作:
第一种方法:通过点击场景文件打开Unity游戏工程找到Unity游戏工程所在的目录,我这里的工程放在在E盘根路径的Unity_workspace文件夹中。注意:unity软件不支持中文路径,所以不要把工程放在中文文件夹下。我们在这里就打开New Unity Project 4工程,进入到Ne...
如果是学习研究的话,当然是体验官方的最新版本。要是项目开发的话,还是要选择长期稳定版本,也就是大版本的LTS。比如2017.4或者是2018.4都是LTS版本,至于后面的小版本可以去看下更新的内容来做选择吧!...
unity3D是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC...
1、Unity3D:如果你需要开发大型游戏,或需要开发3D游戏的,请选这个。2、Cocos2D-x:如果你开发的是中小型游戏,对安装包大小比较在意的,请选这个。3、Andengine、Cocos2D-iPhone:如果你只为开发单平台游戏,又非常在意速度和安装包大小,请选这个。最后。...
首先在场景中调整好你要观看的视角选择摄像机,按下Ctrl+Shift+F或者菜单栏->GameObject->Align with view在不行的话,可以调整摄像机的Position 和 Rotation
将MeshRender组件移除即可:
1.在Asset store里选择一个skybox。 2.从素材库中选择一个人物角色,也可以自己建模或者在其他软件中做好再导进来。 3.想好角色如何运动,然后用自己比较熟悉的语言编写来作展示,这段代码可以实现当你按下键盘上的A/D/S/W的按键时,角色会向前后左右四个方向的...
还是要学好编程基础呀如果你觉得编程很苦难 不一定要从c#开始学 学学js flash as等等 有个梯度就好多了如果要用好unity 不会编程那是不行的 学习的过程中都有个头疼的过程 记住 头越痛 代表你要接受的东西越多 坚持 你的大脑在和知识兼容中:D...
需要添加如下引用: System.Configuration System.Data System.EnterpriseServices System.Security System.XML using UnityEngine; using System.Collections; using System; using System.Data; using System.Data...
物理引擎则使用动量、扭矩等用高等数学手段来模拟真实物体,这将得到更真实的效果且使我们的编码更加容易。
不能这样表述,三维通常是立体的空间,二维则是平面的。数学中通常是Oxyz表示空间直角坐标系,Oxy表示表示的是平面直角坐标系,你可以说空间直角坐标系中去掉Z轴可以转换为二维,因为去掉X或Y轴都能转换为二维。...
GameObject.renderer.enabled//是控制一个物体是否在屏幕上渲染或显示 而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的GameObject.Destroy()//表示移除物体或物体上的组件 代表销毁该物体 实际上该物体的内存并没有立即释放,而是等到这...
一:Overlay—覆盖模式类似于手机贴膜,所有UI都会显示在场景中2D,3D物体的上层在同一个Canvas下可以调整Canvas子物体的先后顺序,层级面板中越靠上则先被渲染多个Canvas下可以调整Canvas组件的Sort Order属性调整渲染顺序,数值越小的画布越先被渲染:Camer...
不得不说,Unity3d是个解放生产力的游戏引擎,自带了各种编辑器,可以进行一系列的可视化操作。需要注意的是,unity3d适合FPS游戏,物理游戏等中小型的游戏,并不太适合MMO开发。unity3d难学吗?如何学习unity3d呢?在学习之前又应该了解哪些内容呢?代码写不...
不是人工检查的,如果你的问题里面有敏感关键字,是发不出去的,现在国内所有的网站在发布文章时都要进行检查的,所以你在发之前先检查一下看问题里面是否有违禁词语。
最多设置5个标签!
xcel 表的操作少不了要引入第三方库,首先我们需要引入 Excel.dll 和 ICSharpCode.SharpZipLib.dll,这两个类库在网上都能找到;然后我们还需要引入 System.Data.dll,这个类库在 Unity3D 的安装路径下的 Editor\Data\Mono\lib\mono\unity 文件夹下能找到。
代码如下:
首先要注意的点:
1.你的unity版本是多少,去对应的安装目录中取dll
2.System.Data.dll 在D:\Program Files\Unity2017.2\Editor\Data\Mono\lib\mono\2.0
3.I18N开头的dll 在 D:\Program Files\Unity2017.2\Editor\Data\Mono\lib\mono\unity
4.2017.2版本demo工程(包含其他所需要的excel相关dll) 下载,excel写入的表格 row,rol都是 从1 开始
引入pandas
使用pandas下的read_csv方法,读取csv文件,参数是文件的路径,这是一个相对路径,是相对于当前工作目录的,那么如何知道当前的工作目录呢?
使用os.getcwd()方法获取当前工作目录
读取前三后数据,查看一下是否读取正确,显然都是乱码,这是什么问题呢?
我们需要设定参数encoding,也就是编码方式,如果你不设定编码方式,默认是utf8,现在csv文件是gbk编码的,所以需要使用encoding='gbk'
我用的编辑器是eric4,注意,eric4默认是不支持中文的,如果你想要显示中文,前提是设置正确的编码,在preferences中
设置成utf8即可
回到pandas,我们可以有更多选项来设置打开数据时的操作:
相关问题推荐
第一种方法:通过点击场景文件打开Unity游戏工程找到Unity游戏工程所在的目录,我这里的工程放在在E盘根路径的Unity_workspace文件夹中。注意:unity软件不支持中文路径,所以不要把工程放在中文文件夹下。我们在这里就打开New Unity Project 4工程,进入到Ne...
如果是学习研究的话,当然是体验官方的最新版本。要是项目开发的话,还是要选择长期稳定版本,也就是大版本的LTS。比如2017.4或者是2018.4都是LTS版本,至于后面的小版本可以去看下更新的内容来做选择吧!...
unity3D是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC...
1、Unity3D:如果你需要开发大型游戏,或需要开发3D游戏的,请选这个。2、Cocos2D-x:如果你开发的是中小型游戏,对安装包大小比较在意的,请选这个。3、Andengine、Cocos2D-iPhone:如果你只为开发单平台游戏,又非常在意速度和安装包大小,请选这个。最后。...
首先在场景中调整好你要观看的视角选择摄像机,按下Ctrl+Shift+F或者菜单栏->GameObject->Align with view在不行的话,可以调整摄像机的Position 和 Rotation
将MeshRender组件移除即可:
1.在Asset store里选择一个skybox。 2.从素材库中选择一个人物角色,也可以自己建模或者在其他软件中做好再导进来。 3.想好角色如何运动,然后用自己比较熟悉的语言编写来作展示,这段代码可以实现当你按下键盘上的A/D/S/W的按键时,角色会向前后左右四个方向的...
还是要学好编程基础呀如果你觉得编程很苦难 不一定要从c#开始学 学学js flash as等等 有个梯度就好多了如果要用好unity 不会编程那是不行的 学习的过程中都有个头疼的过程 记住 头越痛 代表你要接受的东西越多 坚持 你的大脑在和知识兼容中:D...
需要添加如下引用: System.Configuration System.Data System.EnterpriseServices System.Security System.XML using UnityEngine; using System.Collections; using System; using System.Data; using System.Data...
物理引擎则使用动量、扭矩等用高等数学手段来模拟真实物体,这将得到更真实的效果且使我们的编码更加容易。
不能这样表述,三维通常是立体的空间,二维则是平面的。数学中通常是Oxyz表示空间直角坐标系,Oxy表示表示的是平面直角坐标系,你可以说空间直角坐标系中去掉Z轴可以转换为二维,因为去掉X或Y轴都能转换为二维。...
GameObject.renderer.enabled//是控制一个物体是否在屏幕上渲染或显示 而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的GameObject.Destroy()//表示移除物体或物体上的组件 代表销毁该物体 实际上该物体的内存并没有立即释放,而是等到这...
一:Overlay—覆盖模式类似于手机贴膜,所有UI都会显示在场景中2D,3D物体的上层在同一个Canvas下可以调整Canvas子物体的先后顺序,层级面板中越靠上则先被渲染多个Canvas下可以调整Canvas组件的Sort Order属性调整渲染顺序,数值越小的画布越先被渲染:Camer...
不得不说,Unity3d是个解放生产力的游戏引擎,自带了各种编辑器,可以进行一系列的可视化操作。需要注意的是,unity3d适合FPS游戏,物理游戏等中小型的游戏,并不太适合MMO开发。unity3d难学吗?如何学习unity3d呢?在学习之前又应该了解哪些内容呢?代码写不...
不是人工检查的,如果你的问题里面有敏感关键字,是发不出去的,现在国内所有的网站在发布文章时都要进行检查的,所以你在发之前先检查一下看问题里面是否有违禁词语。