Cara menggunakan XSL untuk mengubah Excel XML Spreadsheet untuk sisi Server digunakan

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 278976 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

RINGKASAN

Excel 2002 memperkenalkan XML fungsi baru yang memungkinkan pengembang untuk mengekstrak diformat data dari lembar kerja dalam format XML Spreadsheet (XMLSS). The Nilai properti Kisaran objek dapat kembali sel format dan isi dalam XMLSS. XMLSS well-formed XML yang dapat dimuat oleh Microsoft Parser XML untuk manipulasi pada saat runtime. Salah satu penggunaan potensi fitur ini adalah untuk mengirim data XML untuk aplikasi server untuk diproses. Artikel ini menggambarkan salah satu contoh, di mana buku kerja Excel digunakan sebagai antarmuka untuk Active Server Pages (ASP) proses script yang XML data yang diambil dari berbagai di buku kerja.

Artikel ini akan memandu Anda melalui penciptaan buku kerja Excel, ASP script, dan stylesheet bahwa semua bekerja bersama sebagai perintah sistem pengolahan. Seluruh langkah-langkah, penjelasan dari masing-masing komponen dan bagaimana itu memberikan kontribusi untuk solusi keseluruhan diberikan. Sampel yang dijelaskan dalam artikel ini juga tersedia untuk di-download; untuk download petunjuk, lihat bagian "Download" di akhir artikel ini.

INFORMASI LEBIH LANJUT

Dalam contoh ini, beberapa komponen bekerja sama untuk berfungsi sebagai prosesor urutan:
  • ASP Script. Komponen sisi server adalah ASP script yang mengambil permintaan klien untuk perintah baru. Script mengharapkan permintaan untuk berada dalam format XML tertentu. Script mengambil informasi dari XML yang menerima dan menambahkan Orde baru untuk Northwind sampel database dengan menggunakan objek Data ActiveX (ADO).
  • Excel Workbook. Komponen sisi klien adalah buku kerja Excel yang berisi lembar kerja untuk memasukkan pesanan dan makro yang berinteraksi dengan ASP script untuk memproses pengguna Orde baru.
  • XSL Stylesheet. Stylesheet berubah XMLSS Excel untuk format XML custom mengharuskan ASP script. Excel makro memuat stylesheet dan mengubah XMLSS ke XML kustom untuk posting data ASP script di Web server.

Langkah 1: Membuat pemrosesan ASP Order Script

Membuat folder baru bernama OrderProc di folder akar virtual server Web Anda (folder akar default adalah C:\Inetpub\Wwwroot). Dalam OrderProc folder, membuat file baru bernama OrderEntry.asp dengan script di bawah ini. Script menggunakan sampel database Northwind Access; Anda mungkin perlu untuk mengubah jalan untuk Northwind.mdb dalam rangkaian sambungan (sConn) untuk mencocokkan penginstalan Office Anda.
<%@ 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
 
%> 
				
Untuk berhasil memproses permintaan pesanan, script ASP ini mengharapkan data XML terstruktur sebagai berikut:

<?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>
					
XML ini menunjuk pesanan pelanggan dengan ID dari "Kiri BOTTM". Urutan berisi dua item: 11 unit produk dengan ID dari 4, dan 2 unit produk dengan ID dari 18.

ASP script melakukan beberapa penanganan kesalahan untuk memastikan bahwa klien telah menyediakan informasi permintaan yang sah. Klien harus memberikan ID pelanggan dan setidaknya satu barang; Jika kriteria tersebut tidak terpenuhi, ASP script tidak memproses pesanan dan kembali kesalahan.

ASP script kembali XML data untuk klien yang telah membuat permintaan pesanan. XML ini menunjukkan keberhasilan atau kegagalan pemrosesan order dan juga menyediakan nomor urut sukses:

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

Langkah 2: Buat buku kerja antarmuka untuk urutan entri

  1. Di Excel, mulai buku kerja baru.
  2. Masukkan label di sel A1 dan A3, B3 dan C3 sebagai berikut:
    A1:   Customer ID    B1:                C1:
    A2:                  B2:                C2:
    A3:   Product ID     B3:   Quantity     C3:   Price
    					
  3. Pilih sel-sel A1:B1. Pada Masukkan menu, titik Nama kemudian klik Buat. Dalam Buat nama kotak dialog, pilih Kolom kiri dan klik Oke. Ini menciptakan nama ditetapkan Customer_ID untuk sel B1.
  4. Pilih sel-sel A3:C8. Pada Masukkan menu, titik Nama kemudian klik Buat. Dalam Buat nama kotak dialog, pilih Baris atas dan klik Oke. Ini menciptakan nama ditetapkan Product_ID, Kuantitas dan Harga untuk sel-sel A4:A8, B4:B8, dan C4:C8 yang masing-masing.
  5. Tekan ALT+F11 untuk memulai Editor Visual Basic.
  6. Di Editor Visual Basic, pada Masukkan menu, klik Modul. Tambahkan makro berikut untuk modul kode:
    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
    					
    CATATAN: Perubahan YourWebServer pada sFolder yang konstan untuk nama server Web Anda.

  7. Tutup Editor Visual Basic dan kembali ke Excel.
  8. Simpan buku kerja dalam folder OrdrProc Anda sebelumnya dibuat sebagai Invoice1.xls.
"Pesanan" adalah pada dasarnya sel-sel A1:C8. Makro mengambil XMLSS untuk formulir pemesanan dan beban ke baru DOMDocument objek. Kemudian beban stylesheet Extensible Stylesheet Language (XSL) ke lain DOMDocument dan mengubah XMLSS ke dalam struktur XML yang ASP dapat menafsirkan sebagai Orde baru. Menggunakan makro XMLHTTP objek untuk posting untuk XML ASP script di Web server. ASP script memproses pesanan dan kemudian kembali lagi XML untuk makro untuk informasi status pesanan.

CATATAN: Sebagai pilihan desain, tugas untuk mengubah XMLSS untuk kustom Order XML diberikan kepada kode sisi klien makro. Anda juga dapat mengirim XMLSS ASP script dan membiarkan ASP melakukan transformasi untuk Anda.

Langkah 3: Membuat Stylesheet

Dalam OrdrProc folder, membuat file baru yang bernama OrderEntry.xsl dan paste kode XSL berikut:
<?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>
				
XSL mengubah XMLSS untuk kustom Order XML (diilustrasikan pada langkah 1) sebagai berikut:
  • XSL menempatkan ID pelanggan oleh melintasi hirarki simpul sampai bertemu <cell>node yang berisi <namedcell>dan <data>anak node. Memeriksa yang <namedcell>memiliki atribut ss:Name sama dengan 'Customer_ID' dan bahwa <data>telah ss:Type atribut yang tidak sama dengan 'Kesalahan'.<b00> </b00> </data> </namedcell> </data> </namedcell> </cell>
  • Untuk mencari item untuk urutan, XSL menemukan semua <row>node dengan <cell>node yang berisi <namedcell>node anak dengan atribut ss:Name 'Product_ID' dan <data>node anak dengan atribut ss:Type yang tidak 'Kesalahan'.</data> </namedcell> </cell> </row>
  • Untuk masing-masing <row>bahwa XSL menentukan adalah item pesanan, XSL menggunakan template untuk mencocokkan <namedcell>node yang memiliki atribut ss:Name 'Product_ID', 'Kuantitas' dan 'Harga'.</namedcell> </row>

Langkah 4: Menjalankan kode contoh untuk memproses pesanan baru

  1. Kembali ke Invoice1.xls di Excel.
  2. Untuk mensimulasikan urutan catatan, memperbarui Sheet1 dengan pelanggan dan informasi produk seperti yang ditunjukkan di bawah ini:
    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
    					
    CATATAN: Untuk contoh ini, Anda harus memasukkan berlaku pelanggan dan produk ID untuk ASP script untuk berhasil memproses pesanan.

  3. Pada Alat menu, titik Makro dan klik Makro. Pilih ProcessOrder makro dalam daftar dan klik Menjalankan.
  4. Jika ASP script berhasil memproses pesanan, Anda menerima pesan dengan urutan nomor baru. Mulai Microsoft Access dan membuka Northwind sampel database. Anda akan melihat entri baru dalam tabel pesanan dengan urutan ID kembali dari ASP. Anda juga melihat dua entri baru dalam tabel rincian pesanan untuk pesanan ID yang sama. Berhenti akses dan kembali ke Invoice1.xls di Excel.
  5. Jelas ID pelanggan dalam sel B1 dan menjalankan makro lagi. Kali ini, server tidak mampu memproses pesanan dan itu kembali kesalahan yang menunjukkan bahwa tidak ada ID pelanggan telah disediakan.

Unduh

ExcelXML.exe berisi sampel yang dijelaskan dalam artikel ini serta versi yang disempurnakan dari Invoice1.xls. Invoice2.xls menggunakan sama ASP script dan XSL stylesheet sebagai Invoice1.xls. Namun, Invoice2.xls menunjukkan fitur Excel tambahan, seperti lembar kerja perlindungan, validasi data dan rumus VLOOKUP, yang dapat Anda gunakan untuk memberikan lebih user-friendly formulir pemesanan.

Berkas berikut ini tersedia untuk diunduh dari Pusat Unduhan Microsoft:
Excelxml.exe
Tanggal rilis: 3 April 2001

Untuk informasi lebih lanjut tentang cara men-download berkas Dukungan Microsoft, klik nomor artikel di bawah ini untuk melihat artikel pada Basis Pengetahuan Microsoft:
119591 Cara mendapatkan berkas Dukungan Microsoft dari Layanan Online
Microsoft telah memindai berkas ini dari virus. Microsoft menggunakan perangkat lunak pendeteksi virus terbaru yang tersedia pada tanggal saat berkas dikirimkan. Berkas tersebut disimpan di server yang aman, yang membantu mencegah pengubahan yang tidak sah terhadap berkas.

REFERENSI

Untuk informasi tambahan tentang cara menggunakan XML dan ASP untuk membangun solusi server-side, melihat situs-situs Web Microsoft Developer Network (MSDN) berikut:
Pengenalan XML
http://www.Microsoft.com/Learning/en/US/syllabi/2500AFinal.mspx

XML Tutorial
http://MSDN.Microsoft.com/en-us/library/ms950712.aspx

XSL pengembang panduan
http://MSDN.Microsoft.com/en-us/library/ms862738.aspx

Mengirim XML antara klien dan Server
http://MSDN.Microsoft.com/en-us/library/ms763733.aspx

Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
288215 INFO: Excel 2002 dan XML
285891 Cara menggunakan Visual Basic atau ASP untuk membuat XML Spreadsheet Excel 2002
288130 Cara menggunakan ASP untuk membangun Spreadsheet XML untuk klien-sisi layar
(c) Microsoft Corporation 2001, All Rights Reserved. Kontribusi oleh Lori B. Turner, Microsoft Corporation.

Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Properti

ID Artikel: 278976 - Kajian Terakhir: 23 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Excel 2002 Standard Edition
Kata kunci: 
kbdownload kbfile kbhowto kbmt KB278976 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:278976

Berikan Masukan

 

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