Erstellen einer XML-Kalkulationstabelle für Excel 2002 und Excel 2003 mit Visual Basic oder ASP

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 285891 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
285891 How to use Visual Basic or ASP to create an XML spreadsheet for Excel 2002 and Excel 2003
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Zusammenfassung

Microsoft Excel 2002 und Microsoft Office Excel 2003 unterstützen ein XML-Format, mit dem Arbeitsmappen (oder XML-Kalkulationstabellen) sowohl geladen als auch gespeichert werden können. Mit diesem XML-Kalkulationstabellenformat können Sie formatierte Arbeitsmappen mit mehreren Blättern für Excel erstellen, ohne die Automatisierung zu verwenden. Diese Vorgehensweise kann sinnvoll sein, wenn Sie eine Excel-Arbeitsmappe erstellen möchten, Excel jedoch nicht automatisiert werden kann (wie z. B. auf einem Webserver oder von einem Dienst aus) oder auf dem System nicht installiert ist, in dem Ihr Code ausgeführt wird.

Dieser Artikel zeigt, wie Sie eine XML-Vorlage erstellen können, die bei Verwendung der XSL-Transformation (XSL = Extensible Stylesheet Language) eine formatierte Arbeitsmappe erzeugt, die direkt in Excel geöffnet werden kann. Die XML-Transformation wird sowohl für Active Server Pages (ASP) als auch für Visual Basic dargestellt. Hinsichtlich des Visual Basic-Codebeispiels werden die Daten der Kalkulationstabelle ausschließlich mit XML/XSL generiert; eine minimale Automatisierung wird zum Öffnen der Ergebnisse in Excel verwendet.

Hinweis: Das in diesem Artikel beschriebene Beispiel steht zum Download zur Verfügung. Anweisungen zum Download finden Sie im Abschnitt "Download" am Ende dieses Artikels.

Weitere Informationen

Erstellen der XML-Vorlage für die Arbeitsmappe

  1. Erstellen Sie einen neuen Ordner mit dem Namen "C:\ExcelXML".
  2. Starten Sie eine neue Arbeitsmappe in Excel. Fügen Sie die folgenden Daten zu den Zellen A1:F2 der Arbeitsmappe in den angegebenen Zellen hinzu. Zelle F2 sollte als Formel eingegeben werden.
    A1: Order ID    B1: Product ID   C1: Unit Price   D1: Quantity   E1: Discount  F1: Total
    A2: aaa         B2: 111          C2: 222          D2: 333        E2: 0         F2: =C2*D2*(1-E2)
  3. Geben Sie in Zelle F3 die folgende Formel ein:
    =SUM(F$2:F2)
  4. Markieren Sie die Zellen A1:F1. Klicken Sie im Menü Format auf Zellen. Verwenden Sie Fettdruck, eine Rahmenlinie unten und eine Volltonfarbe für die Zellschattierung. Klicken Sie auf OK.
  5. Markieren Sie die Spalten A:F. Zeigen Sie im Menü Format auf Spalte, und klicken Sie anschließend auf Breite. Geben Sie 15 als neue Spaltenbreite ein, und klicken Sie auf OK. Klicken Sie dann im Menü Format auf Zellen, wobei die Spalten A:F weiterhin markiert sind. Wählen Sie auf der Registerkarte Ausrichtung in der Liste für die horizontale Ausrichtung Zentriert, und klicken Sie anschließend auf OK.
  6. Markieren Sie die Spalte E. Klicken Sie im Menü Format auf Zellen. Klicken Sie auf der Registerkarte Zahlen auf Prozent, geben Sie 0 Dezimalstellen ein, und klicken Sie auf OK.
  7. Markieren Sie die Spalte F. Klicken Sie im Menü Format auf Zellen. Klicken Sie auf der Registerkarte Zahlen auf Buchhaltung, und klicken Sie anschließend auf OK.
  8. Markieren Sie die Zellen A3:F3. Klicken Sie im Menü Format auf Zeilenhöhe, geben Sie 25 ein, und klicken Sie auf OK. Klicken Sie im Menü Format auf Zellen, wobei die Zellen A3:F3 weiterhin markiert sind. Versehen Sie die Zellen mit einer Rahmenlinie oben, und klicken Sie auf OK.
  9. Klicken Sie im Menü Extras auf Optionen. Deaktivieren Sie auf der Registerkarte Ansicht das Kontrollkästchen Gitternetzlinien, und klicken Sie anschließend auf OK.
  10. Markieren Sie die Zeile 2. Klicken Sie im Menü Fenster auf Fenster fixieren.
  11. Markieren Sie die Zelle A1.
  12. Klicken Sie im Menü Datei auf Speichern unter. Gehen Sie zum Ordner "C:\ExcelXML", den Sie angelegt haben, und speichern Sie die Arbeitsmappe unter "Orders.xsl" im Format XML-Kalkulationstabelle.

    Hinweis: Schließen Sie den Dateinamen im Feld Dateiname im Dialogfeld Speichern unter in doppelte Anführungszeichen ein, damit keine XML-Erweiterung an Ihren Dateinamen angehängt wird.
  13. Beenden Sie Excel.
  14. Öffnen Sie die Datei "Orders.xsl" in einem beliebigen Texteditor, wie beispielsweise "Editor".
  15. Fügen Sie zwischen den Tags <?xml version="1.0"?> und <Workbook> Folgendes ein:
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
    <xsl:template match="/">
    <xsl:pi name="xml">version="1.0"</xsl:pi>
    					
  16. Hängen Sie ganz am Ende von "Orders.xsl" die zwei folgenden Zeilen an:
    </xsl:template>
    </xsl:stylesheet>
    					
  17. Suchen Sie die folgende Gruppe von Tags in "Orders.xsl" (diese Tags stellen die Zellen A2:F2 in der Arbeitsmappe dar):
       <Row ss:Height="14.25">
        <Cell><Data ss:Type="String">aaa</Data></Cell>
        <Cell><Data ss:Type="Number">111</Data></Cell>
        <Cell><Data ss:Type="Number">222</Data></Cell>
        <Cell><Data ss:Type="Number">333</Data></Cell>
        <Cell><Data ss:Type="Number">0</Data></Cell>
        <Cell ss:Formula="=RC[-3]*RC[-2]*1*(1-RC[-1])"><Data ss:Type="Number">73926</Data></Cell>
       </Row>
    					
    Ersetzen Sie sie durch folgenden XSL-Code:
    <xsl:for-each select="xml/rs:data/z:row">
       <Row ss:AutoFitHeight="0" ss:Height="13.5">
        <Cell><Data ss:Type="String"><xsl:value-of select="@OrderID"/></Data></Cell>
        <Cell><Data ss:Type="Number"><xsl:value-of select="@ProductID"/></Data></Cell>
        <Cell><Data ss:Type="Number"><xsl:value-of select="@UnitPrice"/></Data></Cell>
        <Cell><Data ss:Type="Number"><xsl:value-of select="@Quantity"/></Data></Cell>
        <Cell><Data ss:Type="Number"><xsl:value-of select="@Discount"/></Data></Cell>
        <Cell ss:Formula="=RC[-3]*RC[-2]*(1-RC[-1])"><Data ss:Type="Number">0</Data></Cell>
       </Row>
    </xsl:for-each>
    					
  18. Speichern Sie Ihre Änderungen an "Orders.xsl", und schließen Sie die Datei.

Transformieren eines in XML gespeicherten ADO-Recordsets in eine XML-Kalkulationstabelle mit Visual Basic

  1. Erstellen Sie in Visual Basic ein neues Standard-EXE-Projekt.
  2. Klicken Sie im Menü Projekt auf Verweise. Markieren Sie die Typbibliotheken für Microsoft ActiveX Data Object 2.5 (oder höher) und Microsoft XML 3.0.
  3. Fügen Sie eine Befehlsschaltfläche zu Form1 hinzu, und fügen Sie den folgenden Code zum Click-Ereignis der Schaltfläche hinzu:
        Const sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                      "C:\program files\microsoft office\office10\samples\Northwind.mdb"
        Const sOutXML = "C:\ExcelXML\Orders.xml"
        Const sXSL = "C:\ExcelXML\Orders.xsl"
        
        'Retrieve an ADO recordset of the Orders Detail table in Northwind.
        Dim nRecords As Long, nFields As Long
        Dim rs As New ADODB.Recordset
        rs.Open "SELECT * FROM [Order Details]", sConn, adOpenStatic, adLockOptimistic
            
        'Persist the recordset to a new DOMDocument and store the record count.
        Dim oXML As New DOMDocument
        rs.Save oXML, adPersistXML
        nRecords = rs.RecordCount
        nFields = rs.Fields.Count
        rs.Close
          
        'Load the XSL (the workbook template with XSL directives) into a DOMDocument.
        Dim oXSL As New DOMDocument
        oXSL.Load sXSL
        
        'Transform the XML using the style sheet.
        Dim oResults As New DOMDocument
        oXML.transformNodeToObject oXSL, oResults
        
        If oXSL.parseError.errorCode <> 0 Then
            MsgBox "Parse Error: " & oResults.parseError.reason
        Else
           'Modify the ss:ExpandedRowCount attribute for the <table> node to
           'indicate the correct number of rows (count of records + 1 row for
           'the header + 1 row for the total).
            Dim oTable As MSXML2.IXMLDOMElement
            Set oTable = oResults.selectSingleNode("Workbook/Worksheet/Table")
            oTable.setAttribute "ss:ExpandedRowCount", nRecords + 2
    
            '***************************************
            'Save the results to a file.
            Open sOutXML For Output As #1
            Print #1, oResults.xml
            Close #1
    
            'Open the XML in Excel.
            Dim oExcel As Object
            Set oExcel = CreateObject("Excel.Application")
            oExcel.Workbooks.Open sOutXML
            oExcel.Visible = True
            oExcel.UserControl = True
            '***************************************
        End If
    					
    Hinweis: Falls erforderlich, ändern Sie die Verbindungszeichenfolge (Const sConn) so, dass sie den richtigen Installationspfad zur Access-Beispieldatenbank "Nordwind" enthält.
  4. Drücken Sie [F5], um das Programm auszuführen.
  5. Klicken Sie auf die Schaltfläche in Form1. Die Daten aus der Tabelle "Bestelldetails" in der Datenbank "Nordwind" werden in der von Ihnen erstellten Vorlage für die Excel-Arbeitsmappe angezeigt.
Der Beispielcode generiert die XML-Kalkulationstabelle und automatisiert Excel mit der Methode Open der Sammlung Workbooks, um die XML als neue Arbeitsmappe zu öffnen. Als Alternative können Sie die XML an einer bestimmten Zelle direkt in ein vorhandenes Arbeitsblatt einfügen. Ersetzen Sie zur Veranschaulichung den Code zwischen den Sternchen durch folgenden Code:
        'Display the data in a workbook starting at cell B2.
        Dim oExcel As Object, oBook As Object
        Set oExcel = CreateObject("Excel.Application")
        Set oBook = oExcel.Workbooks.Add
        oBook.Worksheets(1).Range("B2").Resize(nRecords + 2, nFields + 1).Value(11) = _
            oResults.xml 'Note: xlRangeValueXMLSpreadsheet=11
        oExcel.Visible = True
        oExcel.UserControl = True
				
Nachdem Sie diese Änderung vorgenommen haben, führen Sie das Programm erneut aus. Jetzt werden die Daten der XML-Kalkulationstabelle ab Zelle B2 des ersten Arbeitsblattes in eine neue Arbeitsmappe eingefügt. Zelldaten und -formate werden auf den Bereich angewendet. Bei dieser Vorgehensweise werden jedoch spezifische Einstellungen für Zeilen, Spalten, Arbeitsblatt und Arbeitsmappe nicht übernommen.

Transformieren eines in XML gespeicherten ADO-Recordsets in eine XML-Kalkulationstabelle mit ASP

  1. Fügen Sie den folgenden Code in den Editor ein. Speichern Sie den Code im virtuellen Stammordner Ihres Webservers als "ExcelXML.asp". Hinweis: Der virtuelle Stammordner ist "C:\inetpub\wwwroot".
    <%@ Language="vbscript"%>
    
    <%
    
        Const sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\program files\microsoft office\office10\samples\Northwind.mdb"
        Const sXSL = "C:\ExcelXML\Orders.xsl"
        
        Response.Buffer = True
    
        'Retrieve an ADO recordset of the Orders Detail table in Northwind.
        Dim rs, nRecords
        Set rs = CreateObject("ADODB.Recordset")
        rs.Open "SELECT * FROM [Order Details]", sConn, 3, 3
            
        'Persist the recordset to a new DOMDocument and store the record count.
        Dim oXML
        Set oXML = CreateObject("Microsoft.XMLDOM")
        rs.Save oXML, 1
        nRecords = rs.RecordCount
        rs.Close
          
        'Load the XSL (the workbook template with XSL directives) into a DOMDocument.
        Dim oXSL
        Set oXSL = CreateObject("Microsoft.XMLDOM")
        oXSL.Load sXSL
        
        'Transform the XML using the style sheet.
        Dim oResults
        Set oResults = CreateObject("Microsoft.XMLDOM")
        oXML.transformNodeToObject oXSL, oResults
        
        If oXSL.parseError.errorCode <> 0 Then
           Response.Write "Parse Error: " & oResults.parseError.reason
        Else
    
           'Modify the ss:ExpandedRowCount attribute for the <table> node in the XSL.
            Dim oTable
            Set oTable = oResults.selectSingleNode("Workbook/Worksheet/Table")
            oTable.setAttribute "ss:ExpandedRowCount", nRecords + 2
    
            'Return the resulting XML Spreadsheet for display in Excel.
            Response.ContentType = "application/vnd.ms-excel"
            Response.Charset = "ISO-8859-1"
            Response.Write oResults.XML
            Response.Flush
    
        End If
    
    %>
    					
    Hinweis: Falls erforderlich, ändern Sie die Verbindungszeichenfolge (Const sConn) so, dass sie den richtigen Installationspfad zur Access-Beispieldatenbank "Nordwind" enthält.

  2. Starten Sie Internet Explorer, und gehen Sie zu "http://IhrWebServer/ExcelXML.asp", wobei IhrWebServer für den Namen Ihres Webservers steht. Die Daten aus der Tabelle "Bestelldetails" in der Datenbank "Nordwind" werden in der von Ihnen erstellten Vorlage für die Excel-Arbeitsmappe angezeigt.

Zusätzliche Hinweise

Die folgenden Excel-Funktionen bleiben beim XML-Kalkulationstabellenformat nicht erhalten:
  • Diagramme
  • OLE-Objekte
  • Zeichnungsformen oder AutoFormen
  • VBA-Projekte
  • Gruppierung und Gliederung

Download

XMLSpread.exe enthält das XML-Stylesheet, das Visual Basic-Projekt und das ASP-Skript, die in diesem Artikel beschrieben werden. Die folgende Datei steht im Microsoft Download Center zum Download zur Verfügung:
Bild minimierenBild vergrößern
Download
Paket Xmlsprd.exe jetzt herunterladen. Veröffentlichungsdatum: 27.03.2001

Weitere Informationen über das Herunterladen von Microsoft Support-Dateien finden Sie im folgenden Artikel der Microsoft Knowledge Base:
119591 So erhalten Sie Microsoft Support-Dateien im Internet
Microsoft hat diese Datei auf Viren überprüft. Microsoft hat dazu die neueste Software zur Virenerkennung verwendet, die zum Zeitpunkt der Bereitstellung verfügbar war. Die Datei befindet sich auf Servern mit verstärkter Sicherheit, wodurch nicht autorisierte Änderungen an der Datei weitestgehend verhindert werden.

Informationsquellen

Weitere Informationen zum Speichern von ADO-Recordsets im XML-Format finden Sie auf folgender MSDN-Website:
http://msdn2.microsoft.com/en-us/library/ms681538.aspx
Weitere Informationen zum Streaming von MIME-Inhalten an Office-Anwendungen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
266263 BUG: Word 2000 und Excel 2000 Display ASP Source When, das Mime-Typen auf Stromdaten verwendet
199841 Welche Verfahrensweise zu Anzeige-ASP-Ergebnissen, die Excel bei IE mit Mime-Typen verwenden
271572 Wie Formatieren einer Excel-Arbeitsmappe während Mime-Inhalt übertragen
307021 SO WIRD´S GEMACHT: Übertragen von XML-Daten auf Microsoft Excel 2002 mit Visual Basic .NET

Eigenschaften

Artikel-ID: 285891 - Geändert am: Donnerstag, 5. April 2007 - Version: 7.3
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Active Server Pages 4.0
  • Microsoft Visual Basic 6.0 Professional Edition
Keywords: 
kbdownload kbhowto KB285891
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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