Transformace tabulky Excel XML pro použití na straně serveru použití XSL

Překlady článku Překlady článku
ID článku: 278976 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Excel 2002 zavádí novou funkci XML umožňuje vývojářům extrahovat formátovaná data z listů ve formátu Tabulka XML (XMLSS). Vlastnost Hodnota objektu Range se můžete vrátit formátování buněk a obsah v XMLSS. XMLSS je správný formát XML, který lze načíst Microsoft XML Parser pro manipulaci s běhu. Jedno potenciální použití této funkce je zaúčtovat k serverové aplikaci pro zpracování dat XML. Tento článek ukazuje jeden takový příklad, ve kterých je sešit aplikace Excel použit jako rozhraní pro skript Active Server Pages (ASP), který zpracovává data XML je extrahován z oblast v sešitu.

Tento článek vás provede vytvoření sešitu aplikace Excel, skript ASP a šablony stylů, že všechny pracovat společně jako systém zpracování objednávky. V celém kroky jsou udělena vysvětlení jednotlivých součástí a přispívá k celé řešení. Ukázkové popsané v tomto článku je také k dispozici ke stažení; pokyny ke stažení, naleznete na konci tohoto článku v části "Download".

Další informace

V tomto vzorku několik různých součástí spolupracují funkci jako procesor pořadí:
  • Skriptů ASP. Součást na straně serveru je skript ASP, které trvá požadavky klientů pro nové objednávky. Skript očekává požadavky být v určitém formátu XML. Skript trvá informace ze souboru XML, obdrží a přidá novou objednávku k ukázkové databázi Northwind pomocí ActiveX Data Objects (ADO).
  • Sešit Excel. Součást na straně klienta je sešit aplikace Excel obsahující listu položka objednávky a makro spolupracuje s skriptu ASP zpracovat uživatele nové objednávky.
  • XSL Stylesheet. Šablony stylů transformace XMLSS Excel vlastního formátu XML, který vyžaduje skriptu ASP. Makra Excel načte šablony stylů a transformace XMLSS k vlastní XML před k zaúčtování data do skriptu ASP na webovém serveru.

Krok 1: Vytvoření skriptu ASP pořadí zpracování

Vytvořit novou složku s názvem OrderProc virtuální kořenové složce serveru (C:\Inetpub\Wwwroot je výchozí kořenovou složku). Ve složce OrderProc vytvořit nový soubor s názvem OrderEntry.asp s skript níže. Skript používá ukázkové databáze Northwind Access; můžete potřebovat změnit cestu k Northwind.mdb v řetězci připojení (sConn) odpovídat instalace sady Office.
<%@ Language="vbscript" CodePage="65001"%>

<%
    Response.Buffer = True
    Response.ContentType = "text/xml"
  
    Dim oDataXML                    'Custom Data XML passed in by caller.
    Dim oConn                       'ADO Connection to Northwind database.
    Dim oOrdersRS, oDetailsRS       'ADO Recordsets for the Orders table and Order Details Table.
    Dim oItems                      'Collection of nodes meeting the match. "Order/Items/Item"
    Dim oItem                       'Single node in oItems.
    Dim sCustID                     'Customer ID for the new order.
    Dim sOrderID                    'Order ID of the newly created record. in Orders table
    Dim sStatus                     'Status of order processing.
    Dim bContinue                   'Flag that indicates whether or not to continue processing the order.

    Const sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\program files\microsoft office\office10\samples\northwind.mdb"
    On Error Resume Next

    'Load the XML passed into the request.
    Set oDataXML = Server.CreateObject("Microsoft.XMLDOM")
    oDataXML.Load Request
    bContinue = True

    'Obtain the Customer ID. If no customer id is provided, report an error.
    sCustID = oDataXML.selectSingleNode("Order/CustomerID").Text
    If sCustID="" Then
       sStatus = "There is no customer specified for the order"
       bContinue = False
    End If

    'Obtain collection of "items" for this order. If the item count = 0, report an error.
    If bContinue Then
       Set oItems = oDataXML.SelectNodes("Order/Items/Item")
       if oItems.length = 0 Then
          sStatus = "There are no items to process for this order"
          bContinue = False
       End If
    End If

    'Open a connection to the Northwind database.
    If bContinue Then
       Set oConn = CreateObject("ADODB.Connection")
       oConn.Open sConn
       if err.Number <> 0 Then
          sStatus = err.Description
          bContinue = False
       end if

    End If

    'Open the Orders and Order Details tables and add the new records.
    If bContinue Then

       Set oOrdersRS = CreateObject("ADODB.Recordset")
       oOrdersRS.Open "SELECT * FROM Orders", oConn, 2, 3
       Set oDetailsRS = CreateObject("ADODB.Recordset")
       oDetailsRS.Open "SELECT * FROM [Order Details]", oConn, 2, 3

       'Add a new entry in the Orders table.
       oOrdersRS.AddNew
       oOrdersRS.Fields("CustomerID").Value = sCustID
       oOrdersRS.Fields("OrderDate").Value = CDate(Now)
       oOrdersRS.Update
       sOrderID = oOrdersRS.Fields("OrderID").Value
        
       'And a new record for each item in the order XML to the Order Details table.
       If err.number = 0 Then
          For Each oItem In oItems
              oDetailsRS.AddNew
              oDetailsRS.Fields("OrderID").Value = sOrderID
              oDetailsRS.Fields("ProductID").Value = oItem.childnodes(0).Text
              oDetailsRS.Fields("Quantity").Value = CLng(oItem.childnodes(1).Text)
              oDetailsRS.Fields("UnitPrice").Value = CLng(oItem.childnodes(2).Text)
              oDetailsRS.Fields("Discount").Value = 0
              oDetailsRS.Update
          Next
       End If

       if err.Number <> 0 Then
          sStatus = err.Description
       else
          sStatus = "Success"
       end if

       'Close the recordsets and connection.
       oDetailsRS.Close
       oOrdersRS.Close
       oConn.Close

    End If
  
    'Return the resulting XML (the Order status).
    Dim sResult
    sResult = "<?xml version=""1.0""?>"
    sResult = sResult & "<OrderProcessed>" 
    sResult = sResult & "<Status>" & sStatus & "</Status>"
    sResult = sResult & "<OrderID>" & sOrderID & "</OrderID>"
    sResult = sResult & "</OrderProcessed>"
    Response.Write sResult
    Response.End
 
%> 
				
Úspěšně zpracovat požadavek pořadí tento skript ASP očekává způsobem strukturovaných dat XML:

<?xml version="1.0"?>
<Order>
    <CustomerID>BOTTM</CustomerID>
    <Items>
        <Item>
            <ProductID>4</ProductID>
            <Quantity>11</Quantity>
            <Price>20.25</Price>
        </Item>
        <Item>
            <ProductID>18</ProductID>
            <Quantity>2</Quantity>
            <Price>63.7</Price>
        </Item>
    </Items>
</Order>
					
Tento XML označí objednávky pro zákazníka s ID "BOTTM". Pořadí obsahuje dvě položky: 11 jednotky produktu s ID 4 a 2 jednotky produktu s ID 18.

Skript ASP provádí některé ošetření chyb zajistit, že klienti mají součástí jej pořadí platné informace. Klienti musí poskytnout ID zákazníka a alespoň jednu položku, pokud nejsou splněna tato kritéria, skript ASP nezpracovává pořadí a vrátí chybu.

Skript ASP vrací XML data klientům provedených požadavek pořadí. Tento XML označuje úspěch nebo neúspěch zpracování objednávek a také obsahuje číslo objednávky na úspěchu:

<?xml version="1.0"?>
<OrderProcessed>
    <Status>Success</Status>
    <OrderID>11078</OrderID>
</OrderProcessed>
					

Krok 2: Vytvoření rozhraní sešitu pro zadávání objednávek

  1. V aplikaci Excel spustit nový sešit.
  2. Zadejte popisky v buňkách A1, A3, B3 a C3 následujícím způsobem:
    A1:   Customer ID    B1:                C1:
    A2:                  B2:                C2:
    A3:   Product ID     B3:   Quantity     C3:   Price
    					
  3. Vyberte buňky A1:B1. V nabídce Vložit přejděte na příkaz název a potom klepněte na tlačítko vytvořit. V dialogovém okně Vytvořit názvy vyberte Levý sloupec a klepněte na tlačítko OK. Vytvoří definovaný název Customer_ID buňky B1.
  4. Vyberte buňky A3:C8. V nabídce Vložit přejděte na příkaz název a potom klepněte na tlačítko vytvořit. V dialogovém okně Vytvořit názvy vyberte Horní řádek a klepněte na tlačítko OK. Definované názvy Product_IDmnožství a cena pro A4:A8 buněk a B4:B8 C4:C8 vytvoří respektive.
  5. Stisknutím kombinace kláves ALT+F11 spusťte aplikaci Visual Basic Editor.
  6. V programu Editor jazyka v nabídce Vložit klepněte na modul. Přidat následující makro modulu kódu:
    Sub ProcessOrder()
    
        Const sFolder = "http://YourWebServer/OrdrProc/"
    
        'Load a new DOMDocument based on the XMLSS of the range A1:C8.
        Dim oRangeXML
        Set oRangeXML = CreateObject("Microsoft.XMLDOM")
        oRangeXML.LoadXML Range("A1:C8").Value(xlRangeValueXMLSpreadsheet)
            
        'Transform the XMLSS to custom XML that the ASP can
        'interpret as a new "order".
        Dim oXSL, oOrderXML
        Set oXSL = CreateObject("Microsoft.XMLDOM")
        oXSL.Load ThisWorkbook.Path & "\OrderEntry.xsl"
        Set oOrderXML = CreateObject("Microsoft.XMLDOM")
        oRangeXML.transformNodeToObject oXSL, oOrderXML
        
        'Submit the XMLSS to the ASP page for processing.
        Set oXMLHTTP = CreateObject("Microsoft.XMLHTTP")
        oXMLHTTP.Open "Post", sFolder  & "/OrderEntry.asp", False
        oXMLHTTP.setRequestHeader "Content-Type", "text/xml; charset=""UTF-8"""
        oXMLHTTP.send oOrderXML
        
        'Retrieve the results of the processing by the ASP page.
        Dim oResult
        Set oResult = CreateObject("Microsoft.XMLDOM")
        oResult.Load oXMLHTTP.responseXML
    
        'Check the returned XML -- if the Status is "Success", fill in the
        'Order # and display a message. If the Status is not "Success",
        'report the error.
        Dim sStatus As String
        sStatus = oResult.selectsinglenode("OrderProcessed/Status").Text
        If sStatus = "Success" Then
            MsgBox "Thank you. Your order number is " & _
                oResult.selectsinglenode("OrderProcessed/OrderID").Text
        Else
            MsgBox sStatus
        End If
    
    End Sub
    					
    Poznámka: Změna YourWebServer v sFolder konstanta na název serveru.

  7. Zavřete Editor jazyka a vrátit do aplikace Excel.
  8. Uložte sešit ve složce OrdrProc dříve vytvořené jako Invoice1.xls.
Formulář"Objednávky" je v podstatě A1:C8 buněk. Makro XMLSS formulář objednávky načte a načte do nového objektu DOMDocument. Potom načte šablony stylů Extensible Stylesheet Language (XSL) do jiného DOMDocument a transformace XMLSS do struktury XML, která ASP lze interpretovat jako nové objednávky. Makro používá objekt XMLHTTP účtování objednávky XML ke skriptu ASP na webovém serveru. Skript ASP zpracuje pořadí a vrací další XML do makra informace o stavu objednávky.

Poznámka: jako návrh voleb je úkol transformace XMLSS k vlastní pořadí XML přidělen kód makra na straně klienta. Také můžete zaúčtovat XMLSS ke skriptu ASP a umožňují provedení transformace ASP.

Krok 3: Vytvoření Stylesheet

Ve složce OrdrProc vytvořit nový soubor s názvem OrderEntry.xsl a vložte následující kód XSL:
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

  <xsl:template match="/">
    <xsl:pi name="xml">version="1.0"</xsl:pi>

    <Order>
      <CustomerID><xsl:value-of select="Workbook/Worksheet/Table/Row/Cell[NamedCell[@ss:Name='Customer_ID'] $and$ Data[@ss:Type!='Error']]"/></CustomerID>
      <Items>
        <xsl:for-each select="Workbook/Worksheet/Table/Row[Cell[NamedCell[@ss:Name='Product_ID'] $and$ Data[@ss:Type!='Error']]]">
          <Item>
            <xsl:apply-templates/>
          </Item>
        </xsl:for-each>
      </Items>
    </Order>

  </xsl:template>

  <xsl:template match="Cell[NamedCell[@ss:Name='Product_ID']]">
    <ProductID><xsl:value-of select="Data"/></ProductID>
  </xsl:template>

  <xsl:template match="Cell[NamedCell[@ss:Name='Quantity']]">
    <Quantity><xsl:value-of select="Data"/></Quantity>
  </xsl:template>

  <xsl:template match="Cell[NamedCell[@ss:Name='Price']]">
    <Price><xsl:value-of select="Data"/></Price>
  </xsl:template>

</xsl:stylesheet>
				
transformace the XSL XMLSS k vlastní pořadí XML (znázorněno v kroku 1) způsobem:
  • XSL vyhledá ID zákazníka pomocí přecházení hierarchie uzlu, dokud nenarazí <cell>uzlu, který obsahuje <namedcell>a <data>podřízené uzly. Zkontroluje <namedcell>má atribut ss:Name rovno 'Customer_ID a <data>, že má atribut ss:Type, které se nerovná 'Error.
  • Vyhledejte položky pro objednávku XSL vyhledá všechny uzly <row>s uzlem <cell>obsahující <namedcell>podřízený uzel s atributem ss:Name 'Product_ID a podřízený uzel <data>ss:Type atributem, který není 'Error.
  • Každý <row>, určuje XSL je zboží pro objednávku, XSL používá šablony odpovídat <namedcell>uzly, které mají atribut ss:Name 'Product_ID', 'Množství' a 'cena.

Krok 4: Spustit ukázkový kód k zpracovat pořadí nové

  1. Vrátit Invoice1.xls v aplikaci Excel.
  2. Simulovat položka objednávky aktualizovat List1 s informacemi o zákazníkovi a produktu jak je ukázáno níže:
    A1:   Customer ID    B1:   BOTTM        C1:
    A2:                  B2:                C2:
    A3:   Product ID     B3:   Quantity     C3:   Price
    A4:   4              B4:   11           C4:   20.25
    A5:   18             B5:   2            C5:   63.70
    					
    Poznámka: pro tento ukázkový musíte zadat platný zákazníka a kód product ID pro skript ASP úspěšně zpracovat pořadí.

  3. V nabídce Nástroje přejděte na příkaz makro a klepněte na příkaz makra. Vyberte makro ProcessOrder v seznamu a klepněte na příkaz Spustit.
  4. Pokud skript ASP úspěšně zpracuje pořadí, obdržíte zprávu s nové číslo pořadí. Spusťte aplikaci Microsoft Access a otevřete ukázkovou databázi Northwind. Měli byste vidět nová položka v tabulce objednávky s kód vrátil z ASP. Také zobrazit dvě nové položky v tabulce Rozpis objednávek pro stejné ID objednávky. Ukončení aplikace Access a vraťte Invoice1.xls v aplikaci Excel.
  5. Zrušte ID zákazníka v buňce B1 a znovu spusťte makro. Tento čas je server schopen zpracovat pořadí a vrátí chybová oznamující poskytovány žádné ID zákazníka.

Stažení

ExcelXML.exe obsahuje ukázkové popsané v tomto článku, stejně jako Rozšířené verze Invoice1.xls. Invoice2.xls používá stejné skriptu ASP a ŠABLONU stylů XSL jako Invoice1.xls. Invoice2.xls však znázorňuje další funkce aplikace Excel, například ochranu listu, ověření dat a vzorců SVYHLEDAT používajících poskytnout srozumitelnější formulář objednávky.

Na webu služby Stažení softwaru je k dispozici ke stažení následující soubor:
Excelxml.exe
Datum vydání: Duben 3, 2001

Další informace o tom, jak stahovat soubory podpory společnosti Microsoft, naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
119591Jak získat soubory podpory společnosti Microsoft ze serverů služeb online
Microsoft tento soubor zkontroloval na výskyt virů. Společnost Microsoft použila aktuální antivirový software, který byl k dispozici v den uveřejnění tohoto článku. Soubor je uložený na zabezpečených serverech neumožňujících neoprávněné změny souborů.

Odkazy

Další informace o použití XML a ASP k vytvoření řešení na straně serveru naleznete na následujících webech Microsoft Developer Network (MSDN):
Úvod do XML
http://www.microsoft.com/learning/en/us/syllabi/2500AFinal.mspx

Kurz XML
http://msdn.microsoft.com/en-us/library/ms950712.aspx

Průvodci výrobce XSL
http://msdn.microsoft.com/en-us/library/ms862738.aspx

Odesílání XML mezi klienta a serveru
http://msdn.microsoft.com/en-us/library/ms763733.aspx

Další informace naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
288215INFORMACE: Excel 2002 a XML
285891Použití jazyka nebo ASP k vytvoření tabulky XML pro aplikaci Excel 2002
288130Použití skriptů ASP k vytvoření sešitu XML pro zobrazení na straně klienta (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
(c) Microsoft Corporation 2001 všechny rezervované práv. Příspěvky Lenka B. Turner, Microsoft Corporation.

Vlastnosti

ID článku: 278976 - Poslední aktualizace: 29. ledna 2007 - Revize: 4.8
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Excel 2002 Standard Edition
Klíčová slova: 
kbmt kbdownload kbdownload kbfile kbhowto KB278976 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:278976

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com