文章編號: 288215 - 上次校閱: 2007年11月2日 - 版次: 4.2

Microsoft Excel 2002 和 XML 的相關資訊

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
全部展開 | 全部摺疊

結論

Excel 2002 可讓您開啟,並以 「 可延伸標記語言 」 (XML) 格式儲存檔案。本文提供的 XML 概觀和 XML 樣式表和如何可以使用它們使用 Excel。討論下列主題:

其他相關資訊

XML 是什麼?

XML 是一種文字格式為結構化資料。因為 XML 輕鬆地建立和解譯所以它用在各種不同的應用程式。適當,或語式正確,XML 依照規定資料結構還提供 XML 開發人員很棒彈性,以建立無限數量的自訂標記的最佳的一組的指導方針說明資料以及資料中可能存在的關係。

像 HTML,XML 是以標籤的組合組織文字 標記語言 (角括號括住的文字 < 和 >) 和屬性 (表單名稱 = 值 」)。但是 HTML 指定什麼每個標記和屬性表示,並且應該會將它呈現供顯示的方式,而 XML 使用標記只是用來描述元素的資料。因為您可以使用任何標記名稱以 XML,它位於應用程式可解譯資料和其意義的唯一慎重。雖然 XML 開發人員是隨意建立任何標記或階層最佳符合其資料,是一組的應當確保 XML 會被視為的規格語式正確。語式正確的 XML 有下列特性:
  • 它包含剛好一個根項目有其唯一的名稱並不會顯示在文件中的任何其他項目。
  • 項目,讓沒有標記重疊項目之間適當地巢狀。
  • 所有的項目標籤就會關閉。
  • 項目開始和結束標記使用一致的情況下 (XML 會區分大小寫)。
  • 所有的項目屬性會被括在引號內雙或單一中。
  • 特殊字元 (例如 &,<、 >) 定義為內建實體 (&,<、 >)。
下列是語式正確的 XML 的範例:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="dictionary.xsl" ?>
<Dictionary>
  <Entries>
    <Entry>
      <Word Type="1">Energetic</Word>
      <Definition>Having, exerting, or displaying energy</Definition>
    </Entry>
    <Entry>
      <Word Type="1">Happy</Word>
      <Definition>Enjoying, displaying, or characterized by pleasure or joy</Definition>
    </Entry>
    <Entry>
      <Word Type="2">Emotion</Word>
      <Definition>A complex, strong subjective response</Definition>
    </Entry>
  </Entries>
</Dictionary>
				
圖 1-完整格式的 XML 範例 (Dictionary.xml)
[圖 1] 中的 XML 描述在字典中的項目。根項目是 <dictionary>,且根包含一個名為 <entries>的子項目。<entries>包含每一個都描述在字典中的個別項目資料的三個兒童。對於每個項目中,有兩個項目子系: <word>和 <definition>。每個 <Word>項目的值是文字本身 ; <Word>元素也有 Type 屬性,指出是否這個字是形容詞來 (1) 或名詞 (2)。<definition>項目有一個文字值,沒有屬性。

XML 樣式表是什麼?

XML 標籤描述在文字檔案資料但單獨的 XML 不會指定如何將資料呈現給使用者。XML 資料的格式化規則通常會包含在 XML 樣式表。XML 樣式表是可延伸樣式語言 (XSL) 來 轉換 XML 資料用於簡報的語式正確的 XML 文件。您可以有相同的 XML 資料的許多樣式表。雖然實際的 XML 資料結構可能會保持不變,樣式表可讓您以許多不同的方式呈現資料的彈性。
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
  <xsl:template match="/">
    <HTML>
      <BODY>
        <UL>
          <xsl:for-each order-by="+ Word" select="Dictionary/Entries/Entry">
            <LI>
              <B><xsl:value-of select="Word"/></B>
              <xsl:if test="Word[@Type='1']"><I>adj.</I></xsl:if>
              <xsl:if test="Word[@Type='2']"><I>n.</I></xsl:if>
              <BR/>
              <xsl:value-of select="Definition"/>
              <BR/><BR/>
            </LI>
          </xsl:for-each>
        </UL>
      </BODY>
    </HTML>
  </xsl:template>
</xsl:stylesheet>
				
圖 2: XML 樣式表 (Dictionary.xsl)

[圖 2] 所示的 Dictionary.xsl 是可以用來轉換範例 Dictionary.xml 的樣式表。在一個 HTML 簡報可以在網頁瀏覽器中檢視資料的轉換結果。XSL 排序字典項目項目符號清單中依字母順序,並設定格式的字典項目每一個元件。在瀏覽器中呈現已轉換的 XML 類似下列:
  • 表情 n.
    複雜、 強式的主觀回應

  • energetic形容詞]
    不用、 exerting,或顯示能源

  • 快樂形容詞]
    顯示,或由享受或享受這 characterized 享受

試試看吧出: 複製和貼上 [圖 1] 中 XML 到任何文字編輯器,並儲存它作為 Dictionary.xml。然後複製並貼入 XML 樣式表中 [圖 2,並將它存成 Dictionary.xsl 在 Dictionary.xml 與相同的資料夾中。啟動 Internet Explorer],並瀏覽至 Dictionary.xml。

Excel 不會如何轉譯 XML 檔案?

Excel 可以開啟任何語式正確的 XML 檔案。可直接從 檔案] 功能表上的 [開啟舊檔] 命令開啟 XML 檔案。XML 檔案也可以開啟以程式設計方式使用 [開啟舊檔] 或 [OpenXML活頁簿 集合的方法。不論是否開啟 XML 透過程式碼或透過使用者介面 (UI),檔案被標示為唯讀,使您不小心無法取代您原始的原始程式檔以下列 XML Spreadsheet (XMLSS) format

XML 扁平化

在 Excel 中, 當您匯入不是 XML 試算表 (XMLSS) 的格式的 XML Excel 會使用特殊的 flattening 演算法將資料載入到資料列和資料行。Excel 工作表是資料列和資料行所組成的二維實體 ; 因為 XML 可以有兩個以上維度,扁平化需要來解譯 XML,以便載入工作表上的儲存格。

請考慮以下兩個設定的 XML,基本上代表相同的資料不同的方式:

<?xml version="1.0"?>
<Customer>
   <CustomerID>1234</CustomerID>
   <FirstName>John</FirstName>
   <LastName>Doe</LastName>
</Customer>
				
圖 3: 客戶與子元素的 XML
<?xml version="1.0"?>
<Customer CustomerID="1234" FirstName="John" LastName="Doe"/>
				
圖 4: 客戶以屬性的 XML
如果在 [圖 3 XML 載入 Excel 資料被匯入的儲存格,如下所示:

 ABC
1/Customer  
2/CustomerID/FirstName/LastName
31234JohnDoe

Excel 會將屬性與項目子系完全一樣。若要排除與現有的項目名稱衝突,Excel 預先規劃 at 符號 (@) 到 XSL 圖樣一致性的屬性名稱命名標準與前面。因此,[圖 4] 中的 XML 載入至儲存格相同的方式,與儲存格 A2、 B2,與 C2 包含 /@CustomerID"、"/@FirstName"和"/@LastName 」 分別例外狀況。

圖 3 和 4 中將客戶 XML 遵循很容易看到一個二維結構。但是請考慮下列客戶 XML,無法輕易地解譯為二維因為額外的 <order>層級的:

<?xml version="1.0"?>
<Customers>
  <Customer>
    <CustomerID>1234</CustomerID>
    <FirstName>John</FirstName>
    <LastName>Doe</LastName>
    <Orders>
      <Order ProdID="AAA" Amt="10"/>
      <Order ProdID="BBB" Amt="3"/>
    </Orders>
  </Customer>
  <Customer>
    <CustomerID>5678</CustomerID>
    <FirstName>Alice</FirstName>
    <LastName>Smith</LastName>
    <Orders>
      <Order ProdID="AAA" Amt="5"/>
    </Orders>
  </Customer>
</Customers>
				
[圖 5]: 客戶 XML 根項目之下的兩個層級

在 [圖 5] 中 XML,沒有一位客戶有兩個訂單和另一個具有一個訂單的客戶。Excel 必須匯入 XML 方式維護訂單和客戶之間的關係。Excel 會將 XML 匯入三列如下所示:


 ABCDEFG
1/Customer      
2/Customer#id/Customer/CustomerID/Customer/CustomerID/#agg/Customer/FirstName/Customer/LastName/Customer/Orders/Order/@Amt/Customer/Orders/Order/@ProdID
3112341234JohnDoe10AAA
411234 JohnDoe3BBB
5256785678AliceSmith5AAA


兩個額外的資料行都存在: #id 資料行使資料列與 <customer>] 節點和 #agg 資料行,表示可視為 FillDown 」。與 #agg,在它之上的層級中的第一個節點值可列出一次,且然後省略其餘的資料列。

同時也請注意 <Amt>的資料行之前 <ProdID>的資料行,即使它 <ProdID>後出現在實際的 XML。flattener 載入元件依字母順序從左到右]、 [不以它們出現在原始的 XML 文件中的自然順序。

樣式表

使用樣式表,可以在 Excel 中開啟 XML 檔案提供顯著的優點。利用樣式表可以更好控制如何將資料放在儲存格,並甚至提供一些格式的儲存格。當您開啟 XML 檔案 Excel,並在 XML 檔案包含一或多個 XML 樣式表 處理指示,Excel 會提示您選取您想要用於轉換樣式的表。

再一次考慮客戶 XML 圖 5] 所示。如果您加入客戶 XML 處理指示 (< ?? XML 樣式表類型 ="文字/xsl"href="Customer.xsl"? >),您可以控制資料出現在工作表中的哪些資料行,並套用自訂的格式設定。下列是可用於轉型為客戶 XML 範例的樣式表範例。

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/">
   <HTML>
     <HEAD>
       <STYLE>   
         .HDR { background-color:bisque;font-weight:bold }
         .CustomerRow { border-top:thin solid black }
       </STYLE>
     </HEAD>
  
     <BODY>
       <TABLE>
         <COLGROUP WIDTH="100" ALIGN="CENTER"></COLGROUP>
         <COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
         <COLGROUP SPAN="2" WIDTH="80" ALIGN="CENTER"></COLGROUP>
         <TD CLASS="HDR">Customer ID</TD>
         <TD CLASS="HDR">Name</TD>
         <TD CLASS="HDR">Product ID</TD>
         <TD CLASS="HDR">Amount</TD>
         <xsl:for-each select="Customers/Customer">
           <TR>
             <TD CLASS = "CustomerRow">
               <xsl:value-of select="CustomerID"/>
             </TD>
             <TD CLASS = "CustomerRow">
               <xsl:value-of select="FirstName"/> <xsl:value-of select="LastName"/>
             </TD>
             <TD CLASS = "CustomerRow">
               <xsl:value-of select="./Orders/Order/@ProdID"/>
             </TD>
             <TD CLASS = "CustomerRow">
               <xsl:value-of select="./Orders/Order/@Amt"/>
             </TD>
           </TR>
           <xsl:for-each select="./Orders/Order">
             <xsl:if test="position() > 1">
               <TR>
                 <TD> </TD><TD> </TD>
                 <TD><xsl:value-of select="@ProdID"/></TD>
                 <TD><xsl:value-of select="@Amt"/></TD>
               </TR>
             </xsl:if>
           </xsl:for-each>
         </xsl:for-each>
       <TR><TD CLASS="CustomerRow" COLSPAN="4"> </TD></TR>
       </TABLE>
     </BODY>
   </HTML>
 </xsl:template>
</xsl:stylesheet>
[圖 6-客戶 XML 樣式表 (Customer.xsl)
樣式表會將 XML 轉換成有效的 HTML (其 Excel 可以轉譯成原生格式)。當您套用此樣式表具有開啟客戶 XML 時,Excel 會顯示為四欄表格與標頭 (客戶編號、 名稱、 產品 ID 和數量) 的資料。儲存格格式設定,例如字型屬性、 儲存格背景色彩和框線也會出現在資料表中。

試試看吧出: 複製和貼上 [圖 5] 中 XML 到任何文字編輯器,並儲存它作為 Customer.xml。然後在 [圖 6 中複製 XML 樣式表,並將它存成 Customer.xsl 在 Customer.xml 與相同的資料夾中。啟動 Excel 2002,然後使用和不使用樣式表套用至樣式表可讓的差異,請參閱開啟檔案。

開啟您的 XML 檔案的錯誤疑難排解

如果您嘗試開啟不是語式正確的 XML 檔案時,您會收到警示或一個 「 指令碼剖析錯誤 」。警示現時它提供為何無法開啟 XML 的描述。警示描述也會造成轉譯失敗的節點上提供詳細資料。在裡面有是剖析錯誤某些情況下可能會收到列出的錯誤,而非警示訊息的對話方塊,指令碼剖析錯誤記錄到檔案,名為 Temp 資料夾的 XMLErr.log]。如果要快速檢查 XMLErr.log 內容,請依照下列步驟執行:
  1. 在命令提示字元輸入 cd %temp%,然後按 Enter 鍵。目前的資料夾變更為 Temp 資料夾。
  2. 在命令提示字元下輸入 型別 xmlerr.log,然後按 Enter 鍵以顯示記錄檔內容。
當您開啟 XML 檔案時,可能會遇到的另一個問題是 「 文字匯入精靈 」 便會出現。XML 檔案是只是文字化方式都非常特定的檔案。Excel 無法辨識您所開啟的檔案是 XML,而不是純文字,XML 檔案中的第一個項目必須是包含在最小值、 保留的名稱 的 XML 和版本號碼的 XML 宣告。XML 也必須包含至少一個項目 (根項目):
<?xml version="1.0"?>
<MyXML>
</MyXML>
				

XML 試算表 (XMLSS) 格式

Excel 可以將活頁簿存成 XML。當您將活頁簿儲存為 XML 時,Excel 便會將活頁簿存成 XML 試算表 (XMLSS) 格式。XMLSS 描述由保存儲存格資料和公式、 儲存格格式、 工作表設定和活頁簿設定活頁簿的內容。不過,某些 Excel 功能無法保存在 XML 中。這些包括:
  • 圖表
  • OLE 物件
  • 繪製形狀或快取圖案
  • VBA 專案
  • 群組及大綱
XMLSS 是通用於 Excel 2002 和 Office XP 試算表] 元件,因此兩者之間,都可以共用檔案中 XMLSS 的格式。您也可以建立您自己的樣式表 XMLSS 檔案轉換成另一種格式的資料,以便與任何數目的應用程式共用的。

將 XML 整合在 Excel 方案中

使用 XML 資料會提供開發人員許多 opportunites Excel 2002 的解決方案。

比方說您可以建立 multisheet 活頁簿中 XMLSS 在執行階段沒有自動化 Excel (這需要載入 Excel 可執行檔)。因為 Excel 出程序自動化伺服器 Excel 物件模型的呼叫可以是在效能方面的代價很高。您可以建立 XMLSS 完全同處理序使用只有 Microsoft XML 剖析器 (MSXML) 和 XML 樣式表。或者若要建置試算表並擷取為試算表 XMLSS 使用 Office XP 試算表元件 (在處理序)。不論是哪一種情況產生 XMLSS 直接在 Excel 中以開啟一個原生 (Native) 格式。藉由串流處理來使用 Excel 的多用途網際網路郵件延伸 (MIME) 的內容類型的用戶端瀏覽器 XMLSS,Web 應用程式 (例如使用動態伺服器網頁 (ASP) 可以建立複雜的活頁簿,而不需在伺服器上執行 Excel 的額外負荷。範例中示範可能的程式碼會使用 XMLSS 產生的請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件:

288130? (http://support.microsoft.com/kb/288130/ ) 如何使用 ASP 來建置試算表 XML 供用戶端顯示
285891? (http://support.microsoft.com/kb/285891/ ) 如何使用 Visual Basic 或 ASP 建立 Excel 2002 及 Excel 2003 的 XML 試算表
另一個潛在使用 XML Excel 方案中的是可輕易地共用與其他應用程式以格式的儲存格範圍從擷取資料。XMLSS 可從工作表上的儲存格擷取由呼叫 Value 屬性的 Range 物件,與 xlRangeValueXMLSpreadsheet 參數。您可以使用樣式表來轉換至其他應用程式可以使用任何 XML XMLSS。一個可能使用這是轉換至可以張貼並處理的 Web 應用程式的自訂 XML XMLSS。此項技術的範例請參閱下列文件 「 Microsoft 知識庫 」 中:

278976? (http://support.microsoft.com/kb/278976/ ) 如何使用 XSL 轉換為伺服器端使用 Excel XML 試算表

?考

如需詳細資訊請參閱下列網站:
全球資訊網協會 (W3C)
http://www.w3.org (http://www.w3.org)
XSLT 開發人員手冊 》
http://msdn2.microsoft.com/en-us/library/ms759204.aspx (http://msdn2.microsoft.com/en-us/library/ms759204.aspx)
XML 概觀
http://msdn2.microsoft.com/en-us/library/aa153035.aspx (http://msdn2.microsoft.com/en-us/library/aa153035.aspx)
XML 開發人員中心
http://msdn2.microsoft.com/en-us/xml/default.aspx (http://msdn2.microsoft.com/en-us/xml/default.aspx)

這篇文章中的資訊適用於:
  • Microsoft Excel 2002 Standard Edition
關鍵字:?
kbmt kbinfo KB288215 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:288215? (http://support.microsoft.com/kb/288215/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。