java 使用XmlPullParser解析Excel2007

首先說下解析Excel2007的經歷:本人是Android開發的,本想着用poi框架會比較好的解決問題,但是不太建議使用,主要有以下問題(純屬個人看法):

1、poi框架太大,導入兩個包就超過了64K方法數。如果只解析2003還好,只需要一個包,但是業務上沒誰只解析一個包,並且還是已經過時的Excel2003格式吧,

2、解析Excel2007的速度較慢,第一次加載的時間我大概計算了下(測試表只有5行5列數據),大概需要3、4秒才能解析出來,之後的速度會較快。如果業務需求能接受的可以使用。

以上測試在Android手機端進行!

 

將Excel2007即後綴爲.xlsx的Excel表格,通過壓縮工具打開,會有以下幾個文件:

要解析Excel,主要是解析xl目錄下的文件,如下圖:

worksheets目錄:所有創建的表保存的目錄,命名爲sheet1、2、3.xml

sharedStrings.xml:excel會遍歷所有工作表,獲取所有字符串數據並保存在這個xml文件中

workbook.xml:在此處可以獲取表名,如未修改,默認爲sheet1、2、3,如修改了則是自己修改的內容,但是上述worksheets目錄中的命名不變(即我把sheet1改成了工作表1,workbook.xml裏會對應修改,但是worksheets中還是顯示sheet1

JAVA代碼:

創建以下幾個集合:

1、加載Excel:首先通過Intent獲取到文件的路徑,根據路徑進行壓縮,並根據其中的xl/sharedStrings.xml路徑進行數據的獲取並儲存

2、獲取Excel的所有工作表名:操作路徑爲xl/workbook.xml,每個表名標籤以sheet開頭,標籤內有三個元素,第一個元素爲表名

3、設置工作表:根據獲取到的表名,可以選擇要操作的工作表(前面說到worksheet目錄下的工作表名不變,因此傳入時還是爲sheet1、2、3即可)

下圖中畫紅框的部分是:前面提到,有個sharedStrings.xml中是裝所有表的String類型的數據,如果獲取到列數據中標籤元素等於2,並且第二項數據爲s,則他的v標籤中內容是裝載sharedStrings.xml數據集合中的下標,根據這個下標,可以在集合中獲取到對應的字符串數據

儲存數據的bean類:

4、獲取某一行數據:在第3步中已經獲取到對應工作表的所有數據,並且根據自定義的JavaBean類存儲,因此要獲得某一行數據(即列變行不變):

5、獲取某一列數據:原理跟第4步想同(行變列不變):

6、根據指定行列獲取數據:

 

總結:以上介紹了Java使用XmlPullParser解析Excel2007,在一些理解上純屬個人看法。如有其它看法,敬請指出,共同進步!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章