首页 > Unity3D频道 > 【Unity杂文】 > Excel工具升级版
2016
04-04

Excel工具升级版

hello各位,我又回来了~

上次发布工具后,得到了一些反馈,所以这几天给工具做了下升级~

老版本地址

http://www.xuanyusong.com/archives/3940

本次更新的内容有:

1.json添加精简格式,减小文件容量

2.支持二进制导出格式

3.添加联合主键功能

4.添加批注功能,可设置字典的默认key集合,并根据集合批量初始化单元格

5.添加plist和oc导出格式

现在做事情B格要高,才会受关注,所以我给工具起了个霸气的名字——滤查表。赞同我的请回复666~XD

下面介绍一下新功能:

json格式分为易读和精简两个版本,可通过bat中的第三个命令行参数控制,该参数可缺省,默认为0,此时为易读模式,若大于0,则导出精简模式,例:

Excel工具升级版 - 雨松MOMO程序研究院 - 1

 

导出后就是这个样子了

Excel工具升级版 - 雨松MOMO程序研究院 - 2

二进制格式应该不用过多解释吧,很常用的存储方式,读取效率高,占用空间少,唯一的缺点就是可读性差,不好调试。我在工具中写了lua、java和C#三种语言的解析接口,都放在bin目录中,可根据需要自行放到工程中。

Excel工具升级版 - 雨松MOMO程序研究院 - 3

解析后,java会返回一个ArrayList或者HashMap(根据主键设置),lua会返回一个Table,数据格式基本没有变化,只是java没有声明新的类,全部都存在哈希表中。通过读取二进制获得的数据,在使用上会比老方法变扭些,因为看不到数据(不过有打印接口,可以动态查看),可能会频繁查看excel表,但胜在运行效率高,如何取舍就看各位的喜好了~

最后说说很多人(包括松松)跟我提到的联合主键,因为我之前使用数据库不是很多,所以在工作中没接触过联合主键,但听他们的描述后,觉得还是个非常给力的功能,所以决定吸纳到滤查表中XD

所谓联合主键,就是可以通过某行数据的其中几个字段,定位到该行,从而获取其全部数据,相当于几个联合主键凑在一起,就可以起到主键的索引作用,这几个字段的表头就是该表的联合主键。

Excel工具升级版 - 雨松MOMO程序研究院 - 4

上图中的name和className就是该表的联合主键,如果你在程序中获得了Leonard和classHuman两个参数,就可以通过联合索引直接取到该行的数据(java是对象,lua是Table),作用和主键是一样的,时间复杂度也是O(1)。至于联合查找的接口:java和lua格式导出后会自动生成,通过unionGet(java)和表名+Get(lua)方法可取到索引结果,参数就是所有联合主键的对应值。二进制也会自动生成联合主键,但是没有公共的索引接口,需要用户在unionTable中通过手动生成的联合键查找,生成规则为所有主键以字符串形式拼接,中间以下划线分割,例如上图中的联合键就是:Leonard_classHuman。至于unionTable,是在解析二进制文件后生成的,会保存在DBBinary.s_unionTable中。json格式我没有写解析方法,主要是因为json的原生支持语言是js,而我不会写js代码,所以就没做,至于其它语言,可以从它们各自生成的解析代码中拷贝。

设置方法:选中要设为联合主键的列,见下图

Excel工具升级版 - 雨松MOMO程序研究院 - 5

 

下图中红框区内的按钮就是联合主键操作键,set是将所选列设为联合主键,del则是取消

Excel工具升级版 - 雨松MOMO程序研究院 - 6

代码中的索引函数

Excel工具升级版 - 雨松MOMO程序研究院 - 7

lua联合索引方法

Excel工具升级版 - 雨松MOMO程序研究院 - 8

java联合索引方法

Excel工具升级版 - 雨松MOMO程序研究院 - 9

二进制在java中的应用范例

Excel工具升级版 - 雨松MOMO程序研究院 - 10

二进制在lua中的应用范例

再有就是我写的二进制读取方法只是针对滤查表的,其实从设计角度讲,应该是先写出基础的二进制读取,再在上层针对具体需求进行封装,但是我觉得自己写的方法并不是很完美,加上很多语言都有读取二进制的API,所以就没敢越俎代庖~有雄心壮志的同学可以自己封装一下~

小齐童鞋之前提到一个问题,就是策划手动填写字典的key值容易出错,因此我加了一个批量生成字典单元格的功能,使用方法如下:

假如我们有一列单元格,类型为字典,并且所有行的key都是min和max(固定的),那么我们给该列的类型单元格添加批注,内容就是“min;max”,见下图

Excel工具升级版 - 雨松MOMO程序研究院 - 11

然后确保该列的单元格都为空(有内容的单元格不会有效果),点击InitDictCells按钮,此时该列的所有单元格就都被初始化为“min=0;max=0”了,策划只需将0改为真实值即可,这样便大大降低了出错几率。此外可通过点击ShowComment按钮显示所有的批注,虽然Alt+R+A也有类似功能,但它是显示全部的批注,而ShowComment只显示第二行(类型行)的批注。最后感谢小齐的建议哈~

Excel工具升级版 - 雨松MOMO程序研究院 - 12

再次点击ShowComment就会隐藏批注。

滤查表下载地址

http://pan.baidu.com/s/1eSvzgaQ

全部文件

Excel工具升级版 - 雨松MOMO程序研究院 - 13

最后编辑:
作者:失落的宇宙
人的生命是有限的,但bug是无限的,我要把有限的生命投入到无限的改bug事业中去~
捐 赠如果您愿意花20块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

Excel工具升级版》有 43 条评论

  1. jayce 说:

    有DataConver.exe源码吗?

  2. 来福 说:

    想动态写入数据最后存入本地,用原来的法方解析数据就凉了,除了重写个解析方法还有什么途径吗

  3. Jeff_xue 说:

    关于逗号的问题:
    在装备参数中,有一项是介绍,这个介绍文本中就会含有逗号了,正常的CSV表格可以用“”来包住含逗号的语句,再进行解析。
    然而大大提供的工具,中间步骤的CSV转.bin文件的时候,并不能识别“”。
    不知怎么解决呢?

  4. 零度JL 说:

    松总,得创新下了,我在寻找一个直接使用 UnityEditor 读取 excel 表 并且能 导出 json,如果可以强大一点还能直接修改 excel 源文件,例如调试数值的时候比较方便.

  5. 求支持中文啊,不然真的不是很方便

留下一个回复

你的email不会被公开。