by Devin Yang

建立于: 6年前 ( 更新: 6年前 )

前言

Excelify是我使用Laravel开发的一套Excel数据转换工具,这个工具,目前战绩,
我自已成功透过这个工具,将教育部公众授权的excel档,辞典约有16万笔的数据,成语约5千多笔。
转换为我所需要的SQL格式。

功能

那Excelify主要有三个功能,来进行Excel数据的转换处理。

一、Converter: (转换)
将Excel的表格数据转换为其他格式,
目前可转换格式有QueryBuilder、Json、Array、SQL、Excel。
因为MVC的架构,经由Laravel的Blade template进行render,
所以我们可以极容易的扩展更多的转换格式,

概念上,就是把Excel档所取得的表格数据转Array,同时将abcde英文栏位名称
转成有意义的名称,再丢给blade样版去产出我要的转换格式。

例如下方为SQL的数据格式,可以看见,这是个Blade的样版:
https://github.com/DevinY/excelify/blob/master/src/views/data_templates/sql.blade.php

经由,上传Excel文件,透过设置范围,如a2~n60000,并且创建映射的栏位,
例如: a为name,b为address,c为tel
有了这个栏位映射的功能,我们可将转出的SQL数据直接导入数据库中。

二、Excelify: (Excel化)
当初我想创建一个东西,可以快速的将网页上的Table转换成Excel,因此这个功能就诞生了
透过这个工具,他可以抓取,网络上的页面内所有的Table,并将该Table转换为Excel。
大家或许会好奇,那像是用JavaScript生成的HTML table也能抓吗?
是的,可以的,因为Excelify我直接集成了Goolge推出的Rendertron
所以就算是Javascript生成的页面的Table,透过Rendertron序列化后,一样可产出Excel。

三、API
第二招需要手动操作,所以我想创建一个可由进程调用的功能。
让我们透过使用进程调用的方式,把HTML页面上的Table转换成Excel档。

问题

Excelify虽然提供了Docker的版本,可经由Kametic快速搜寻安装及启动,不用时也可删掉,
但是并非人人有Docker,或是知道如何用Docker。
或许大家的电脑端已经有Laravel在运行了,为了要用Excelify功功能,
还要再装一套Laravel是不是太大了点呢?Excelify主要的source Code也不过两个Class。
如果想将Excelify的转换功能,直接集成到现有项目中,好像又有点麻烦,
也要改上好几个文件。

所以啦,我老早就想把一些,我的Laravel的Project改写成Package,
因此,先拿小小的Excelify repo来开刀试试看罗。

对於第一次开刀的人来说,大概半天的时间,让我把他转换成Laravel的package,
过程算是相当顺利了,边改写边读文档学习,完成后,
发觉原来写Laravel的Package意外简单,当然目前转换完的Source还有很大的优化空间。

这是我第一次尝试把Laravel的Project变更为Laravel包,
因此,有些地方还不是很完善,但是我要说It's work。

整个过程算顺利的,没碰到什么太大问题,
我的做法,看著别人Package写法,再改写成自己的。
当然同时阅读Laravel官网的文档。

Excelify注意事项:

如果是转换大文件,就是一定要注意php.ini中的配制,否则Excelify是无法正常运行的。
upload_max_filesize = 50M
post_max_size = 50M
max_execution_time = 0
memory_limit = -1

内存请设置成-1,不进行限制。

如果说只是单纯想转个数据,又有Docker时,透过Dcoker运行excelify是不错的选择,
因为Container我已设置好了php.ini,像是那种20~30MB的大Excel档是没什么问题的。

结语:

Excelify我自己使用频率并不高,
因为没一天到晚在转东西或长时间测试Excelify功能。

我只在需要做转换时才会想到去使用他,
而他确实他替我解决掉好几个数据转换的问题(包含下方Line Bot的辞典数据库),

但我不保证这个工具在您的环境中,转出数据的正确性,
他是否符合您的期待,所以您要使用他,请自行留意数据转换后的结果,
当然,如果您有发现什么问题,请欢迎开PR给我。

越多人使用他,能让我了解到有那些问题,再去优化他。
如果您也喜欢这个包,也欢迎fork帮我优化哦。

安装Excelify包:

https://packagist.org/packages/deviny/excelify

这是我练习的Line Bot:

如果您想邀这个机器人进入群组:  欢迎加他好友哦。
这算是一个拥有十六万字库的辞典了,懂成语,还会说故事呢!


教育部国语辞典公众授权网:
http://resources.publicense.moe.edu.tw/

 

Tags: product

Devin Yang

文章内容无法一一说明,如果您有什么不了解处,欢印提问哦:)

No Comment

Post your comment

需要登入才可留言!