Excel'in XML elektronik tablosu, sunucu tarafı kullanım için dönüştürme için XSL nasıl kullanılır

Makale çevirileri Makale çevirileri
Makale numarası: 278976 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Özet

Excel 2002 çalışma sayfası XML elektronik tablosu (XMLSS) biçimde biçimlendirilmiş bir veri ayıklamak, geliştiriciler sağlayan yeni XML işlevselliği sunar. Bir <a0>Aralık</a0> nesnesinin Value özelliği, hücre biçimlendirme ve içeriği içinde XMLSS dönebilirsiniz. XMLSS iyi biçimlendirilmiş XML, çalışma zamanında düzenleme için Microsoft XML Parser tarafından yüklenebilir. Bir olası bu özelliğin bir sunucu uygulamasına, işlem için XML verilerini deftere nakletmek için kullanılır. Bu makalede, bir Excel çalışma kitabı bir arabirim bir çalışma kitabındaki bir aralıktan ayıklandıktan XML verilerini işleyen bir Active Server Pages (ASP) komut dosyası için kullanılan bir tür örnek gösterilmiştir.

Bu makalede, bir Excel çalışma kitabı, ASP komut dosyası ve tüm işleme sistemi siparişi birlikte çalışmasını sağlayacak bir stil oluşturma kılavuzluk eder. Adımlar, her bileşenin açıklamaları ve nasıl tam çözümü yaptığı katkının verilir. Bu makalede açıklanan örnek de kullanılabilir karşıdan yükleme; karşıdan yükleme yönergeleri için bu makalenin sonundaki "Yükleme" bölümüne bakın.

Daha fazla bilgi

Bu örnekte, birçok farklı bileşen bir sipariş işlemcisi çalışması için birlikte çalışır:
  • ASP kod. Yeni istemci istekleri götüren bir ASP komut dosyası sunucu tarafı bileşenidir. Komut dosyası istekleri, belirli bir XML biçiminde olmasını bekler. Komut dosyası alır ve ActiveX Data Objects (ADO) kullanarak, yeni bir sipariş Northwind örnek veritabanına ekler, XML bilgileri alır.
  • Excel çalışma kitabı. Istemci tarafı sipariş girişi için bir çalışma sayfası içeren bir Excel çalışma kitabı ve bir makro kullanıcının yeni emrini işlemek için ASP komut dosyası ile etkileşimde bileşendir.
  • XSL stil sayfası. Bir stil sayfasında Excel'in XMLSS ASP komut dosyası gerektiren özel bir XML biçimine dönüştürür. Excel makro sayfas?n?n yükler ve ASP komut dosyası verilerin Web sunucusunda deftere nakletmeden özel bir XML XMLSS dönüştürür.

Adım 1: ASP sırası işleme komut dosyasını oluşturun...

Sanal kök klasöründe (varsayılan kök c:\ınetpub\wwwroot klasördür) Web sunucunuzun OrderProc adlı yeni bir klasör oluşturun. OrderProc klasöründe, aşağıdaki komut dosyası ile OrderEntry.asp adlı yeni bir dosya oluşturun. Örnek Northwind Access veritabanını komut dosyası kullanır; bu, Office kurulumunuzun eşleştirmek için bağlantı dizesindeki (sConn) Northwind.mdb yolunu değiştirmek gerekebilir.
<%@ 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
 
%> 
				
Başarıyla bir siparişi isteği işlemek için <a0></a0>, bu ASP komut aşağıdaki gibi yapılandırılmış XML veri bekler:

<?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>
					
Bu XML sipariş için müşteriye "BOTTM" KIMLIĞINI belirtir. Sıra iki öğe içerir: 11 sayısı ürün kimliği 4 ve 2 birim ürünün, 18 kodlu.

ASP komut istemcilerinin, geçerli sipariş bilgileri sağlamış olmasını sağlamak için bazı hata denetimi yapar. Istemciler, bir müşteri KIMLIĞI ve en az bir öğe sağlamanız gerekir; bu ölçütleri karşılanıyorsa, ASP komut sırası işlemez ve hata verir.

ASP komut dosyası, XML verilerini sipariş isteğinden yaptınız istemcilerine döndürür. Bu XML başarısını veya başarısızlığını sipariş işleminin gösterir ve ayrıca sipariş numarası, başarı sağlar:

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

2. Adım: sipariş girişi için çalışma kitabını arabirimi oluştur.

  1. Excel'de, yeni bir çalışma kitabı başlatın.
  2. Etiketleri A1, A3, B3 ve C3 hücrelerinde aşağıdaki gibi girin:
    A1:   Customer ID    B1:                C1:
    A2:                  B2:                C2:
    A3:   Product ID     B3:   Quantity     C3:   Price
    					
  3. Hücreleri A1:B1 seçin. Ekle menüsünden ad ' ın üzerine gelin ve sonra Oluştur ' u tıklatın. Adları oluştur iletişim kutusunda, Sol sütun seçin ve Tamam ' ı tıklatın. Bu, B1 hücresi için tanımlı ad Customer_ID oluşturur.
  4. Hücreleri A3:C8 seçin. Ekle menüsünden ad ' ın üzerine gelin ve sonra Oluştur ' u tıklatın. Adları oluştur iletişim kutusunda, Üst satır seçin ve Tamam ' ı tıklatın. Bu hücre A4:A8 B4:B8 ve C4:C8 için tanımlanmış adlar Product_ID, <a2>Miktar</a2> ve <a4>Fiyat sırasıyla oluşturur.
  5. Visual Basic Düzenleyicisi'ni başlatmak için ALT+F11 tuşlarına basın.
  6. Visual Basic Düzenleyicisi'nde, Ekle menüsünden modülü ' nü tıklatın. Aşağıdaki makro kodu modüle ekleyin:
    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
    					
    Not: Web sunucunuzun adı için sFolder sabitindeki YourWebServer Değiştir.

  7. Visual Basic Düzenleyicisi'ni kapatın ve Excel'e döndürün.
  8. Çalışma kitabını Invoice1.xls daha önce oluşturduğunuz OrdrProc klasörüne kaydedin.
"Sipariş" aslında hücreleri A1:C8 formdur. Makro için sipariş formu XMLSS alır ve onu yeni bir DOMDocument nesnesi yükler. Genişletilebilir Stil Sayfası Dili (XSL) stil başka bir DOMDocument yükler ve yeni bir sipariş ASP yorumlayabileceği bir XML yapısını XMLSS dönüştürür. Makro XMLHTTP nesnesi, ASP komut siparişe XML, Web sunucusu üzerinde deftere nakletmek için kullanır. ASP komut sırası işleme ve daha fazla XML, makro için sipariş durum bilgisi döndürür.

Not: Tasarım seçenek, istemci tarafı makro kodu için özel sipariş XML XMLSS dönüştürme görevini verilir. ASP komut dosyası XMLSS deftere nakledebilir ve ASP dönüşümün gerçekleştirdiğiniz olanak sağlar.

3. Adım: Stil Oluştur

OrdrProc klasöründe OrderEntry.xsl adlı yeni bir dosya oluşturun ve XSL aşağıdaki kodu yapıştırın:
<?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>
				
The XSL için özel sipariş (adım 1'de gösterilen) XML gibi XMLSS dönüştürür:
  • XSL düğüm sıradüzeni geçme <namedcell>içeren <cell>düğüm ve alt düğümlerin <data>ile karşılaşıncaya dek, Müşteri No bulur. Bu, <namedcell>'Customer_ID için' eşit ss:Name özniteliği varsa ve bu <data>'Error' eşit olmayan ss:Type öznitelik olduğunu denetler.
  • Sipariş için öğeleri bulmak için <a0></a0>, <namedcell>alt düğümüyle ss:Name özniteliği 'Product_ID' ve 'Error' olan öznitelik ss:Type <data>alt düğümüyle içeren tüm <row>düğümlerin <cell>düğümle XSL bulur.
  • Her <row>için XSL belirlediği bir öğedir ss:Name 'Product_ID', 'Miktar' ve 'Fiyat' özniteliği olan düğümlerin <namedcell>eşleştirmek için sipariş için XSL Şablon kullanır.

Adım 4: yeni bir sıra işlem için örnek kod Çalıştır

  1. Excel'deki Invoice1.xls dönün.
  2. Sipariş girişi benzetimini yapmak için <a0></a0>, Sayfa1 müşteri ve ürün bilgilerini aşağıda gösterildiği gibi güncelleştirme:
    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
    					
    Not: Bu örnek, başarıyla sıraya işlemek için geçerli müşteri ve ürün kimliği için ASP komut girmelisiniz.

  3. Araçlar menüsünden, makro ' nun üzerine gelin ve makrolar ' ı tıklatın. ProcessOrder makroyu listeden seçin ve sonra Çalıştır ' ı tıklatın.
  4. ASP komut sırası başarıyla işlerse, yeni sipariş numarası ile bir ileti alırsınız. Microsoft Access'i başlatın ve Northwind örnek veritabanını açın. ASP döndürülen sıra KIMLIĞINE sahip Siparişler tablosunda yeni bir girdi görmeniz gerekir. Aynı sipariş KIMLIğI için iki yeni Sipariş Ayrıntıları tablosu girdilerinde Ayrıca bakın Access'ten çıkmak ve Excel'deki Invoice1.xls geri dönün.
  5. Müşteri No B1 hücresindeki temizleyin ve makroyu yeniden çalıştırın. Bu sunucuda sipariş işleyemiyor ve müşteri KIMLIĞI yok sağlanan belirten bir hata döndürür.

Yükle

ExcelXML.exe Invoice1.xls gelişmiş bir sürümünü yanı sıra, bu makalede anlatılan örnek içerir. Invoice2.xls aynı ASP komut dosyası ve XSL stil sayfası Invoice1.xls kullanır. Ancak, Invoice2.xls ek Excel özellikleri, çalışma sayfası koruması, <a2>veri doğrulaması</a2> ve <a4>Sipariş formu daha kolay kullanabileceğiniz DÜŞEYARA formülleri gösterir.

Aşağıdaki dosya Microsoft Yükleme Merkezi'nden yüklenebilir:
Excelxml.exe
Yayım Tarihi: Nisan 3, 2001

Microsoft destek dosyalarını karşıdan yükleme konusunda ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
119591Microsoft Destek Dosyaları Çevrimiçi Hizmetler'den Nasıl Alınır
Microsoft bu dosyada virüs taraması yapmıştır. Microsoft, dosyanın kullanıma sunulduğu tarihteki en güncel virüs tarama yazılımını kullanmıştır. Dosya, üzerinde herhangi bir yetkisiz değişiklik yapılmasını engellemeye yardım eden geliştirilmiş güvenliğe sahip sunucularda depolanır.

Referanslar

Sunucu tarafı çözümleri oluşturmak için XML ve ASP kullanma hakkında ek bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitelerine bakın:
XML Giriº
http://www.microsoft.com/learning/en/us/syllabi/2500AFinal.mspx

XML Öğreticisi
http://msdn.microsoft.com/en-us/library/ms950712.aspx

XSL Geliştirici Kılavuzu
http://msdn.microsoft.com/en-us/library/ms862738.aspx

Istemciyle sunucu arasında XML gönderiliyor
http://msdn.microsoft.com/en-us/library/ms763733.aspx

Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
288215BILGI: Excel 2002 ve XML
285891Visual Basic'de veya ASP Excel 2002, XML elektronik tablo oluşturmak için nasıl kullanılır
288130İstemci tarafında görüntüleme için XML biçiminde elektronik tablo oluşturulurken ASP nasıl kullanılır
(c) Microsoft Corporation 2001, tüm hakları saklıdır. Katkıyı Gamze B Turner, Microsoft Corporation.

Özellikler

Makale numarası: 278976 - Last Review: 29 Ocak 2007 Pazartesi - Gözden geçirme: 4.8
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Excel 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbdownload kbdownload kbfile kbhowto KB278976 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:278976

Geri Bildirim Ver

 

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