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日,​12年前​(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日,​13年前​(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日,​13年前​(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_FormatXPS格式。第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 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. ^ 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).