java 使用XmlPullParser解析Excel2007

首先说下解析Excel2007的经历:本人是Android开发的,本想着用poi框架会比较好的解决问题,但是不太建议使用,主要有以下问题(纯属个人看法):

1、poi框架太大,导入两个包就超过了64K方法数。如果只解析2003还好,只需要一个包,但是业务上没谁只解析一个包,并且还是已经过时的Excel2003格式吧,

2、解析Excel2007的速度较慢,第一次加载的时间我大概计算了下(测试表只有5行5列数据),大概需要3、4秒才能解析出来,之后的速度会较快。如果业务需求能接受的可以使用。

以上测试在Android手机端进行!

 

将Excel2007即后缀为.xlsx的Excel表格,通过压缩工具打开,会有以下几个文件:

java 使用XmlPullParser解析Excel2007_第1张图片

要解析Excel,主要是解析xl目录下的文件,如下图:

java 使用XmlPullParser解析Excel2007_第2张图片

worksheets目录:所有创建的表保存的目录,命名为sheet1、2、3.xml

sharedStrings.xml:excel会遍历所有工作表,获取所有字符串数据并保存在这个xml文件中

workbook.xml:在此处可以获取表名,如未修改,默认为sheet1、2、3,如修改了则是自己修改的内容,但是上述worksheets目录中的命名不变(即我把sheet1改成了工作表1,workbook.xml里会对应修改,但是worksheets中还是显示sheet1

JAVA代码:

创建以下几个集合:

java 使用XmlPullParser解析Excel2007_第3张图片

1、加载Excel:首先通过Intent获取到文件的路径,根据路径进行压缩,并根据其中的xl/sharedStrings.xml路径进行数据的获取并储存

java 使用XmlPullParser解析Excel2007_第4张图片

2、获取Excel的所有工作表名:操作路径为xl/workbook.xml,每个表名标签以sheet开头,标签内有三个元素,第一个元素为表名

java 使用XmlPullParser解析Excel2007_第5张图片

3、设置工作表:根据获取到的表名,可以选择要操作的工作表(前面说到worksheet目录下的工作表名不变,因此传入时还是为sheet1、2、3即可)

下图中画红框的部分是:前面提到,有个sharedStrings.xml中是装所有表的String类型的数据,如果获取到列数据中标签元素等于2,并且第二项数据为s,则他的v标签中内容是装载sharedStrings.xml数据集合中的下标,根据这个下标,可以在集合中获取到对应的字符串数据

java 使用XmlPullParser解析Excel2007_第6张图片

java 使用XmlPullParser解析Excel2007_第7张图片

java 使用XmlPullParser解析Excel2007_第8张图片

储存数据的bean类:

java 使用XmlPullParser解析Excel2007_第9张图片

4、获取某一行数据:在第3步中已经获取到对应工作表的所有数据,并且根据自定义的JavaBean类存储,因此要获得某一行数据(即列变行不变):

java 使用XmlPullParser解析Excel2007_第10张图片

5、获取某一列数据:原理跟第4步想同(行变列不变):

java 使用XmlPullParser解析Excel2007_第11张图片

6、根据指定行列获取数据:

java 使用XmlPullParser解析Excel2007_第12张图片

 

总结:以上介绍了Java使用XmlPullParser解析Excel2007,在一些理解上纯属个人看法。如有其它看法,敬请指出,共同进步!

你可能感兴趣的:(Java,Android)