Office Open XML

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，目前歷經4個版本，第1版（2006年12月）、第2版（2008年12月）、第3版（2011年6月）、第4版（2012年12月）。 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並非如其所聲稱的開放。 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文档包含<workbook>元素，其内部包含<sheets>与<sheet>元素用于表示各个工作表。每个工作表被创建为一个独立的XML文件。一个spreadsheet文档还可以包含<table>、 <chartsheet>、 <pivotTableDefinition>等元素。 在命名空间DocumentFormat.OpenXML.Spreadsheet中定义了spreadsheet中重要的elements： Microsoft. Register file extensions on third party servers. microsoft.com. [2009-09-04]. （原始内容存档于2010-02-19）.  Linux基金会：微软推OOXML的理由很荒唐. 开发者在线. 2008-02-27 [2013-03-08]. （原始内容存档于2008-10-10）.  共创联盟报告指微软文档标准有20大问题. 腾讯科技. 2007-08-22 [2013-03-08]. （原始内容存档于2013-10-29）.  OOXML: What's the big deal?. IBM developerWorks. 19 Feb 2008 [2013-03-08]. （原始内容存档于2012-01-26）.  Microsoft Expands List of Formats Supported in Microsoft Office. Microsoft. [2008-05-21]. （原始内容存档于2009-07-15）.  Microsoft's future lies somewhere beyond the Vista by Evansville Courier & Press. Courierpress.com. [2009-05-19]. （原始内容存档于2014-07-10）.  Rivals Set Their Sights on Microsoft Office: Can They Topple the Giant? - Knowledge@Wharton. Knowledge.wharton.upenn.edu. [2009-05-19]. （原始内容存档于2007-08-30）.  Overview of the XML file formats in Office 2010. [2013-03-08]. （原始内容存档于2012-11-18）.  Doug Mahugh. Office’s Support for ISO/IEC 29500 Strict. MSDN blogs. [2011-02-18]. （原始内容存档于2010-12-02）.  Standard ECMA-376. Ecma-international.org. [2009-05-19]. （原始内容存档于2011-08-24）.  ISO search for "29500". International Organization for Standardization. 2009-06-05 [2013-03-08]. （原始内容存档于2013-03-08）.  微軟文書格式為何常跑掉？揭開 OOXML 格式大祕辛. [2017-10-18]. （原始内容存档于2017-10-19）.  Microsoft. Open XML Format SDK. Microsoft. 2008-06-10 [2019-06-24]. （原始内容存档于2017-10-08）.  Erika Ehrli. Announcing the Open XML Format SDK 1.0. Computerworld. 2008-06-10 [2019-06-24]. （原始内容存档于2008-12-12）.  Doug Mahugh. Open XML SDK roadmap. MSDN Blogs. [2008-03-23]. （原始内容存档于2008-03-20）.  Welcome to the Open XML SDK 2.5 for Office. Microsoft. 2015-03-10 [2017-10-07]. （原始内容存档于2017-10-08）.  Open-XML-SDK on github. [2019-06-24]. （原始内容存档于2019-02-09）.