Office Open XML

Office Open XML(縮寫:Open XMLOpenXMLOOXML),為由Microsoft開發的一種以XML為基礎並以ZIP格式壓縮的電子文件規範,支持文件表格備忘錄幻燈片等檔案格式。

Office Open XML Document
扩展名
.docx, .docm
互联网媒体类型
application/vnd.
openxmlformats-officedocument.
wordprocessingml.
document[1]
开发者微软, Ecma, ISO/IEC
首次发布2006年12月7日,​17年前​(2006-12-07
最新版本
第3版
2012年8月15日,​11年前​(2012-08-15
格式类型文件檔案格式
扩展自XML, DOC, WordProcessingML
标准ECMA-376, ISO/IEC 29500
网站ECMA-376, ISO/IEC 29500-1:2012
Office Open XML Presentation
扩展名
.pptx, .pptm
互联网媒体类型
application/vnd.
openxmlformats-officedocument.
presentationml.
presentation[1]
开发者微软, Ecma, ISO/IEC
首次发布2006年12月7日,​17年前​(2006-12-07
最新版本
第3版
2011年6月29日,​12年前​(2011-06-29
格式类型簡報
扩展自XML, PPT
标准ECMA-376, ISO/IEC 29500
网站ECMA-376, ISO/IEC 29500:2008
Office Open XML Workbook
扩展名
.xlsx, .xlsm
互联网媒体类型
application/vnd.
openxmlformats-officedocument.
spreadsheetml.
sheet[1]
开发者微软, Ecma, ISO/IEC
首次发布2006年12月7日,​17年前​(2006-12-07
最新版本
第三版
2011年6月29日,​12年前​(2011-06-29
格式类型电子试算表
扩展自XML, XLS, SpreadsheetML
标准ECMA-376, ISO/IEC 29500
网站ECMA-376, ISO/IEC 29500:2008

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

从Microsoft Office 2007开始,Office Open XML文件格式已经成为Microsoft Office默认的文件格式。[5][6][7]Microsoft Office 2010支持对ECMA-376标准文档的读操作,ISO/IEC 29500 Transitional的读/写,ISO/IEC 29500 Strict的读取。[8]Microsoft Office 2013同时支持ISO/IEC 29500 Strict的读写操作。[9]

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

版本编辑

存在以下几个版本的Office Open XML标准。

ECMA 376编辑

ECMA 376,目前歷經4個版本,第1版(2006年12月)、第2版(2008年12月)、第3版(2011年6月)、第4版(2012年12月)。[10]

ISO/IEC 29500编辑

ISO/IEC 29500目前最新的版本為2012年的版本ISO/IEC标准的结构分为四部分。第1、2和3是独立的标准,第2部分用于其他文件格式,包括Design_Web_Format和XPS格式。第4部分作用是读出第1部分的变体。[11]

  • 第1部分(基础知识和标记语言参考)
  • 第2部分(解包约定)
  • 第3部分(标记兼容性和可扩展性)
  • 第4部分(过渡期迁移特性)

批評编辑

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

ODF(廣泛接受的開放文檔規範)編碼時會使用其他標準規範(如ISO 639MathML)來進行儲存,但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並非如其所聲稱的開放。[12]

Open XML Format SDK编辑

Microsoft Open XML Format SDK[13]包含一套托管代码库用于编程以创建、操纵Office Open XML文件。并不用于代替Microsoft Office Object Model,也不提供文件格式的顶层抽象。使用Open XML SDK必须理解文档格式结构。对Word文档不提供诸如layout功能;对Excel文档,不提供诸如重新计算、数据刷新等功能。

  • 版本1.0发布于2008年6月10日。[14]配合Office Open XML规范的ISO/IEC标准化过程。[15]
  • 版本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月[16]并在GitHub上开源。[17]这是目前最高版本。支持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:

Package PartTop Level SpreadsheetML ElementOpen XML SDK 2.5 Class描述
WorkbookworkbookWorkbook主文档part的根元素
WorksheetworksheetWorksheetA type of sheet that represent a grid of cells that contains text, numbers, dates or formulas.
Chart SheetchartsheetChartsheetA sheet that represents a chart that is stored as its own sheet.
TabletableTableA logical construct that specifies that a range of data belongs to a single dataset.
Pivot TablepivotTableDefinitionPivotTableDefinitionA logical construct that displays aggregated view of data in an understandable layout.
Pivot CachepivotCacheDefinitionPivotCacheDefinitionA construct that defines the source of the data in the PivotTable.
Pivot Cache RecordspivotCacheRecordsPivotCacheRecordsA cache of the source data of the PivotTable.
Calculation ChaincalcChainCalculationChainA construct that specifies the order in which cells in the workbook were last calculated.
Shared String TablesstSharedStringTableA construct that contains one occurrence of each unique string that occurs on all worksheets in a workbook.
Conditional FormattingconditionalFormattingConditionalFormattingA construct that defines a format applied to a cell or series of cells.
FormulasfCellFormulaA construct that defines the formula text for a cell that contains a formula.

参考文献编辑

  1. ^ 1.0 1.1 1.2 Microsoft. Register file extensions on third party servers. microsoft.com. [2009-09-04]. (原始内容存档于2010-02-19). 
  2. ^ Linux基金会:微软推OOXML的理由很荒唐. 开发者在线. 2008-02-27 [2013-03-08]. (原始内容存档于2008-10-10). 
  3. ^ 共创联盟报告指微软文档标准有20大问题. 腾讯科技. 2007-08-22 [2013-03-08]. (原始内容存档于2013-10-29). 
  4. ^ OOXML: What's the big deal?. IBM developerWorks. 19 Feb 2008 [2013-03-08]. (原始内容存档于2012-01-26). 
  5. ^ Microsoft Expands List of Formats Supported in Microsoft Office. Microsoft. [2008-05-21]. (原始内容存档于2009-07-15). 
  6. ^ Microsoft's future lies somewhere beyond the Vista by Evansville Courier & Press. Courierpress.com. [2009-05-19]. (原始内容存档于2014-07-10). 
  7. ^ Rivals Set Their Sights on Microsoft Office: Can They Topple the Giant? - Knowledge@Wharton. Knowledge.wharton.upenn.edu. [2009-05-19]. (原始内容存档于2007-08-30). 
  8. ^ Overview of the XML file formats in Office 2010. [2013-03-08]. (原始内容存档于2012-11-18). 
  9. ^ Doug Mahugh. Office’s Support for ISO/IEC 29500 Strict. MSDN blogs. [2011-02-18]. (原始内容存档于2010-12-02). 
  10. ^ Standard ECMA-376. Ecma-international.org. [2009-05-19]. (原始内容存档于2011-08-24). 
  11. ^ ISO search for "29500". International Organization for Standardization. 2009-06-05 [2013-03-08]. (原始内容存档于2013-03-08). 
  12. ^ 微軟文書格式為何常跑掉?揭開 OOXML 格式大祕辛. [2017-10-18]. (原始内容存档于2017-10-19). 
  13. ^ Microsoft. Open XML Format SDK. Microsoft. 2008-06-10 [2019-06-24]. (原始内容存档于2017-10-08). 
  14. ^ Erika Ehrli. Announcing the Open XML Format SDK 1.0. Computerworld. 2008-06-10 [2019-06-24]. (原始内容存档于2008-12-12). 
  15. ^ Doug Mahugh. Open XML SDK roadmap. MSDN Blogs. [2008-03-23]. (原始内容存档于2008-03-20). 
  16. ^ Welcome to the Open XML SDK 2.5 for Office. Microsoft. 2015-03-10 [2017-10-07]. (原始内容存档于2017-10-08). 
  17. ^ Open-XML-SDK on github. [2019-06-24]. (原始内容存档于2019-02-09).