游戏蛮牛学习群(纯技术交流,不闲聊):539178957
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:775

当前位置:游戏蛮牛 技术专区 教程分享

查看: 265|回复: 3

[基础知识] unity对于Excel的读写心得

[复制链接]  [移动端链接]
4四处流浪
446/500
排名
7146
昨日变化
3

2

主题

106

帖子

446

积分

Rank: 4

UID
226406
好友
2
蛮牛币
1199
威望
0
注册时间
2017-6-12
在线时间
176 小时
最后登录
2018-7-21
发表于 2018-6-29 11:04:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 冯腾飞 于 2018-6-28 15:07 编辑

最近做了一个关于读取Excel数据,并修改的一个项目,过程中查了很多的资料(碰到很多大坑),整理出来,对自己也是一个总结(偷个懒就不排版了,能看懂就好)
先说一下unity读取Excel功能
首先加入库文件Excel.dll和ICSharpCode.SharpZipLib库文件,官方链接 http://exceldatareader.codeplex.com/
读取的栗子网上有很多,我这就不一一细说,直说一些在过程中碰到的一些坑
1、Excel版本格式的问题,刚开始在unity编辑器编辑的时候没什么问题,
一旦你发布出来版本之后,嘿嘿,问题来了,识别不到了吧
解决方法:
读取97-2003的文件就可以。但是读取97-2003文档的方法有点不同,
//1. Reading from a binary Excel file ('97-2003 format; *.xls)
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
//2. Reading from a OpenXml Excel file (2007 format; *.xlsx)
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
注意:这个时候发布成EXE格式还是读取不到就麻烦了
需要添加I18N*.dll等一些列dll才能打开。添加时可以在编辑器的Plugins添加,也可以发布后在***_Data/Managed下面添加这些dll。


这些dll来自Unity安装路径C:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity中。

1.png



再说一下unity写入Excel功能
怎么生成一个Excel文件,并把数组或字典中的数据写入Excel中呢?
此时需要一个Excel.dll的姐妹,EPPlus.dll 官方链接 https://epplus.codeplex.com/releases/view/118053
使用方法在官方的文档中都有,这里只贴出我的实现方式。

需要添加的命名空间
using OfficeOpenXml;
写入方法

public static void WriteExcel(string outputDir)
    {
        //string outputDir = EditorUtility.SaveFilePanel("Save Excel", "", "New Resource", "xlsx");
        FileInfo newFile = new FileInfo(outputDir);
        if (newFile.Exists)
        {
            newFile.Delete();  // ensures we create a new workbook
            newFile = new FileInfo(outputDir);
        }
        using (ExcelPackage package = new ExcelPackage(newFile))
        {
            // add a new worksheet to the empty workbook
            ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1");
            //Add the headers
            worksheet.Cells[1, 1].Value = "ID";
            worksheet.Cells[1, 2].Value = "Product";
            worksheet.Cells[1, 3].Value = "Quantity";
            worksheet.Cells[1, 4].Value = "Price";
            worksheet.Cells[1, 5].Value = "Value";

            //Add some items...
            worksheet.Cells["A2"].Value = 12001;
            worksheet.Cells["B2"].Value = "Nails";
            worksheet.Cells["C2"].Value = 37;
            worksheet.Cells["D2"].Value = 3.99;

            worksheet.Cells["A3"].Value = 12002;
            worksheet.Cells["B3"].Value = "Hammer";
            worksheet.Cells["C3"].Value = 5;
            worksheet.Cells["D3"].Value = 12.10;

            worksheet.Cells["A4"].Value = 12003;
            worksheet.Cells["B4"].Value = "Saw";
            worksheet.Cells["C4"].Value = 12;
            worksheet.Cells["D4"].Value = 15.37;

            //save our new workbook and we are done!
            package.Save();
        }
    }


还有一些细节的东西,因手头工作的比较多,就不一一说了,有什么不明白的,可以加我的QQ;1183215764
欢迎一切探讨





回复

使用道具 举报

7日久生情
2406/5000
排名
2891
昨日变化
2

0

主题

1697

帖子

2406

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
185339
好友
0
蛮牛币
3477
威望
0
注册时间
2016-11-20
在线时间
253 小时
最后登录
2018-7-20
发表于 2018-7-4 11:14:16 | 显示全部楼层

回复

使用道具 举报

排名
22461
昨日变化
6

1

主题

37

帖子

88

积分

Rank: 2Rank: 2

UID
135780
好友
0
蛮牛币
316
威望
0
注册时间
2016-1-28
在线时间
32 小时
最后登录
2018-7-19
发表于 2018-7-5 17:41:40 | 显示全部楼层
mark一下

回复

使用道具 举报

2初来乍到
118/150
排名
16988
昨日变化
5

0

主题

66

帖子

118

积分

Rank: 2Rank: 2

UID
287099
好友
0
蛮牛币
237
威望
0
注册时间
2018-6-24
在线时间
18 小时
最后登录
2018-7-22
发表于 2018-7-5 21:15:40 | 显示全部楼层
多谢分享

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表