SO WIRD´S GEMACHT: Übertragen von XML-Daten auf Microsoft Excel 2002 mit Visual C# .NET

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 307029 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde zuvor veröffentlicht unter D307029
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
307029 HOW TO: Transfer XML Data to Microsoft Excel 2002 by Using Visual C# .NET
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

Auf dieser Seite

Zusammenfassung

In Excel 2002 besteht jetzt die Möglichkeit zum Öffnen von Dateien im XML-Format (XML = Extensible Markup Language). Eine ordnungsgemäß aufgebaute XML-Datei kann direkt in Excel 2002 oder Excel 2003 über die Benutzeroberfläche oder mithilfe eines entsprechenden Codes geöffnet werden.

Mit Visual C# .NET können Sie die XML-Funktionalität von Excel nutzen, um Daten nahtlos in eine Arbeitsmappe zu übertragen und diese Daten mit der von Ihnen gewählten Formatierung und Anordnung zu präsentieren. Dieser Artikel beschreibt, wie Sie dabei vorgehen müssen.

Generieren von XML-Daten aus einem DataSet für die Verwendung in Excel 2002 oder Excel 2003

Dieser Abschnitt beschreibt das Erstellen eines DataSet-Objekts und das Exportieren der darin enthaltenen Daten in eine XML-Datei unter Verwendung der Methode WriteXML. Die so generierte XML-Datei kann direkt in Excel geöffnet werden. Aus Gründen der Veranschaulichung wird das DataSet-Objekt unter Einsatz des Jet OLEDB-Providers aus der Access-Beispieldatenbank "Nordwind" erstellt. Ein ähnlich gestalteter Code funktioniert jedoch auch in Verbindung mit jedem anderen DataSet-Objekt, das Sie mit Visual C# .NET erstellen.
  1. Starten Sie Microsoft Visual Studio .NET. Klicken Sie im Menü Datei auf Neu, und klicken Sie anschließend auf Projekt. Wählen Sie aus der Liste der Visual C#-Projekttypen die Option Windows-Anwendung. Form1 wird standardmäßig erstellt.
  2. Klicken Sie im Menü Ansicht auf Toolbox, um die Toolbox anzeigen zu lassen, und fügen Sie "Form1" eine Schaltfläche hinzu.
  3. Doppelklicken Sie auf Button1 (Schaltfläche 1). Das Codefenster für die Form wird angezeigt.
  4. Fügen Sie oben in "Form1.cs" die folgenden Direktiven des Typs using ein:
    using System.Data.OleDb;
    using System.Xml;
    					
  5. Fügen Sie der Klasse "Form1" die folgende private Membervariable hinzu:
    private string strConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    	+ " C:\\Programme\\Microsoft Office\\Office10\\Samples\\"
    	+ "Nordwind.mdb;";
    					
    Hinweis: Sie müssen den Pfad zu der Datei "Nordwind.mdb" in der Verbindungszeichenfolge eventuell so ändern, dass er dem Speicherort dieser Datei auf Ihrem Computer entspricht.

  6. Fügen Sie den folgenden Code in den Handler button1_Click ein:
    //Connect to the data source.
             OleDbConnection objConn = new OleDbConnection (strConn);
             try
             {
                objConn.Open();			            //Fill a dataset with records from the Customers table.
                OleDbCommand objCmd = new OleDbCommand(
                   "Select CustomerID, CompanyName, ContactName, " 
                   + "Country, Phone from Customers", objConn);
                OleDbDataAdapter objAdapter = new OleDbDataAdapter();
                objAdapter.SelectCommand = objCmd;
                DataSet objDataset = new DataSet();
                objAdapter.Fill(objDataset);
    
    
                //Create the FileStream to write with.
                System.IO.FileStream fs = new System.IO.FileStream(
                   "C:\\Customers.xml", System.IO.FileMode.Create);
    
                //Create an XmlTextWriter for the FileStream.
                System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(
                   fs, System.Text.Encoding.Unicode);
    
                //Add processing instructions to the beginning of the XML file, one 
                //of which indicates a style sheet.
                xtw.WriteProcessingInstruction("xml", "version='1.0'");
                //xtw.WriteProcessingInstruction("xml-stylesheet", 
                  // "type='text/xsl' href='customers.xsl'");
    
                //Write the XML from the dataset to the file.
                objDataset.WriteXml(xtw);
                xtw.Close();
    
                //Close the database connection.
                objConn.Close();
             }
             catch (System.Exception ex)
             {
                MessageBox.Show(ex.Message);
             } 
    					
  7. Drücken Sie die Taste [F5], um das Programm erstellen und ausführen zu lassen.
  8. Klicken Sie auf Button1 (Schaltfläche 1), um die XML-Datei erstellen zu lassen. Schließen Sie dann "Form1", um das Programm zu beenden.
  9. Starten Sie Excel 2002 oder Excel 2003, und öffnen Sie dann die Ausgabedatei "C:\Customers.xml".
  10. Nachdem Sie beobachtet haben, wie die XML-Daten in der neuen Arbeitsmappe in Reihen und Spalten eingefügt wurden, schließen Sie die Datei, und beenden Sie anschließend Excel.

Formatieren von XML-Daten mithilfe von Stylesheets

In diesem Abschnitt wird beschrieben, wie Sie ein Stylesheet (XSL) einsetzen können, um zu definieren, wie XML-Daten in einer Excel-Arbeitsmappe formatiert und angeordnet werden.
  1. Speichern Sie mit einem beliebigen HTML-Editor oder Texteditor (zum Beispiel "Notepad.exe") die folgende XSL-Datei unter dem Namen "C:\Customers.xsl":
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:template match="/">
        <HTML>
          <HEAD>
            <STYLE>   
              .HDR { background-color:bisque;font-weight:bold }
            </STYLE>
          </HEAD>
          <BODY>
            <TABLE>
              <COLGROUP WIDTH="100" ALIGN="CENTER"></COLGROUP>
              <COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
              <TD CLASS="HDR">Customer ID</TD>
              <TD CLASS="HDR">Company</TD>
              <TD CLASS="HDR">Contact</TD>
              <TD CLASS="HDR">Country</TD>
              <TD CLASS="HDR">Phone</TD>
              <xsl:for-each select="NewDataSet/Table">
                <TR>
                  <TD><xsl:value-of select="CustomerID"/></TD>
                  <TD><xsl:value-of select="CompanyName"/></TD>
                  <TD><xsl:value-of select="ContactName"/></TD>
                  <TD><xsl:value-of select="Country"/></TD>
                  <TD><xsl:value-of select="Phone"/></TD>
                </TR>
              </xsl:for-each>
            </TABLE>
          </BODY>
        </HTML>
      </xsl:template>
    </xsl:stylesheet> 
    					
  2. Entfernen Sie die Kommentare aus der folgenden Codezeile im Handler Button1_Click:
    xtw.WriteProcessingInstruction("xml-stylesheet", 
    	"type='text/xsl' href='customers.xsl'");
    					
    Diese Codezeile schreibt eine Verarbeitungsanweisung in die XML-Datei, die Excel verwendet, um das Stylesheet (Customers.xsl) zu finden.

  3. Drücken Sie die Taste [F5], um das Programm erstellen und ausführen zu lassen.
  4. Klicken Sie auf Button1 (Schaltfläche 1), um die XML-Datei erstellen zu lassen. Schließen Sie dann "Form1", um das Programm zu beenden.
  5. Starten Sie Excel 2002 oder Excel 2003, und öffnen Sie dann die Ausgabedatei "C:\Customers.xml".
  6. Weil Excel die Verarbeitungsanweisung für das Stylesheet in der XML-Datei erkennt, wird Ihnen beim Öffnen der Datei ein Dialogfeld mit einer Eingabeaufforderung angezeigt. Wählen Sie im Dialogfeld XML importieren die Option Die Datei öffnen und das folgende Stylesheet anwenden aus. Klicken Sie in der Liste auf Customers.xsl, und klicken Sie anschließend auf OK. Beachten Sie, dass die XML-Daten jetzt formatiert sind und die Spalten so angeordnet wurden wie in dem Stylesheet.
  7. Schließen Sie die Datei, und beenden Sie Excel.

Öffnen von transformierten XML-Daten mithilfe eines Codes

Bis zu diesem Punkt haben Sie die XML-Datei unter Verwendung der Benutzeroberfläche in Excel geöffnet. In dem folgenden Abschnitt wird beschrieben, wie Sie Excel so automatisieren können, dass die Arbeitsmappe programmatisch geöffnet wird. Das folgende Beispiel illustriert das Öffnen der transformierten XML-Datei ohne Einwirkung des Benutzers. Dabei wird die XML-Datei im DataSet-Objekt zunächst in das HTML-Format transformiert.
  1. Fügen Sie einen Verweis auf die Microsoft Excel 10.0 Object Library oder die Microsoft Excel 11.0 Object Library hinzu. Gehen Sie hierzu folgendermaßen vor:
    1. Klicken Sie im Menü Projekt auf Verweis hinzufügen.
    2. Gehen Sie auf der Registerkarte COM zu dem Eintrag für die Microsoft Excel 10.0 Object Library oder die Microsoft Excel 11.0 Object Library, und klicken Sie anschließend auf Auswählen.
    3. Klicken Sie im Dialogfeld Verweise hinzufügen auf OK, um Ihre Auswahl zu bestätigen. Klicken Sie auf Ja, wenn Sie gefragt werden, ob Wrapper für die ausgewählte Bibliothek erstellt werden sollen.
  2. Fügen Sie oben in "Form1.cs" die folgenden Direktiven des Typs using ein:
    using Excel = Microsoft.Office.Interop.Excel;
    					
  3. Fügen Sie im Visual C# .NET-Projekt eine weitere Schaltfläche in "Form1" ein.
  4. Doppelklicken Sie auf Button2 (Schaltfläche 2). Wenn das Codefenster für das Formular (Form1) eingeblendet wird, fügen Sie dem Handler Button2_Click den folgenden Code hinzu:
    //Connect to the data source.
    OleDbConnection objConn = new OleDbConnection (strConn);
    objConn.Open();			//Fill a dataset with records from the Customers table.
    OleDbCommand objCmd = new OleDbCommand(
    	"Select CustomerID, CompanyName, ContactName, " 
    	+ "Country, Phone from Customers", objConn);
    OleDbDataAdapter objAdapter = new OleDbDataAdapter();
    objAdapter.SelectCommand = objCmd;
    DataSet objDataset = new DataSet();
    objAdapter.Fill(objDataset);
    
    //Create the FileStream to write with.
    System.IO.FileStream fs = new System.IO.FileStream(
    	"C:\\Customers.htm", System.IO.FileMode.Create);
    
    //Create an XmlTextWriter for the FileStream.
    System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(
    	fs, System.Text.Encoding.Unicode);
    
    //Transform the XML using the stylesheet.
    XmlDataDocument xmlDoc = new XmlDataDocument(objDataset);
    System.Xml.Xsl.XslTransform xslTran = new System.Xml.Xsl.XslTransform();
    xslTran.Load("C:\\Customers.xsl");
    xslTran.Transform(xmlDoc, null, xtw);
    
    //Open the HTML file in Excel.
    Excel.Application oExcel = new Excel.Application();
    oExcel.Visible=true;
    oExcel.UserControl=true;
    Excel.Workbooks oBooks = oExcel.Workbooks;
    object oOpt = System.Reflection.Missing.Value; //for optional arguments
    oBooks.Open("c:\\customers.htm", oOpt, oOpt, oOpt, 
    	oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, 
    	oOpt, oOpt, oOpt);
    
    					
  5. Drücken Sie die Taste [F5], um das Programm erstellen und ausführen zu lassen.
  6. Klicken Sie auf Button2, um die transformierte XML-Datei in Excel zu öffnen.
Hinweis: Obwohl das Excel 2002- und das Excel 2003-Objektmodell eine Methode OpenXML bieten, mit der Sie eine XML-Datei mit angewendeten Stylesheets programmatisch öffnen können, wird diese Methode bei dem vorstehenden Beispiel nicht aufgerufen. Der Grund dafür ist ein bekanntes Problem bei der Verwendung dieser Methode von einem Automatisierungsclient aus. Die Methode OpenXML funktioniert den Erwartungen entsprechend, wenn Sie mithilfe eines Excel-Makros aufgerufen wird; wird sie jedoch von einem Automatisierungsclient aus aufgerufen, wird der Parameter StyleSheet ignoriert. Weitere Informationen finden Sie in folgendem Artikel der Microsoft Knowledge Base:
307230 BUG: StyleSheets Parameter of the OpenXML Method Ignored When Automating Excel 2002

Verweise

Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
288215 INFO: Microsoft Excel 2002 und XML
302084 SO WIRD'S GEMACHT: Microsoft Excel mit Microsoft Visual C# .NET automatisieren
301216 SO WIRD'S GEMACHT: Auffüllen eines DataSet-Objekts aus einer Datenbank mit Visual Basic .NET
306023 HOW TO: Transfer Data to an Excel Workbook by Using Visual C# .NET

Eigenschaften

Artikel-ID: 307029 - Geändert am: Montag, 16. Februar 2004 - Version: 1.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ADO.NET 1.0
  • Microsoft Excel 2002 Standard Edition
Keywords: 
kbhowtomaster KB307029
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