建立于: 7年前 ( 更新: 7年前 )
前言
Excelify是我使用Laravel开发的一套Excel数据转换工具,这个工具,目前战绩,
我自已成功透过这个工具,将教育部公众授权的excel档,辞典约有16万笔的数据,成语约5千多笔。
转换为我所需要的SQL格式。
我自已成功透过这个工具,将教育部公众授权的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档。
一、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官网的文档。
但是并非人人有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是无法正常运行的。
如果说只是单纯想转个数据,又有Docker时,透过Dcoker运行excelify是不错的选择,
因为Container我已设置好了php.ini,像是那种20~30MB的大Excel档是没什么问题的。
因为没一天到晚在转东西或长时间测试Excelify功能。
我只在需要做转换时才会想到去使用他,
而他确实他替我解决掉好几个数据转换的问题(包含下方Line Bot的辞典数据库),
但我不保证这个工具在您的环境中,转出数据的正确性,
他是否符合您的期待,所以您要使用他,请自行留意数据转换后的结果,
当然,如果您有发现什么问题,请欢迎开PR给我。
越多人使用他,能让我了解到有那些问题,再去优化他。
如果您也喜欢这个包,也欢迎fork帮我优化哦。
这是我练习的Line Bot:

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

教育部国语辞典公众授权网:
http://resources.publicense.moe.edu.tw/
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/
No Comment
Post your comment