Excel-gegevens opvragen en weergeven met behulp van ASP.NET, ADO.NET en Visual C# .NET

In dit artikel ziet u hoe u gegevens uit een Excel-werkblad opvraagt en weergeeft via een ASP.NET -pagina (.aspx) met behulp van Visual C# .NET.

Oorspronkelijke productversie: ASP.NET
Origineel KB-nummer: 306572

Een Excel-voorbeeldwerkblad maken

  1. Start Microsoft Excel en maak een nieuw werkblad.

  2. Voeg de volgende informatie toe aan het nieuwe werkblad om een Excel-database te maken:

    Rijnummer A B
    1 Voornaam Achternaam
    2 Scott Bisschop
    3 Katie Jordanië

    Opmerking

    Hoewel de gegevens in dit voorbeeld beginnen met cel A1, kunt u deze gegevens toevoegen aan aangrenzende cellen in het werkblad.

  3. Markeer de rijen en kolommen waar de gegevens zich bevinden.

  4. Wijs in het menu Invoegen de optie Naam aan en klik op Definiëren.

  5. Typ myRange1 in het tekstvak Namen in werkmap en klik vervolgens op OK.

  6. Klik in het menu Bestand op Opslaan. Selecteer in de lijst Opslaan in de hoofdmap van de webserver (dit is meestal C:\InetPub\Wwwroot\). Typ in het tekstvak BestandsnaamExcelData.xls. Klik op OK.

  7. Klik in het menu Bestand op Afsluiten.

Een ASP.NET voorbeeld maken met behulp van Visual C# .NET

In dit codevoorbeeld ziet u hoe u een query uitvoert en informatie weergeeft in een Excel-werkblad. In de volgende code wordt het werkblad gebruikt dat u in de vorige sectie hebt gemaakt.

  1. Open Microsoft Visual Studio .NET. Visual Studio .NET Integrated Development Environment (IDE) wordt weergegeven.

  2. Wijs in het menu Bestand naar Nieuw en klik vervolgens op Project.

  3. Klik in het dialoogvenster Nieuw project onder Projecttypen op Visual C#-projecten. Klik onder Sjablonen op ASP.NET webtoepassing.

  4. Zoek in het dialoogvenster Nieuw project de tekstvakken Naam en Locatie .

    Opmerking

    • Het tekstvak Naam is niet beschikbaar (het wordt grijs of grijs weergegeven). Het tekstvak Locatie bevat de tekst (of vergelijkbaar). http://localhost/WebApplication1
    • Vervang de tekst in het tekstvak Locatie door http://localhost/ExcelCSTesten klik vervolgens op OK. Er wordt een nieuw project gemaakt, dat een webformulier met de naam WebForm1.aspx bevat.
  5. Zoek in Visual Studio .NET IDE het venster Solution Explorer. Als u deze niet kunt vinden, klikt u op Solution Explorer in het menu Beeld.

  6. Klik in Solution Explorer met de rechtermuisknop op WebForm1.aspx en klik vervolgens op Designer weergeven om de ontwerpfunctie weer te geven voor het uiterlijk van de pagina. Met de ontwerpfunctie kunt u besturingselementen toevoegen en het uiterlijk van de pagina bewerken.

  7. Zoek de werkset. Afhankelijk van uw IDE Option-instellingen kan de werkset worden weergegeven als een venster of een knop (die vaak aan de linkerkant van de IDE wordt weergegeven). Als u de werkset niet kunt vinden, klikt u op Werkset in het menu Beeld .

    Als de werkset wordt weergegeven als een knop, beweegt u de aanwijzer over de knop zodat de inhoud van de werkset wordt weergegeven.

  8. Wanneer de ontwerpweergave van een webformulier actief is, wordt de werkset onderverdeeld in secties, waaronder de Web Forms, Onderdelen, HTML en andere secties. Klik op de sectie Web Forms.

  9. Klik in de sectie Web Forms van de werkset op DataGrid en sleep deze naar de ontwerpfunctie voor WebForm1.

  10. Klik met de rechtermuisknop op WebForm1.aspx en klik vervolgens op Code weergeven om de code achter de paginabron weer te geven.

  11. Voeg de volgende instructies toe aan de bovenkant van de code-behind-pagina, boven de naamruimtesectie:

    using System.Data.OleDb;
    using System.Data;
    
  12. Markeer de volgende code, klik met de rechtermuisknop op de code en klik vervolgens op Kopiëren. Plak in WebForm1.aspx.cs de code in de Page_Load gebeurtenis:

    // Create connection string variable. Modify the "Data Source"
    // parameter as appropriate for your environment.
    String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +
    "Extended Properties=Excel 8.0;";
    
    // Create connection object by using the preceding connection string.
    OleDbConnection objConn = new OleDbConnection(sConnectionString);
    
    // Open connection with the database.
    objConn.Open();
    
    // The code to follow uses a SQL SELECT command to display the data from the worksheet.
    // Create new OleDbCommand to return data from worksheet.
    OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM myRange1", objConn);
    
    // Create new OleDbDataAdapter that is used to build a DataSet
    // based on the preceding SQL SELECT statement.
    OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
    
    // Pass the Select command to the adapter.
    objAdapter1.SelectCommand = objCmdSelect;
    
    // Create new DataSet to hold information from the worksheet.
    DataSet objDataset1 = new DataSet();
    
    // Fill the DataSet with the information from the worksheet.
    objAdapter1.Fill(objDataset1, "XLData");
    
    // Bind data to DataGrid control.
    DataGrid1.DataSource = objDataset1.Tables[0].DefaultView;
    DataGrid1.DataBind();
    
    // Clean up objects.
    objConn.Close();
    
  13. Klik in het menu Bestand op Alles opslaan om de projectbestanden op te slaan.

  14. Klik in het menu Bouwen op Bouwen om het project te bouwen. Met deze stap wordt de code op de codeachter pagina voorbereid, zodat deze kan worden uitgevoerd.

  15. Klik in Solution Explorer met de rechtermuisknop op WebForm1.aspx en klik vervolgens op Weergeven in browser om de code uit te voeren.

Aanvullende code-uitleg

In het codevoorbeeld in dit artikel wordt de Microsoft Jet OLE DB-provider gebruikt voor toegang tot het Excel-werkblad. Deze code gebruikt de volgende verbindingsreeks om verbinding te maken met het werkblad:

// Create connection string variable. Modify the "Data Source"
// parameter as appropriate for your environment.
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +
"Extended Properties=Excel 8.0;";

Zoals in de opmerkingen wordt aangegeven, moet u de padgegevens voor het specifieke Excel-werkblad wijzigen. Daarnaast moet u ook de waarde van de parameter instellen om op de Extended Properties juiste manier verbinding te maken met het bestand.

Opmerking

De verbindingsreeks maakt gebruik van de Server.MapPath functie. Deze functie neemt een pad dat relatief is ten opzichte van Microsoft Internet Information Services (IIS) naar een bestand en retourneert een vasteschijfpad naar dat bestand. In de sectie Excel-voorbeeldwerkblad maken maakt u bijvoorbeeld ExcelData.xls in de webhoofdmap, die zich meestal bevindt op C:\Inetpub\Wwwroot. Hiermee maakt u ook een submap met de naam ExcelCSTest in de map Wwwroot en een bestand met de naam WebForm1.aspx in de _ExcelCSTest_folder.

In dit voorbeeld ziet het bestandspad op de harde schijf eruit als C:\Inetpub\Wwwroot\ExcelCSTest. Wwwroot bevat ExcelData.xls, ExcelCSTest bevat WebForm1.aspx.

Het IIS-pad naar de bestanden is vergelijkbaar met C:\Web Root\ExcelCSTest. En webhoofdmap bevat ExcelData.xls, ExcelCSTestbevat WebForm1.aspx.

In dit geval is het relatieve pad van de WebForm1.aspx-pagina naar het ExcelData.xls-bestand .. /ExcelData.xls. De .. / tekens informeren IIS om één mapniveau omhoog te gaan. De code Server.MapPath("../ExcelData.xls") retourneert dus de volgende tekenreeks:

C:\Inetpub\Wwwroot\ExcelData.xls

U hoeft niet te gebruiken Server.MapPath. U kunt deze informatie ook naar een specifiek pad coden of u kunt een methode gebruiken om de locatie van het Excel-bestand op de harde schijf op te geven.

Verwijzingen

Zie Een DataSet-object vullen vanuit een database met behulp van Visual C# .NET voor meer informatie over het gebruik van ADO.NET.

Opmerking

De voorbeeldbedrijven, organisaties, producten, domeinnamen, e-mailadressen, logo's, personen, plaatsen en gebeurtenissen die hierin worden weergegeven, zijn fictief. Geen enkele koppeling met een echt bedrijf, organisatie, product, domeinnaam, e-mailadres, logo, persoon, plaatsen of gebeurtenissen is bedoeld of moet worden afgeleid.