分享

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

 anyyss 2018-03-04


 知识案例随笔声音其他


编者按

相信很多关注本号的童鞋,都遇到过侵犯公民个人信息的案件。在此类案件中,存储公民个人信息的电子数据动辄数以亿计。如果都是些平面文本文件,倒还好说。偏偏价值度颇高的信息存储在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对象中,获取某个单元格的字符串

该库其他的使用方法,互联网上有很多介绍,小编就不赘述了。


再次声明:如有需要可进行技术交流,但拒绝任何代理活动!




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多