您的位置:首页 > 其它

【如何从excel文件中高效提取数据?】——Libxl

2018-03-28 00:00 846 查看

来源:信息时代的犯罪侦查(ID:besti_xxsddfzzc)
原创:@时不我待

相信很多关注本号的童鞋,都遇到过侵犯公民个人信息的案件。在此类案件中,存储公民个人信息的电子数据动辄数以亿计。如果都是些平面文本文件,倒还好说。偏偏价值度颇高的信息存储在excel表格文件中。如何高效的进行软件处理,小编通过实践,向大家推荐一款工具:LibXL。尽量不直接贴代码,新手大可放心。为什么不直接使用excel软件提取其中的数据?

Excel是微软Office系列工具的一个套件,也就是俗称的电子表格办公软件。从应用场景上来说,大家平时使用excel,主要为了编辑和制作电子表格。
但是,当我们需要从数量众多的xls/xlsx文件中提取数据时,批量处理就显得非常有必要了。在这种情况下,微软也提供了很好的应用接口,即通过OLE方式,加载类型库(typeLib)。如果仅仅需要提取其中的数据和文本,可以选择CRange、CDocument、CDoucments等少数几个类库就可以了。在程序代码中添加这几个类库,完全可以满足您的需求。
事实上,微软产品的调用接口是非常丰富且标准化的,这也是小编长期推崇的地方。相比而言,WPS则稍逊一筹。不夸张的说,一款软件是否提供丰富的调用接口,是实力和自信心的体现。
但不得不说,即便使用OLE的方式,在处理海量xls/xlsx文件时,——比如一百万个excel文件,就会显得捉襟见肘了。毕竟通过调用接口的方式,会遭遇OLE处理瓶颈。于是,经过一段时间的筛选,小编向大家隆重推荐一个第三方库:Libxl。
什么是Libxl?

Libxl是xlware公司开发的第三方库,可以不依赖excel环境读取xls和xlsx文件,这为我们编写个性化的数据提取和匹配程序,提供了很好的前提。使用Libxl第三方库处理海量xls/xlsx的优缺点?

先说优点。从Libxl提供的调用方法来看,它使用了传统的文件读取方式(FILE *)。如此一来,直接消除了软件接口处理的瓶颈。如果说在效率上还存在不足的话,那也就只剩下硬件I/O的制约了。此外,libxl库支持多个平台,windows、Linux、Mac等。
再说缺点。从实践中看,libxl属于轻量级库,系统开销确实不多。但在多线程支持上略显失策。这方面,提醒大家在代码中加以注意。如果非得使用多线程处理xls/xlsx,当心软件崩溃!下面图示,是小编与xlware公司的开发工程师沟通的结果,所言不虚。


使用Libxl的注意事项

大家在网上下载的libxl各个版本库,多数属于限制使用。也就是说,当程序运行到一定阶段,必然会抛出异常,如下图所示。



这并不是代码的原因,版权保护而已。因此,小编去年耗费9000多元人民币购买了最新版本。在程序代码未做任何修改的情况下,运行一切正常。
Libxl主要接口用法:xlCreateBook():创建excel文件对象,如果是xlsx,则使用xlCreateXMLBook()。setKey():设置用户注册信息,是否正版就在这里验证。sheetCount():获取excel对象的sheet数量getSheet():获取excel对象的sheet对象firstRow():在一个sheet对象中,获取第一行lastRow():在一个sheet对象中,获取最后一行cellType():在一个sheet对象中,获取某个单元格的字符串该库其他的使用方法,互联网上有很多介绍,小编就不赘述了。
再次声明:如有需要可进行技术交流,但拒绝任何代理活动!






内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: