前言
工作離不開Excel,最近更是又要對大量Excel表格進行合并、彙總、計算、拆分等。把以前寫的代碼花了幾天改了改,雖然是解決了這些工作内容,但總感覺這種解決方式不夠優雅。想了想還是把ECMA-376标準檔案拿出來讀一遍,根據标準檔案來寫一個相對完善的底層庫,讓自己的代碼能夠勉強看得過去吧。
一、Office Open XML 簡介
Office Open XML (Open XML) 是一種國際認可的檔案格式标準,Office 軟體套件實施這種标準來儲存和交換資訊。
Open XML 标準的主要目标之一是可與編寫該标準時已存在的 Microsoft Office 文檔集完全相容。
Open XML 為 Office 軟體實施者提供一個支援各種功能的标準。這些功能包括互操作性、存檔保護、擴充性、與現有 Microsoft Office 文檔的相容性,等等。
Open XML 可提供廣泛支援。例如:Mac 産品 iWork,Linux 作業系統上來自 OpenOffice.org 的産品,Windows 作業系統上,Microsoft Offic等均能夠使用 Open XML 檔案。
二、ECMA-376 标準
Open XML 格式由名為 ECMA(歐洲計算機廠家協會) 的标準組織定義。定義 Open XML 的特定文檔是 ECMA-376 标準。
另一個全球标準組織是國際标準化組織 (ISO),它也提供一項 Open XML 标準,稱為 ISO/IEC 29500。
ECMA-376 标準的第 2 版與 ISO 29500 的 Strict 版本相同。
ECMA-376 标準用于指定 Open XML,它描述了建立、編輯和儲存 Open XML 檔案所需的要求。它提供有關構成 Open XML 的标記語言的資訊。它說明用于 Open XML 檔案的打包約定,并介紹了軟體供應商可用于建構該标準的自定義擴充的機制。ECMA-376 還介紹該标準的用于維護向後相容性的功能。
三、Office 軟體商 Open XML 實作的樣子
我們使用WPS軟體建立一個XLSX格式的Excel電子表格檔案,例如:“人員資訊表.xlsx”,然後将拓展名由.xlsx修改為.zip,解壓後我們将看到以下檔案結構:
_rels
---_rels.
docProps
---app.xml
---core.xml
---custom.xml
xl
---_rels
------workbook.xml.rels
---theme
------theme1.xml
---worksheets
------sheet1.xml
------sheet2.xml
------sheet3.xml
---sharedStrings.xml
---style.xml
---workbook.xml
我們打開xl檔案夾中的worksheets檔案夾,然後打開sheet1.xml,将看到以下内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:etc="http://www.wps.cn/officeDocument/2017/etCustomData">
<sheetPr/>
<dimension ref="A1"/>
<sheetViews>
<sheetView tabSelected="1" workbookViewId="0">
<selection activeCell="A1" sqref="A1"/>
</sheetView>
</sheetViews>
<sheetFormatPr defaultColWidth="9" defaultRowHeight="13.5"/>
<sheetData>
<row r="1" spans="1:1">
<c r="A1" t="s">
<v>0</v>
</c>
</row>
</sheetData>
<pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
<pageSetup paperSize="9" orientation="portrait"/>
<headerFooter/>
</worksheet>
四、最後
現在雖然我們已經獲得了Office檔案的Open XML檔案,但是其中如[Content_Types.xml]等檔案的含義,以及檔案内容中如row等标簽,我們均不了解其代表的含義。接下來,我們就将開始閱讀ECMA-376(Office Open XML)标準檔案,看看能不能通過标準檔案将這些檔案、标簽等内容的含義弄明白。