亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
2178
2025-03-31
掀開面紗,看看Excel文件到底是什么
從Excel 2007開始,Microsoft采用了新的文件格式,稱為開放的XML文件格式,很好地改進了文件和數據管理、數據恢復和可交互能力。現在,任何支持XML的應用程序都能訪問和處理Excel文件信息,即便在系統沒有安裝Office軟件時,也可以查看文件的內容。
認識Excel文件
我們先準備一個Excel文件。
新建一個Excel工作簿,輸入數據、繪制圖表、放置圖片、形狀和控件、輸入VBA代碼,將其命名為ExcelFile.xlsm,如下圖1所示。
圖1
接著,關閉該工作簿。
然后,試試為該工作簿添加zip擴展名——ExcelFile.xlsm.zip。
發生了什么?
Excel文件變成了一個壓縮文件。下圖2展示了這個過程。
圖2
可以看出,Excel文件實際上是一個壓縮文件包。
每個文件包由許多XML文件組成,Microsoft將這些文件稱作“部件”。這些部件通過定義在不同的XML文件里的關系聯系在一起。
如上圖2所示,該Excel工作簿文件包中包含了3個根文件夾和1個文件,它們存儲著文件的組成結構關系、工作簿數據、文檔設置信息等內容。
每個文件夾中的子文件夾或文件如下圖3所示。
圖3
_rels文件夾
包含一個名為.rels的文件,存儲著Excel文件包關系的信息。有三個關系屬性:
屬性Id為任意的字符串,但必須唯一。
屬性Type表示關系的類型。
屬性Target指定包含關系的目標文件夾和文件。
docProps文件夾
xl文件夾
包含文件的核心部分。根據工作簿的具體內容,含有一些子文件夾,以及工作簿設置的XML文件。如果工作簿中含有VBA代碼,那么文件夾中還有以bin為擴展名的二進制文件。
_rels子文件夾:關系文件workbook.xml.rels定義了工作簿、數據和格式部件的關系。
charts子文件夾:包含圖表設置的XML文件。
chartsheets子文件夾:包含工作簿中每個圖表數據的XML文件。
drawings子文件夾:包含工作簿中形狀、圖片、圖表數據及關系的XML文件。
media子文件夾:包含內嵌的媒體文件,如JPG文件、GIF文件等。
theme子文件夾:包含工作簿主題的數據的XML文件。
worksheets子文件夾:包含工作簿中每個工作表的XML文件。
此外,如果工作簿中有ActiveX控件、表等,還會有下列子文件夾:
activeX子文件夾:包含控件設置的XML文件。
diagrams子文件夾:描述工作簿中形狀(SmartArt)的XML文件。
tables子文件夾:包含帶有每個表的數據的XML文件。
除了一些子文件夾外,還有一些單獨的XML文件。
[Content_Types].xml文件
列出了包括在Excel文件包中其它部件的內容類型。
了解XML文件的內容
以上文列舉的workbook.xml文件為例,其內容如下圖4所示。
圖4
在這個文件中,可以找到每個工作表對應的id號,即r:id。如果想要對某個工作表進行操作,那么可以先找到該工作表的r:id。
例如,假設想要在工作表Sheet2中添加內容,則需要找到包含該工作表內容的xml文件。
首先,從圖4中可以找到工作表Sheet2的r:id為rId3。
接著,查看子文件夾_rels中workbook.xml.rels文件的XML代碼,如圖5所示。
圖5
可以找到Id值為“rId3”對應的工作表XML文件為sheet2.xml。
然后,在子文件夾worksheets中找到sheet2.xml,如下圖6所示,其對應著工作表Sheet2。
圖6
工作表Sheet2中的內容如下圖7所示。
圖7
其sheet2.xml文件的內容如下圖8所示。
圖8
工作表Sheet2中單元格A1的內容在哪里呢?找到圖8中的內容:
可以知道單元格A1中包含字符串(t=”s”),下一行:
4告訴我們需要在文件夾“xl”中名為sharedStrings.xml的文件里查找項目的索引數值為4。
下圖9所示為文件sharedString.xml的內容:
圖9
看看該文件的頂部的紅色下劃線部分,表明該工作簿中共有5個唯一字符串。由于索引值以0為基數,而我們要查找的索引值是4,因此需要找到該文件中第5個“”項,如上圖9中的紅色方框部分。
使用XML文件操作Excel文檔
在單元格中添加文本
在工作表Sheet2中添加新的文本數據。
首先,修改文件sharedStrings.xml頂部的字符串數,將5修改為6,如圖10所示。
圖10
接著,在該文件中添加新字符串,如圖11所示。
圖11
然后,修改文件sheet2.xml,以添加含有新字符串的行,如圖12所示。
圖12
添加文本數據后的工作表Sheet2如下圖13所示。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。