天天看點

ECMA-376(Office Open XML)标準檔案閱讀記錄(一)

作者:好先生FX

前言

工作離不開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)标準檔案,看看能不能通過标準檔案将這些檔案、标簽等内容的含義弄明白。

繼續閱讀