目录
1.应用场景,资料搜索以及思路确认
2.DHxlsReader(解读XLS)
3.利用GDataXML解读XML的方式来解读(xlsx)
4.相关资源链接
一.应用场景
在开发过程中遇到这样的需求,要求把APP沙盒的excel文件中的内容解析提取出来来使用,比如我有一张联系人的表,我要把其中的姓名,电话来提取出来,应用到app中去.开始没有接触过这方面的知识,于是乎理所当然的谷歌百度了一番,资料比较少,而且年代都比较久远,可能是这方面的需求比较少的原因吧.总之,理一下思路吧先.
首先,我们来看一下Excel文件的两种格式xls和xlsx,格式不一样,解析的方式也不一样,区别的话大家自行百度,简而言之,在03之前都是xls,后来07版本出现了xlsx。网上有一种方法是先将excel文件转为csv格式的,然后再解析,但是转换的代码我没有找到,只是让客户在电脑上另存为,这个不合适.后来找到了一个框架,就是DHxlsReader,但是这个只能解析xls后缀格式的.然后xlsx格式的解决方法我是没有一点头绪,惭愧.后来是一块安卓的小伙伴想到的一个方法.后缀为.xlsx的excel文件从本质上是一个压缩文件,解压打开后的文件夹内容格式是固定的,具体的内容都放在一个xml文件中,我们要做的就是拿到文件,解析xml,提取内容.下面来把具体步骤分享一下.
二 .DHxlsReader(解读XLS)
这个框架也令我头疼了一天,因为从github上面下载下来的库是不能直接使用的,我也不太懂,于是乎又搜索了一下如何用.网上也有demo.因为DHxlsReader是一个项目,所以我们想要用的话,就涉及到一个问题: 如何在你的项目中插入一个新的项目来供你的项目调用.下面由图来解.
1,将单纯的DHxlsReader包含的文件全部拷贝到你的项目中来
2.打开你的项目,点击左下角加号,选择addFileTo...
3.这么只添加时没有关联的,下一步做的是添加关联,配置一些环境,有几个地方要注意
1添加库
第一个库添加的时候可能要注意一点,要点加号,Add Other...,然后command+shift+g, 输入/usr/lib/ ,你就可以找到了.我导入的时候碰到的问题是明明选择了 libiconv.dylib, 但是导出后就变成了libiconv.2.dylib, 如果出现这样的问题,就吧原来的删掉都统一换成新的库吧,
2.设置header search Path
3,因为DHxlsReader中用到了C的库,所以你的头文件要加上下图所示.
我配置的时候弄了一天,碰到各种各样的问题,因为这方面接触的不多,后来莫名其妙的就好了,也是无语,查资料的时候,header search path 设置的地方可能出了问题,但是demo是这么设置的,我也不甚理解,如果有大神知道,望给我详细解一下.
关于用法,demo里面都有,用法比较简单,就是环境配置比较麻烦一点.
三.利用GDataXML解读XML的方式来解读(xlsx)
07版之后的excel基本都是xlsx格式的,其本质上其实是一个压缩文件,打开之后是一个文件夹
我们来分析一下这个文件夹的结构;shareString是一个公共的字符串池,相当于,给我们表中字符串贴上一个标签一样.然后我们先分析一下shareString.xml里面的内容
然后我们先分析一下shareString.xml里面的内容
下面来解析worksheet中sheet1.xml
然后就这样循环的查下去,把你需要的内容查找出来,当然,这样肯定要求excel表格有一定的样式,最起码要给你一格标识来找到哪一行是姓名,哪一行是号码,要有几个模糊关键字让你来查询.xlsx文件的解析,我的做法是,先用 ZipArchive 将其解压到某一个固定的路径,然后再用GDataXML来解析,两张表获取具体内容,关于ZipArchive和GDataXML的使用和注意点,大家自行谷歌吧.思路便是如此了,第一次写文章,有点缭乱,大家见谅.
四.相关资源链接
1.demo地址:pan.baidu.com/s/1c2lBqBQ