<p><b>Office Open XML</b>（縮寫：<b>Open XML</b>、<b>OpenXML</b>或<b>OOXML</b>），為由Microsoft開發的一種以XML為基礎並以ZIP格式壓縮的電子檔案規範，支援檔案、表格、備忘錄、幻燈片等檔案格式。
</p><p>OOXML在2006年12月成為了ECMA規範的一部分，編號為ECMA-376；並於2008年4月通過國際標準化組織的表決，在兩個月後公佈為ISO／IEC 29500國際標準。微軟推出這個格式，很多人認為是出於商業考量。許多專家指出，該標準並不是個完整的標準，採用了許多微軟的獨有規格，使用上困難重重。</p><p>從Microsoft Office 2007開始，Office Open XML檔案格式已經成為Microsoft Office預設的檔案格式。Microsoft Office 2010支援對ECMA-376標準文件的讀操作，ISO/IEC 29500 Transitional的讀/寫，ISO/IEC 29500 Strict的讀取。Microsoft Office 2013同時支援ISO/IEC 29500 Strict的讀寫操作。</p><p>它的競爭對手是OpenDocument Format，後者是被廣泛接受的一種開放的文件儲存和交換規範。
</p>


<h2><span id=".E7.89.88.E6.9C.AC"></span><span id="版本">版本</span></h2>
<p>存在以下幾個版本的Office Open XML標準。
</p>
<h3><span id="ECMA_376">ECMA 376</span></h3>
<p>ECMA 376，目前歷經4個版本，第1版（2006年12月）、第2版（2008年12月）、第3版（2011年6月）、第4版（2012年12月）。</p>
<h3><span id="ISO.2FIEC_29500"></span><span id="ISO/IEC_29500">ISO/IEC 29500</span></h3>
<p>ISO/IEC 29500目前最新的版本為2012年的版本
ISO/IEC標準的結構分為四部分。第1、2和3是獨立的標準，第2部分用於其他檔案格式，包括Design_Web_Format和XPS格式。第4部分作用是讀出第1部分的變體。</p>
<ul><li>第1部分（基礎知識和標記式語言參考）</li>
<li>第2部分（解包約定）</li>
<li>第3部分（標記相容性和可延伸性）</li>
<li>第4部分（過渡期遷移特性）</li></ul><h2><span id=".E6.89.B9.E8.A9.95"></span><span id="批評">批評</span></h2>
<p>微軟公司發表的Office Open XML使用許多非標準的規範，造成與其他辦公室軟體（例如LibreOffice）讀取時發生不相容或內容偏移的情形，目的是讓Microsoft Office保持市場優勢。
</p><p>ODF(廣泛接受的開放文件規範)編碼時會使用其他標準規範(如ISO 639、MathML)來進行儲存，但OOXML使用非標準的編碼進行存取。例如 ODF 裡面的顏色代碼，不管是試算表、檔案、簡報等，紅色的代碼都是 #FF0000，然而在OOXML裏隨不同產品，代碼分別為：
</p>
<ul><li>Word：#FF0000</li>
<li>Excel：#FFFF0000</li>
<li>Powerpoint：#FF0000</li></ul><p>OOXML設計的目的是將微軟定義的 doc、ppt、xls 二進制格式轉成 XML 格式，並沒有依照 XML 的特性最佳化，而其私有格式內含的額外非標準元件也包含在內，例如ActiveX等等（過時，且容易用於攻擊）；另一方面，比爾·蓋茲在1998年留下的備忘錄提到「不能讓其他瀏覽器可完美顯示MS Office檔案，只能讓自家公司的專屬IE可正確顯示」，現在的狀況可以說是微軟延續了比爾·蓋茲的精神，使「現代的MS Office存出的OOXML檔」刻意做成第三方軟體不能完善地解讀、呈現，顯示OOXML並非如其所聲稱的開放。</p>
<h2><span id="Open_XML_Format_SDK">Open XML Format SDK</span></h2>
<p>Microsoft Open XML Format SDK包含一套受控代碼庫用於編程以建立、操縱Office Open XML檔案。並不用於代替Microsoft Office Object Model，也不提供檔案格式的頂層抽象。使用Open XML SDK必須理解文件格式結構。對Word文件不提供諸如layout功能；對Excel文件，不提供諸如重新計算、資料重新整理等功能。
</p>
<ul><li>版本1.0發布於2008年6月10日。配合Office Open XML規範的ISO/IEC標準化過程。</li>
<li>版本2.0： 用於.NET 3.5應用程式。支援使用.NET的強型別類來直接表示XML的element/attribute/value、 使用Office Open XML schema驗證Office Open XML文件、在Office Open XML文件中搜尋。該SDK建於System.IO.Packaging API之上。使用了.NET Framework Language-Integrated Query (LINQ)技術用強型別。把很多操作Open XML packages封裝為API，以簡化使用。</li>
<li>版本2.5： 用於.NET 4.0應用程式。發布於2014年6月並在GitHub上開源。這是目前最高版本。支援Office 2013的一些新的類。讀取 ISO/IEC 29500 Strict Format文件。</li></ul><p><b>Open XML SDK 2.5 Productivity Tool for Microsoft Office</b>提供許多特性，如給予文件內容產生Open XML SDK 2.5原始碼，比較源與目標Open XML documents以產生原始碼從源建立目標文件、驗證文件、顯示文件，ECMA376v1標準，Microsoft Office實現註解。
</p><p>通常安裝在 C:\Program Files (x86)\Open XML SDK\V2.5\。
</p><p>一個Open XML文件包含多個文件部分（document part）。ZIP格式支援任意存取各個部分。例如，一個slide頁面、Word文件中的comment，都是獨立的文件部分。一個Open XML文件就是一個Open Packaging Conventions (OPC)包(package)。每個文件部分有個部分名字，由一系列segments或一個pathname組成，如"/word/theme/theme1.xml"。包的[Content_Types].xml部分，用於確定包中所有文件部分的內容類型。 
</p>
<h3><span id="SpreadsheetML.E6.96.87.E6.A1.A3"></span><span id="SpreadsheetML文档">SpreadsheetML文件</span></h3>
<p>SpreadsheetML文件包含<code>&lt;workbook&gt;</code>元素，其內部包含<code>&lt;sheets&gt;</code>與<code>&lt;sheet&gt;</code>元素用於表示各個工作表。每個工作表被建立為一個獨立的XML檔案。一個spreadsheet文件還可以包含<code>&lt;table&gt;</code>、 <code>&lt;chartsheet&gt;</code>、 <code>&lt;pivotTableDefinition&gt;</code>等元素。
</p><p>在命名空間DocumentFormat.OpenXML.Spreadsheet中定義了spreadsheet中重要的elements：
</p>
<h2><span id=".E5.8F.82.E8.80.83.E6.96.87.E7.8C.AE"></span><span id="参考文献">參考文獻</span></h2>


<p class="mw-empty-elt">








</p>
<!-- 
NewPP limit report
Parsed by mw2352
Cached time: 20230505225900
Cache expiry: 1814400
Reduced expiry: false
Complications: [show‐toc]
CPU time usage: 1.071 seconds
Real time usage: 1.257 seconds
Preprocessor visited node count: 12171/1000000
Post‐expand include size: 923227/2097152 bytes
Template argument size: 14315/2097152 bytes
Highest expansion depth: 23/100
Expensive parser function count: 263/500
Unstrip recursion depth: 0/20
Unstrip post‐expand size: 21298/5000000 bytes
Lua time usage: 0.471/10.000 seconds
Lua memory usage: 8413459/52428800 bytes
Number of Wikibase entities loaded: 0/400
--><!--
Transclusion expansion time report (%,ms,calls,template)
100.00%  823.476      1 -total
 75.78%  624.071      6 Template:Navbox
 58.91%  485.075    269 Template:Tsl
 47.44%  390.641      1 Template:ISO
 12.62%  103.928      1 Template:Reflist
 11.68%   96.213      1 Template:Microsoft_Office
 10.97%   90.309     17 Template:Cite_web
  9.97%   82.122      3 Template:Infobox_file_format
  9.68%   79.738      3 Template:Infobox
  7.38%   60.792      1 Template:Document_markup_languages
-->
**Office Open XML**（縮寫：**Open XML**、**OpenXML** 或 **OOXML**），為由 Microsoft 開發的一種以 XML 為基礎並以 ZIP 格式壓縮的電子檔案規範，支援檔案、表格、備忘錄、幻燈片等檔案格式。

OOXML 在 2006 年 12 月成為了 ECMA 規範的一部分，編號為 ECMA-376；並於 2008 年 4 月通過國際標準化組織的表決，在兩個月後公佈為 ISO／IEC 29500 國際標準。微軟推出這個格式，很多人認為是出於商業考量。許多專家指出，該標準並不是個完整的標準，採用了許多微軟的獨有規格，使用上困難重重。

從 Microsoft Office 2007 開始，Office Open XML 檔案格式已經成為 Microsoft Office 預設的檔案格式。Microsoft Office 2010 支援對 ECMA-376 標準文件的讀操作，ISO/IEC 29500 Transitional 的讀 / 寫，ISO/IEC 29500 Strict 的讀取。Microsoft Office 2013 同時支援 ISO/IEC 29500 Strict 的讀寫操作。

它的競爭對手是 OpenDocument Format，後者是被廣泛接受的一種開放的文件儲存和交換規範。

## 版本

存在以下幾個版本的 Office Open XML 標準。

### ECMA 376

ECMA 376，目前歷經 4 個版本，第 1 版（2006 年 12 月）、第 2 版（2008 年 12 月）、第 3 版（2011 年 6 月）、第 4 版（2012 年 12 月）。

### ISO/IEC 29500

ISO/IEC 29500 目前最新的版本為 2012 年的版本
ISO/IEC 標準的結構分為四部分。第 1、2 和 3 是獨立的標準，第 2 部分用於其他檔案格式，包括 Design\_Web\_Format 和 XPS 格式。第 4 部分作用是讀出第 1 部分的變體。

* 第 1 部分（基礎知識和標記式語言參考）
* 第 2 部分（解包約定）
* 第 3 部分（標記相容性和可延伸性）
* 第 4 部分（過渡期遷移特性）

## 批評

微軟公司發表的 Office Open XML 使用許多非標準的規範，造成與其他辦公室軟體（例如 LibreOffice）讀取時發生不相容或內容偏移的情形，目的是讓 Microsoft Office 保持市場優勢。

ODF (廣泛接受的開放文件規範) 編碼時會使用其他標準規範 (如 ISO 639、MathML) 來進行儲存，但 OOXML 使用非標準的編碼進行存取。例如 ODF 裡面的顏色代碼，不管是試算表、檔案、簡報等，紅色的代碼都是 #FF0000，然而在 OOXML 裏隨不同產品，代碼分別為：

* Word：#FF0000
* Excel：#FFFF0000
* Powerpoint：#FF0000

OOXML 設計的目的是將微軟定義的 doc、ppt、xls 二進制格式轉成 XML 格式，並沒有依照 XML 的特性最佳化，而其私有格式內含的額外非標準元件也包含在內，例如 ActiveX 等等（過時，且容易用於攻擊）；另一方面，比爾・蓋茲在 1998 年留下的備忘錄提到「不能讓其他瀏覽器可完美顯示 MS Office 檔案，只能讓自家公司的專屬 IE 可正確顯示」，現在的狀況可以說是微軟延續了比爾・蓋茲的精神，使「現代的 MS Office 存出的 OOXML 檔」刻意做成第三方軟體不能完善地解讀、呈現，顯示 OOXML 並非如其所聲稱的開放。

## Open XML Format SDK

Microsoft Open XML Format SDK 包含一套受控代碼庫用於編程以建立、操縱 Office Open XML 檔案。並不用於代替 Microsoft Office Object Model，也不提供檔案格式的頂層抽象。使用 Open XML SDK 必須理解文件格式結構。對 Word 文件不提供諸如 layout 功能；對 Excel 文件，不提供諸如重新計算、資料重新整理等功能。

* 版本 1.0 發布於 2008 年 6 月 10 日。配合 Office Open XML 規範的 ISO/IEC 標準化過程。
* 版本 2.0： 用於.NET 3.5 應用程式。支援使用.NET 的強型別類來直接表示 XML 的 element/attribute/value、 使用 Office Open XML schema 驗證 Office Open XML 文件、在 Office Open XML 文件中搜尋。該 SDK 建於 System.IO.Packaging API 之上。使用了.NET Framework Language-Integrated Query (LINQ) 技術用強型別。把很多操作 Open XML packages 封裝為 API，以簡化使用。
* 版本 2.5： 用於.NET 4.0 應用程式。發布於 2014 年 6 月並在 GitHub 上開源。這是目前最高版本。支援 Office 2013 的一些新的類。讀取 ISO/IEC 29500 Strict Format 文件。

**Open XML SDK 2.5 Productivity Tool for Microsoft Office** 提供許多特性，如給予文件內容產生 Open XML SDK 2.5 原始碼，比較源與目標 Open XML documents 以產生原始碼從源建立目標文件、驗證文件、顯示文件，ECMA376v1 標準，Microsoft Office 實現註解。

通常安裝在 C:\Program Files (x86)\Open XML SDK\V2.5\。

一個 Open XML 文件包含多個文件部分（document part）。ZIP 格式支援任意存取各個部分。例如，一個 slide 頁面、Word 文件中的 comment，都是獨立的文件部分。一個 Open XML 文件就是一個 Open Packaging Conventions (OPC) 包 (package)。每個文件部分有個部分名字，由一系列 segments 或一個 pathname 組成，如 "/word/theme/theme1.xml"。包的 [Content\_Types].xml 部分，用於確定包中所有文件部分的內容類型。

### SpreadsheetML 文件

SpreadsheetML 文件包含 `<workbook>` 元素，其內部包含 `<sheets>` 與 `<sheet>` 元素用於表示各個工作表。每個工作表被建立為一個獨立的 XML 檔案。一個 spreadsheet 文件還可以包含 `<table>`、 `<chartsheet>`、 `<pivotTableDefinition>` 等元素。

在命名空間 DocumentFormat.OpenXML.Spreadsheet 中定義了 spreadsheet 中重要的 elements：

## 參考文獻
.docx