前言
工作離不開Excel,最近更是又要對大量Excel表格進(jìn)行合并、匯總、計算、拆分等。把以前寫的代碼花了幾天改了改,雖然是解決了這些工作內(nèi)容,但總感覺這種解決方式不夠優(yōu)雅。想了想還是把ECMA-376標(biāo)準(zhǔn)文件拿出來讀一遍,根據(jù)標(biāo)準(zhǔn)文件來寫一個相對完善的底層庫,讓自己的代碼能夠勉強看得過去吧。
一、Office Open XML 簡介
Office Open XML (Open XML) 是一種國際認(rèn)可的文件格式標(biāo)準(zhǔn),Office 軟件套件實施這種標(biāo)準(zhǔn)來保存和交換信息。
Open XML 標(biāo)準(zhǔn)的主要目標(biāo)之一是可與編寫該標(biāo)準(zhǔn)時已存在的 Microsoft Office 文檔集完全兼容。
Open XML 為 Office 軟件實施者提供一個支持各種功能的標(biāo)準(zhǔn)。這些功能包括互操作性、存檔保護、擴展性、與現(xiàn)有 Microsoft Office 文檔的兼容性,等等。
Open XML 可提供廣泛支持。例如:Mac 產(chǎn)品 iWork,Linux 操作系統(tǒng)上來自 OpenOffice.org 的產(chǎn)品,Windows 操作系統(tǒng)上,Microsoft Offic等均能夠使用 Open XML 文件。
二、ECMA-376 標(biāo)準(zhǔn)
Open XML 格式由名為 ECMA(歐洲計算機廠家協(xié)會) 的標(biāo)準(zhǔn)組織定義。定義 Open XML 的特定文檔是 ECMA-376 標(biāo)準(zhǔn)。
另一個全球標(biāo)準(zhǔn)組織是國際標(biāo)準(zhǔn)化組織 (ISO),它也提供一項 Open XML 標(biāo)準(zhǔn),稱為 ISO/IEC 29500。
ECMA-376 標(biāo)準(zhǔn)的第 2 版與 ISO 29500 的 Strict 版本相同。
ECMA-376 標(biāo)準(zhǔn)用于指定 Open XML,它描述了創(chuàng)建、編輯和保存 Open XML 文件所需的要求。它提供有關(guān)構(gòu)成 Open XML 的標(biāo)記語言的信息。它說明用于 Open XML 文件的打包約定,并介紹了軟件供應(yīng)商可用于構(gòu)建該標(biāo)準(zhǔn)的自定義擴展的機制。ECMA-376 還介紹該標(biāo)準(zhǔn)的用于維護向后兼容性的功能。
三、Office 軟件商 Open XML 實現(xiàn)的樣子
我們使用WPS軟件新建一個XLSX格式的Excel電子表格文件,例如:“人員信息表.xlsx”,然后將拓展名由.xlsx修改為.zip,解壓后我們將看到以下文件結(jié)構(gòu):
_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,將看到以下內(nèi)容:
<?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>
四、最后
現(xiàn)在雖然我們已經(jīng)獲得了Office文件的Open XML文件,但是其中如[Content_Types.xml]等文件的含義,以及文件內(nèi)容中如row等標(biāo)簽,我們均不了解其代表的含義。接下來,我們就將開始閱讀ECMA-376(Office Open XML)標(biāo)準(zhǔn)文件,看看能不能通過標(biāo)準(zhǔn)文件將這些文件、標(biāo)簽等內(nèi)容的含義弄明白。