Delen via


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

In dit artikel wordt gedemonstreerd 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
Oorspronkelijk KB-nummer: 306572

Een Excel-voorbeeldwerkblad maken

  1. Start Microsoft Excel en maak vervolgens 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ë

    Notitie

    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 waarin 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 de werkmap en klik op OK.

  6. Klik in het menu Bestand op Opslaan. Selecteer in de lijst Opslaan in de hoofdmap van de webserver (meestal).C:\InetPub\Wwwroot\ Typ ExcelData.xls in het tekstvak Bestandsnaam. 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 gegevens opvraagt en weergeeft in een Excel-werkblad. De volgende code maakt gebruik van het werkblad dat u in de vorige sectie hebt gemaakt.

  1. Open Microsoft Visual Studio .NET. De 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 .

    Notitie

    • Het tekstvak Naam is niet beschikbaar (het wordt grijs weergegeven 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 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 Weergaveontwerper 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-optie-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, verplaatst 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 webformulieren, onderdelen, HTML en andere secties. Klik op de sectie Webformulieren .

  9. Klik in de sectie Webformulieren 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 paginabron weer te geven.

  11. Voeg de volgende instructies toe aan het begin van de pagina met codeachter, boven de sectie naamruimte:

    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 Opbouwen op Build om het project te bouwen. Met deze stap wordt de code voorbereid op de pagina codeachter, 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

Het codevoorbeeld in dit artikel maakt gebruik van de Microsoft Jet OLE DB-provider voor toegang tot het Excel-werkblad. Deze code maakt gebruik van 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 de opmerkingen aangeven, moet u de padinformatie voor het specifieke Excel-werkblad wijzigen. Daarnaast moet u ook de waarde van de Extended Properties parameter instellen om correct verbinding te maken met het bestand.

Notitie

De verbindingsreeks gebruikt de Server.MapPath functie. Deze functie gebruikt een pad dat relatief is ten opzichte van Microsoft Internet Information Services (IIS) naar een bestand en retourneert een pad naar de harde schijf naar dat bestand. In de sectie Excel-voorbeeldwerkblad maken maakt u bijvoorbeeld ExcelData.xls in de hoofdmap van het web, dat zich meestal bevindt in 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 is het bestandspad op de harde schijf als C:\Inetpub\Wwwroot\ExcelCSTestvolgt. Wwwroot bevat ExcelData.xls, ExcelCSTest bevat WebForm1.aspx.

Het IIS-pad naar de bestanden is vergelijkbaar C:\Web Root\ExcelCSTest. Webhoofdmap bevat ExcelData.xls, ExcelCSTest bevat 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 op te gaan. De code Server.MapPath("../ExcelData.xls") retourneert dus de volgende tekenreeks:

C:\Inetpub\Wwwroot\ExcelData.xls

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

Verwijzingen

Zie How To Populate a DataSet Object from a Database by Using Visual C# .NET (Een DataSet-object uit een database vullen met behulp van Visual C# .NET) voor meer informatie over het gebruik van ADO.NET

Notitie

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