分析EXCEL2003xls檔案格式小結

2021-06-12 14:01:50 字數 1292 閱讀 1470

程式設計操作excel,都是通過com的,也就是呼叫系統的excel元件功能。一般能處理為文字的資料庫資料很容易匯入excel,畢竟office元件也是個大專案。但處理從access表倒資料,要帶,效率就不行了。工作需要,花了乙個月時間分析excel並程式設計,特做小結以記錄。

excel xls檔案是按復合文件的二進位制格式存在的,有關復合文件的中文資料較多,內容也比較容易理解。excel的「業務內容」實際上都在workbook流裡面,我的結論是只需要個workbook流(不需要什麼summaryinfo流)就能生成excel檔案了。workbook流裡面也就是一條接一條的biff記錄了,2003是biff8。biff等office格式,微軟在幾年前就公開了,但卻沒能找到中文文件。有乙個柳州什麼畜牧學院的翻譯了乙個biff8格式說明,挺好的,但分析biff8格式,用biffview工具再配上e文文件還是王道。

當能把xls檔案的內容分析成一條接一條的biff8記錄以後,感覺好象豁然開朗了。但真正的麻煩在後頭:biff8的記錄種類很多,每一種就算是兩三百位元組的記錄,都可能包含大量要處理的資訊,比如其中乙個欄位在某種值的情況下,其後面的內容會對應著各種不同的結構,而每個結構又可能有多種變換。。。當然,本文不是來拆台的,主要還是講一些分析結果。

針對bcb導access資料表的分析,有圖和沒圖的xls的區別:biff8記錄只增加幾條有限的新記錄。原有記錄的種類、位置和尺寸不變,原有記錄的內容也大都不變。該類表只有boundsheet記錄和extsst記錄中儲存流偏移的字段被重新計算,計算的原理也較簡單。有圖的xls增加了msodrawinggroup記錄在較靠前的部分,所有的資料資訊都在裡面了。如果檔案裡有相同的,在這個記錄裡儲存乙份就可以了。每個實際都有兩個記錄組成,乙個msodrawing和乙個obj,有關msodrawinggroup和msodrawing的內容解析形式都一致的,都在office 格式e文文件裡查詢。  msodrawinggroup只有乙個(尺寸過大會被continue記錄處理),實際的msodrawing和obj連續存放,就是前一張圖的msodrawing和obj後緊接著下乙個圖的這兩個記錄,而不論在excel表裡的位置如何。其實「第一張」的msodrawing裡包含了所有msodrawing的總尺寸。

各字段的結構基本都可以查文件查到,雖然可能鏈結到好幾個內容才能解析,雖然有些最後鏈結也解釋不詳。值得一說的是,在我這裡,msodrawing結構型別為f010的結構,第乙個word如果是01就是隨單元格改變大小,為02就不隨。後面4個dword分別是left、top、right、bottom,我的分析結果是dword的前一word是單元格索引,後一word是與該單元格的偏移。   

還有不少細節,用文字不好表達,畫表做例項要好,就等下回再說了。

Excel 檔案格式 導讀

1.2 摘要 1.3位元組序 本文件包含microsoft excel二進位制檔案格式的說明,包括所有可用的excel版本 對於windows 從excel 2.x到當前的excel 2003。該專案已於2001年6月啟動,目前仍在進行中。在幾個地方,2do 這個詞表示乙個 檔案的不完整部分。章節內...

檔案格式分析

檔案格式實質上是資訊的一種的編碼方式,在windows中,採用副檔名來區分不同的檔案格式。文字格式 txt doc docx 音訊格式 txt arsii碼的方式存在 doc 以二進位制格式儲存 docx 作為乙個zip壓縮格式存在,是doc結合xml的一種格式,由於是分塊儲存,相比與doc檔案完整...

xlrd批量讀取xls格式excel檔案資料。

要提取所有excel檔案裡的藍色標記的資料到一張表裡 效果如下 主要採用了xlrd獲取xls檔案的單元格資料。後面用pandas存放資料並轉成了excel檔案。中間又加了一點多執行緒的東西。其實呢這個例子只有5個檔案,用不用多執行緒沒什麼影響.速度都很快.0.1秒就可以完成了。最近一直在一點點地學習...