Office Open XML
Office Open XML(缩写:Open XML、OpenXML或OOXML),为由Microsoft开发的一种以XML为基础并以ZIP格式压缩的电子文件规范,支持文件、表格、备忘录、幻灯片等文件格式。
扩展名 |
.docx, .docm |
---|---|
互联网媒体类型 | |
开发者 | 微软, Ecma, ISO/IEC |
首次发布 | 2006年12月7日 |
最新版本 | 第3版 2012年8月15日 |
格式类型 | 文档文件格式 |
扩展自 | XML, DOC, WordProcessingML |
标准 | ECMA-376, ISO/IEC 29500 |
网站 | ECMA-376, ISO/IEC 29500-1:2012 |
扩展名 |
.pptx, .pptm |
---|---|
互联网媒体类型 | |
开发者 | 微软, Ecma, ISO/IEC |
首次发布 | 2006年12月7日 |
最新版本 | 第3版 2011年6月29日 |
格式类型 | 演示稿 |
扩展自 | XML, PPT |
标准 | ECMA-376, ISO/IEC 29500 |
网站 | ECMA-376, ISO/IEC 29500:2008 |
扩展名 |
.xlsx, .xlsm |
---|---|
互联网媒体类型 | |
开发者 | 微软, Ecma, ISO/IEC |
首次发布 | 2006年12月7日 |
最新版本 | 第三版 2011年6月29日 |
格式类型 | 电子表格 |
扩展自 | XML, XLS, SpreadsheetML |
标准 | ECMA-376, ISO/IEC 29500 |
网站 | ECMA-376, ISO/IEC 29500:2008 |
OOXML在2006年12月成为了ECMA规范的一部分,编号为ECMA-376;并于2008年4月通过国际标准化组织的表决,在两个月后公布为ISO/IEC 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 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并非如其所声称的开放。[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 Part | Top Level SpreadsheetML Element | Open XML SDK 2.5 Class | 描述 |
---|---|---|---|
Workbook | workbook | Workbook | 主文档part的根元素 |
Worksheet | worksheet | Worksheet | A type of sheet that represent a grid of cells that contains text, numbers, dates or formulas. |
Chart Sheet | chartsheet | Chartsheet | A sheet that represents a chart that is stored as its own sheet. |
Table | table | Table | A logical construct that specifies that a range of data belongs to a single dataset. |
Pivot Table | pivotTableDefinition | PivotTableDefinition | A logical construct that displays aggregated view of data in an understandable layout. |
Pivot Cache | pivotCacheDefinition | PivotCacheDefinition | A construct that defines the source of the data in the PivotTable. |
Pivot Cache Records | pivotCacheRecords | PivotCacheRecords | A cache of the source data of the PivotTable. |
Calculation Chain | calcChain | CalculationChain | A construct that specifies the order in which cells in the workbook were last calculated. |
Shared String Table | sst | SharedStringTable | A construct that contains one occurrence of each unique string that occurs on all worksheets in a workbook. |
Conditional Formatting | conditionalFormatting | ConditionalFormatting | A construct that defines a format applied to a cell or series of cells. |
Formulas | f | CellFormula | A construct that defines the formula text for a cell that contains a formula. |
参考文献
- ^ 1.0 1.1 1.2 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).