Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Artikel ini selangkah demi selangkah menjelaskan cara untuk mengubah DataSet untuk Spreadsheet XML yang dapat diberikan dalam Excel. Excel
Spreadsheet XML format mendukung elemen tag dan atribut untuk Excel
fungsi seperti multi-sheet buku kerja, rumus, dan sel format.
Artikel ini mengasumsikan bahwa Anda sudah familiar dengan berikut
topik:
Sampel langkah demi langkah ini menggambarkan bagaimana sisi server dan
komponen sisi klien bekerja sama untuk memberikan dan menampilkan Excel Spreadsheet
XML.
Default.htm adalah bingkai yang memiliki dua bingkai. Bingkai header berisi
daftar urutan id dan bingkai utama menampilkan informasi permintaan setelah pesanan
ID dipilih dari daftar.
Header.htm berisi elemen HTML tag dan script untuk header
bingkai.
GetData.VB adalah sebuah handler HTTP yang melayani dua tujuan. Handler menambahkan
Daftar agar ID header frame, dan itu proses permintaan pesanan
informasi yang ditampilkan dalam bingkai utama. Ketika menerima HTTP handler
permintaan untuk informasi permintaan, menciptakan DataSet untuk perintah dan mengembalikan representasi XML yang DataSet untuk penelepon.
Transform.XSLT adalah XSLT file yang digunakan untuk mengubah DataSet XML untuk Excel Spreadsheet XML.
Contoh kode menggunakan urutan data di Microsoft SQL Server
Database contoh Northwind. Sampel mengasumsikan bahwa Anda akan membuat dan menguji
Aplikasi web di komputer lokal (http://localhost). Jika Anda tidak akan
menggunakan Web server pada komputer lokal, menggantikan localhost dalam URL sampel dengan nama
server Web Anda.
Menghasilkan DataSet
Dalam bagian ini, Anda membuat HTTP handler dan sisi klien
komponen yang diperlukan untuk mengambil informasi permintaan. The DataSet kembali ke bingkai utama sebagai polos XML; The DataSet tidak berubah.
Membuat proyek Web kosong yang bernama ExcelTransform. Untuk melakukan
ini, ikuti langkah berikut:
Pada Berkas menu dalam Visual Studio. NET, klik Baru, lalu klik Project.
Klik Proyek-proyek Visual Basic, lalu klik Proyek Web kosong template.
Nama proyek http://localhost/ExcelTransform, dan
kemudian klik Oke.
Menambahkan referensi ke proyek. Untuk melakukannya, ikuti
langkah-langkah:
Pada Project menu, klik Menambahkan referensi.
Dalam daftar komponen pada .NET tab, klik System.data.dll, lalu klik Pilih.
Ulangi langkah sebelumnya untuk System.dll, untuk System.web.dll, dan untuk System.xml.dll.
Klik Oke.
Pada Project menu, klik Menambahkan kelas, nama kelas GetData.VB, lalu klik Oke.
Ganti kode GetData.VB dengan berikut.
Catatan Anda harus mengubah ID pengguna <username>
dan password =<strong password=""> untuk nilai-nilai yang benar sebelum Anda menjalankan ini
kode. Pastikan bahwa ID pengguna memiliki izin yang sesuai untuk melakukan ini
operasi pada database.</strong> </username>
Imports System.Web
Imports System.Xml
Imports System.Xml.Xsl
Imports System.Data
Imports System.Data.SqlClient
Public Class GetData
Implements IHttpHandler
Private sConn As String = _
"User ID=<username>;Password=<strong password>;Initial Catalog=Northwind;Data Source=YourSQLServer;"
Public ReadOnly Property IsReusable() As Boolean _
Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
Public Sub ProcessRequest(ByVal context As HttpContext) _
Implements IHttpHandler.ProcessRequest
Dim conn As SqlConnection
Dim sOrderRequested As String
sOrderRequested = context.Request.Item("OrderID")
If Not (sOrderRequested > "") Then
'=== If no order is requested, assume that this is a request
'=== to fill the drop-down list in the Header.htm template
'=== with the list of OrderIDs.
'Get a DataSet for a list of OrderIDs.
Dim sSQL As String = "Select OrderID from Orders"
conn = New SqlConnection(sConn)
conn.Open()
Dim cmd As New SqlCommand(sSQL, conn)
Dim rdr As SqlDataReader = cmd.ExecuteReader
'Open the header template for the frameset and fill
'in the <option> child nodes for the drop-down lists.
Dim sHTML As String, sOrderID As String
Dim xmlDoc As New XmlDocument()
xmlDoc.Load(context.Server.MapPath("header.htm"))
Dim oElem As XmlElement = _
xmlDoc.DocumentElement.GetElementsByTagName("select").Item(0)
Dim oChild As XmlElement
Do While rdr.Read
sOrderID = rdr.GetInt32(0).ToString
oChild = xmlDoc.CreateElement("option")
oChild.SetAttribute("value", sOrderID)
oChild.InnerText = sOrderID
oElem.AppendChild(oChild)
Loop
rdr.Close()
conn.Close()
'Return the modified header template.
context.Response.Write(xmlDoc.InnerXml)
Else
'=== If an order is requested, create a DataSet for that
'=== order and return the results to the client browser.
'Build a DataSet for the order.
conn = New SqlConnection(sConn)
conn.Open()
Dim ds As DataSet = New DataSet("Order")
Dim CustDa As SqlDataAdapter = New SqlDataAdapter( _
"SELECT OrderID, CompanyName, Address, City, Region, PostalCode, Country, Freight " & _
"FROM Customers " & _
"INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID " & _
"WHERE (((Orders.OrderID)=" & sOrderRequested & "))", conn)
CustDa.Fill(ds, "Customer")
Dim ItemsDa As SqlDataAdapter = New SqlDataAdapter( _
"SELECT Products.ProductName, [Order Details].Quantity, " & _
" [Order Details].[UnitPrice]*[Quantity]*(1-[Discount]) AS ItemTotal " & _
"FROM Products INNER JOIN [Order Details] ON Products.ProductID = [Order Details].ProductID " & _
"WHERE (([Order Details].[OrderID]) = " & sOrderRequested & ")", conn)
ItemsDa.Fill(ds, "Items")
conn.Close()
SendResults(context, ds)
context.Response.End()
End If
End Sub
Private Sub SendResults(ByVal context As HttpContext, ByVal ds As DataSet)
'Write the XML for the DataSet.
context.Response.ContentType = "text/xml"
context.Response.Output.Write(ds.GetXml)
context.Response.End()
End Sub
End Class
CATATAN: GetData.VB, mengubah tugas untuk sConn untuk koneksi sah string untuk komputer yang menjalankan SQL
Server dan yang berisi Northwind sampel database.
Pada Project menu, klik Menambah Item baru, klik File konfigurasi web template, dan kemudian klik Oke.
Pada Project menu, klik Tambahkan halaman HTML, nama halaman Header.htm, dan kemudian klik Oke.
Pada Lihat menu, klik Sumber HTML.
Ganti kode dalam Header.htm dengan berikut:
<html>
<script language="javascript">
<!--
function OrderSelect_onchange() {
window.parent.frames("main").location.replace("about:blank");
if(OrderSelect.selectedIndex>0) {
window.setTimeout("OpenOrder()", 50);
}
}
function OpenOrder() {
var order = OrderSelect.options(OrderSelect.selectedIndex).value;
window.parent.frames("main").location.href=
"http://localhost/exceltransform/getdata.aspx?orderid=" + order;
}
//-->
</script>
<body>
<select id="OrderSelect" onchange="return OrderSelect_onchange()">
<option value="0">Select an Order</option>
</select>
</body>
</html>
CATATAN: HTTP handler beban Header.htm sebagai dokumen XML. Untuk me-load
tanpa kesalahan, Header.htm harus well-formed XML. Jika Anda mengubah Header.htm,
Pastikan bahwa well-formed; semua elemen harus tepat awal dan akhir
Tag, dan semua atribut tugas harus tertutup dalam kutipan
menandai.
Pada Project menu, klik Tambahkan halaman HTML, klik Bingkai template, nama file Default.htm, dan kemudian klik Oke. Ketika diminta, klik Header jenis bingkai, dan kemudian klik Oke.
Pada Lihat menu, klik Sumber HTML.
Pada Frameset.htm, src dan bergulir atribut untuk header frame sebagai berikut:
Dalam solusi Explorer, klik kanan Default.htm, lalu klik Set sebagai halaman awal.
Ikuti langkah-langkah ini untuk menguji sampel:
Pada Debug menu, klik Mulai tanpa Debugging. Rangkaian bingkai akan terbuka dalam browser dengan daftar drop-down di
bingkai header yang berisi daftar urutan id.
Pilih order ID dari daftar drop-down.
Memeriksa XML yang muncul dalam bingkai utama. XML
adalah representasi DataSet yang GetData HTTP handler dibuat menurut permintaan Anda.
Pilih perintah tambahan id dari daftar drop-down untuk
memeriksa hasil.
Ketika Anda selesai menguji aplikasi Web, berhenti
Microsoft Internet Explorer.
Mengubah DataSet untuk Excel XML
Dalam bagian ini, Anda menambahkan kode tambahan untuk mengubah DataSet untuk ditampilkan di Excel.
Buka proyek ExcelTransform Web yang Anda hanya
dibuat.
Pada Project menu, klik Menambah Item baru, klik XSLT File template, nama proyek Transform.xslt, dan kemudian klik Oke.
Dalam GetData.VB, menggantikan SendResults fungsi dengan berikut:
Private Sub SendResults(ByVal context As HttpContext, ByVal ds As DataSet)
Dim sOrderID As String = ds.Tables(0).Rows(0).Item(0)
'Set up the response for Excel.
context.Response.ContentType = "application/vnd.ms-excel"
context.Response.Charset = ""
'Transform the DataSet XML using transform.xslt
'and return the results to the client in Response.Outputstream.
Dim tw As XmlTextWriter
Dim xmlDoc As XmlDataDocument = New XmlDataDocument(ds)
Dim xslTran As XslTransform = New XslTransform()
xslTran.Load(context.Server.MapPath("transform.xslt"))
xslTran.Transform(xmlDoc, Nothing, context.Response.OutputStream)
context.Response.End()
End Sub
Ikuti langkah-langkah ini untuk menguji sampel:
Pada Debug menu, klik Mulai tanpa Debugging. Rangkaian bingkai akan terbuka dalam browser dengan daftar drop-down di
bingkai header yang berisi daftar urutan id.
Pilih order ID dari daftar drop-down. Perhatikan bahwa
The DataSet Anda diminta dibangun, dan berubah menjadi Spreadsheet
XML dan ditampilkan di Excel. Data dalam Excel berisi format dan
perhitungan.
Ketika Anda selesai menguji aplikasi Web, berhenti
Internet Explorer.
Menyimpan XML berubah dalam file (opsional)
Dalam bagian sebelumnya, HTTP penangan sungai berubah
XML untuk klien. Anda mungkin ingin menyimpan DataSet XML dan hasil transformasi dalam file. Ini dapat
langkah pemecahan masalah yang berguna jika Anda menemukan bahwa transformasi tidak memberikan
Anda hasil yang Anda harapkan. Anda dapat menggunakan pendekatan ini untuk memeriksa DataSet XML dan XML berubah untuk potensi kesalahan.
CATATAN: Contoh menyimpan file XML dalam folder Aplikasi Web.
Anda mungkin harus mengubah izin untuk map, seperti yang ditunjukkan dalam
langkah-langkah berikut.
Menetapkan izin pada folder untuk ASP.NET
proses:
Mulai Windows Explorer.
Cari folder Aplikasi Web. Default path adalah
C:\Inetpub\Wwwroot\ExcelTransform.
Klik kanan ExcelTransform folder, dan kemudian klik Properti.
Pada Keamanan tab, klik Tambahkan.
Di bawah Masukkan nama objek untuk memilih, ketik nama objek YourComputerName\aspnet, dan
kemudian klik Oke.
Pada Keamanan tab, klik untuk memilih Menulis untuk memungkinkan izin menulis YourComputerName\aspnet account, dan kemudian klik Oke.
Dalam GetData.VB, menggantikan SendResults fungsi dengan berikut:
Private Sub SendResults(ByVal context As HttpContext, ByVal ds As DataSet)
Dim sOrderID As String = ds.Tables(0).Rows(0).Item(0)
'First, save the XML representation of the DataSet in a file
'and add a processing instruction to the XML so that it can be
'transformed client-side.
Dim tw As XmlTextWriter
tw = New XmlTextWriter(context.Server.MapPath("order" & sOrderID & ".xml"), System.Text.Encoding.UTF8)
tw.Formatting = Formatting.Indented
tw.Indentation = 3
tw.WriteStartDocument()
tw.WriteProcessingInstruction("xml-stylesheet", _
"type='text/xsl' href='http://localhost/ExcelTransform/transform.xslt'")
ds.WriteXml(tw)
tw.Close()
'Second, transform the DataSet XML and save it to a file.
Dim xmlDoc As XmlDataDocument = New XmlDataDocument(ds)
Dim xslTran As XslTransform = New XslTransform()
xslTran.Load(context.Server.MapPath("transform.xslt"))
tw = New XmlTextWriter(context.Server.MapPath("order" & sOrderID & ".xls"), System.Text.Encoding.UTF8)
tw.Formatting = Formatting.Indented
tw.Indentation = 3
tw.WriteStartDocument()
xslTran.Transform(xmlDoc, Nothing, tw)
tw.Close()
'Optionally, redirect to the saved transformation.
context.Response.Redirect( _
"http://localhost/ExcelTransform/order" & sOrderID & ".xls")
context.Response.End()
End Sub
Ikuti langkah-langkah ini untuk menguji sampel:
Pada Debug menu, klik Mulai tanpa Debugging.
Pilih perintah dalam daftar drop-down. Berubah
XML muncul dalam bingkai utama di Excel.
Memeriksa mentah DataSet XML,
C:\Inetpub\Wwwroot\ExcelTransform\orderNNNNN.xml.
Anda dapat membuka XML dalam editor teks apapun atau Excel. Jika Anda membuka Order.xml di
Excel, Anda diminta untuk menerapkan stylesheet.
Memeriksa Spreadsheet XML,
C:\Inetpub\Wwwroot\ExcelTransform\orderNNNNN.xls.
Anda dapat membuka XML dalam editor teks apapun atau Excel.
Ketika Anda membangun Anda sendiri XSLT file Excel, pertama kali membuat
buku kerja template dalam Excel yang berisi format dan rumus yang Anda
perlu, dan kemudian Simpan buku kerja dalam Spreadsheet XML. Anda kemudian dapat memodifikasi
XML sehingga itu mengandung XSL ekspresi dan unsur-unsur yang Anda butuhkan untuk
dengan benar mengubah Anda DataSet XML. ketika Anda mengubah XML yang Anda diselamatkan dari Excel, catatan
berikut:
Sel-sel pada lembar kerja yang diwakili oleh <table></table> unsur dalam XML. The <table></table> memiliki dua atribut, SS:ExpandedColumnCount dan SS:ExpandedRowCount, yang menetapkan sel-sel yang digunakan dalam lembar kerja (itu adalah,
"digunakan kisaran"). Jika lembar kerja memiliki berbagai jumlah baris atau kolom (atau
keduanya), mengatur atribut ini selama transformasi. Perhatikan bahwa SS:ExpandedRowCount atribut di Transform.XSLT set didasarkan pada jumlah node tertentu di DataSet XML.
Rumus dalam sel diwakili dalam notasi RC, dan tidak
dalam notasi A1.
Masing-masing berbeda format kombinasi yang Anda Terapkan untuk
sel-sel pada lembar kerja diberikan gaya sendiri. Gaya yang disimpan dalam <style></style> elemen XML Spreadsheet.
Catatan Pengembang yang menggunakan.NET Framework 1.1 harus mengetahui perubahan-perubahan yang telah dibuat untuk XslTransform kelas antara.NET Framework 1.0 dan.NET Framework 1.1. Sebagai contoh, beberapa versi kelebihan beban beban dan mengubah metode (termasuk versi yang digunakan dalam artikel ini) yang dianggap usang dimulai dengan.NET Framework 1.1. Untuk informasi tambahan tentang XslTransform.Transform metode, kunjungi Web site Microsoft Developer Network (MSDN) berikut:
Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel pada Basis Pengetahuan Microsoft:
288215
(http://support.microsoft.com/kb/288215/
)
Microsoft Excel 2002 dan XML
307021
(http://support.microsoft.com/kb/307021/
)
Cara mentransfer XML data untuk Microsoft Excel 2002 dengan menggunakan Visual Basic
.NET
306022
(http://support.microsoft.com/kb/306022/
)
Bagaimana untuk mentransfer data ke buku kerja Excel dengan menggunakan Visual Basic.NET
307985
(http://support.microsoft.com/kb/307985/
)
ASP.Modul NET HTTP dan HTTP penangan ikhtisar
308000
(http://support.microsoft.com/kb/308000/
)
Cara membuat ASP.NET HTTP modul dengan menggunakan Visual Basic.NET
311461
(http://support.microsoft.com/kb/311461/
)
Cara menggunakan
ASP.NET atau Visual Basic.NET untuk mengubah XML untuk Rich Text Format (RTF) untuk
Microsoft Word 2002
285891
(http://support.microsoft.com/kb/285891/
)
Cara menggunakan
Visual Basic atau ASP untuk membuat spreadsheet XML untuk Excel 2002
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:319180
(http://support.microsoft.com/kb/319180/en-us/
)
Seberapa besar usaha yang anda keluarkan dalam menggunakan artikel ini?
Sangat kecil
Kecil
Menengah
Besar
Sangat besar
Apa yang dapat kami lakukan untuk meningkatkan informasi ini?
Untuk melindungi privasi Anda, jangan menyertakan informasi kontak dalam umpan balik Anda.
Terima kasih! Umpan balik Anda akan digunakan untuk membantu meningkatkan konten dukungan kami. Untuk opsi-opsi bantuan lebih lanjut, kunjungi Halaman Muka Bantuan dan Dukungan.