上一節說了xlsx怎麼獲取到我們想要的數據,但是我們還是要通過代碼來讀取,我們怎麼拿到我們想要的xml數據呢。
首先我們要知道xlsx壓縮包的數據流結構是怎麼樣的。這個我自己在研究的時候找到過一篇文章,很詳細有興趣的看下原文吧。xlsx數據流格式分析
我把數據構造截圖截過來了。
接下來我們只需要根據對應的字段內容讀取就好了。下面是flex中解析的代碼:
bytes.endian = Endian.LITTLE_ENDIAN;
while(true){
var hasValue:uint = bytes.readUnsignedInt();
//判斷文件頭
if(hasValue != 0x04034b50){
break ;
}
//14
//2解壓文件所需 pkware最低版本
//2通用比特標誌位(置比特0位=加密,詳情見後)
//2壓縮方式(詳情見後)
//2文件最後修改時間
//2文件最後修改日期
//4 CRC-32校驗碼
bytes.position = bytes.position + 14;
var compressSize:int = bytes.readUnsignedInt();
var uncompressSize:int = bytes.readUnsignedInt();
var fileNameLength:int = bytes.readUnsignedShort();
var extendLenth:int = bytes.readUnsignedShort();
var fileName:String = bytes.readUTFBytes(fileNameLength);
//指針指向下一個文件位置
bytes.position = bytes.position + extendLenth;
var fileByteArray:ByteArray = new ByteArray();
if(compressSize != 0)
{
bytes.readBytes(fileByteArray,0,compressSize);
}
//存儲數據
_dict[fileName] = fileByteArray;
}
bytes 是我們讀取到的xlsx字節流數據。
主要解析xlsx的代碼就是這個了。雖然網上庫也不少,但是感覺還是要自己弄懂了,纔是自己的。