Office Open XML(縮寫:Open XML、OpenXML或OOXML),為由Microsoft開發的一種以XML為基礎並以ZIP格式壓縮的電子檔案規範,支援檔案、表格、備忘錄、幻燈片等檔案格式。
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,目前歷經4個版本,第1版(2006年12月)、第2版(2008年12月)、第3版(2011年6月)、第4版(2012年12月)。[10]
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文件包含<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. |
參考文獻
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.