Jak odczytać plik Excel w Blazorze przy użyciu języka C#

Blazor Read Excel File in C# Using IronXL (Example Tutorial)

This article was translated from English: Does it need improvement?
Translated
View the article in English

Wprowadzenie

Blazor to otwartoźródłowy .NET Web framework stworzony przez Microsoft. Aplikacja Blazor działa poprzez kompilowanie kodu C# do zgodnego z przeglądarką JavaScript i HTML. W tym tutorialu podzielę się wiedzą na temat najlepszego i najprostszego sposobu odczytywania dokumentów/arkuszy Excel w aplikacji Blazor działającej po stronie serwera przy użyciu biblioteki IronXL C#.

Demonstration of IronXL Viewing Excel in Blazor

Rozpocznij pracę z IronXL


Krok 1 - Utwórz projekt Blazor w Visual Studio

Mam plik XLSX zawierający poniższe dane, które będę czytać i otwieram w aplikacji Blazor Server:

Wejściowy arkusz Excel XLSX Wynik w przeglądarce Blazor Server
Imię Nazwisko ID
John Applesmith 1
Richard Smith 2
Sherry Robins 3
Browser View related to Krok 1 - Utwórz projekt Blazor w Visual Studio

Rozpocznij od utworzenia projektu Blazor z IDE Visual Studio:

New Project related to Krok 1 - Utwórz projekt Blazor w Visual Studio

Wybierz typ projektu Blazor Server App:

Choose Blazor Project Type related to Krok 1 - Utwórz projekt Blazor w Visual Studio

Uruchom aplikację bez zmiany rozwiązania za pomocą klawisza F5. Przejdź do zakładki Fetch data aplikacji w następujący sposób:

First Run related to Krok 1 - Utwórz projekt Blazor w Visual Studio

Naszym celem będzie załadowanie pliku Excel do aplikacji Blazor za pomocą przycisku do przesyłania, a następnie wyświetlenie go na tej stronie.

Krok 2 - Dodaj IronXL do swojego rozwiązania

IronXL: .NET Excel Library (Instrukcja instalacji):

IronXL to biblioteka .NET, która pozwala traktować arkusz kalkulacyjny w Microsoft Excel jak obiekt, umożliwiając deweloperowi użycie pełnej mocy C# i .NET Framework do manipulacji strumieniami danych. Jako deweloper chcemy mieć dobry sposób na pobieranie informacji o każdej komórce i kolumnie z dokumentów/arkuszy Excel do naszych aplikacji lub baz danych.

Dzięki IronXL możliwe jest uzyskanie wszelkiego rodzaju informacji z arkusza, takich jak wartości komórek, zawartość komórek, obrazy, odniesienia i formatowanie. IronXL jest lepszy niż NPOI w wielu aspektach. IronXL dostarcza więcej funkcji i może ułatwić pisanie skomplikowanej logiki. Posiada również bardziej preferowane licencje, a zespół wsparcia jest bardziej kompetentny.

IronXL obsługuje wszystkie najnowsze wersje .NET (8, 7 i 6) oraz .NET Core Framework 4.6.2+.

Dodaj IronXL do swojego rozwiązania za pomocą jednej z poniższych metod, a następnie zbuduj rozwiązanie.

Opcja 2A - Użyj Menedżera Pakietów NuGet

Install-Package IronXl.Excel

Opcja 2B - Dodaj PackageReference w pliku csproj

Możesz dodać IronXL bezpośrednio do swojego projektu, dodając poniższą linię do dowolnego <ItemGroup> w pliku .csproj twojego rozwiązania:

<PackageReference Include="IronXl.Excel" Version="*" />
<PackageReference Include="IronXl.Excel" Version="*" />
XML

Jak pokazano tutaj w Visual Studio:

Add Ironxl Csproj related to Opcja 2B - Dodaj PackageReference w pliku csproj

Krok 3 - Kodowanie przesyłania plików i widoku

W widoku rozwiązania Visual Studio przejdź do folderu Pages/ i znajdź plik FetchData.razor. Możesz użyć dowolnego innego pliku razor, ale użyjemy tego, ponieważ jest dostarczany z szablonem aplikacji Blazor Server.

Zastąp zawartość pliku poniższym kodem:

@using IronXL;
@using System.Data;

@page "/fetchdata"

<PageTitle>Excel File Viewer</PageTitle>

<h1>Open Excel File to View</h1>

<InputFile OnChange="@OpenExcelFileFromDisk" />

<table>
    <thead>
        <tr>
            @foreach (DataColumn column in displayDataTable.Columns)
            {
                <th>
                    @column.ColumnName
                </th>
            }
        </tr>
    </thead>
    <tbody>
        @foreach (DataRow row in displayDataTable.Rows)
        {
            <tr>
                @foreach (DataColumn column in displayDataTable.Columns)
                {
                    <td>
                        @row[column.ColumnName].ToString()
                    </td>
                }
            </tr>
        }
    </tbody>
</table>

@code {
    // Create a DataTable instance
    private DataTable displayDataTable = new DataTable();

    // This method is triggered when a file is uploaded
    async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
    {
        IronXl.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";

        // Load the uploaded file into a MemoryStream
        MemoryStream ms = new MemoryStream();

        await e.File.OpenReadStream().CopyToAsync(ms);
        ms.Position = 0;

        // Create an IronXL workbook from the MemoryStream
        WorkBook loadedWorkBook = WorkBook.FromStream(ms);
        WorkSheet loadedWorkSheet = loadedWorkBook.DefaultWorkSheet; // Or use .GetWorkSheet()

        // Add header Columns to the DataTable
        RangeRow headerRow = loadedWorkSheet.GetRow(0);
        for (int col = 0; col < loadedWorkSheet.ColumnCount; col++)
        {
            displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString());
        }

        // Populate the DataTable with data from the Excel sheet
        for (int row = 1; row < loadedWorkSheet.RowCount; row++)
        {
            IEnumerable<string> excelRow = loadedWorkSheet.GetRow(row).ToArray().Select(c => c.ToString());
            displayDataTable.Rows.Add(excelRow.ToArray());
        }
    }
}
@using IronXL;
@using System.Data;

@page "/fetchdata"

<PageTitle>Excel File Viewer</PageTitle>

<h1>Open Excel File to View</h1>

<InputFile OnChange="@OpenExcelFileFromDisk" />

<table>
    <thead>
        <tr>
            @foreach (DataColumn column in displayDataTable.Columns)
            {
                <th>
                    @column.ColumnName
                </th>
            }
        </tr>
    </thead>
    <tbody>
        @foreach (DataRow row in displayDataTable.Rows)
        {
            <tr>
                @foreach (DataColumn column in displayDataTable.Columns)
                {
                    <td>
                        @row[column.ColumnName].ToString()
                    </td>
                }
            </tr>
        }
    </tbody>
</table>

@code {
    // Create a DataTable instance
    private DataTable displayDataTable = new DataTable();

    // This method is triggered when a file is uploaded
    async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
    {
        IronXl.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";

        // Load the uploaded file into a MemoryStream
        MemoryStream ms = new MemoryStream();

        await e.File.OpenReadStream().CopyToAsync(ms);
        ms.Position = 0;

        // Create an IronXL workbook from the MemoryStream
        WorkBook loadedWorkBook = WorkBook.FromStream(ms);
        WorkSheet loadedWorkSheet = loadedWorkBook.DefaultWorkSheet; // Or use .GetWorkSheet()

        // Add header Columns to the DataTable
        RangeRow headerRow = loadedWorkSheet.GetRow(0);
        for (int col = 0; col < loadedWorkSheet.ColumnCount; col++)
        {
            displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString());
        }

        // Populate the DataTable with data from the Excel sheet
        for (int row = 1; row < loadedWorkSheet.RowCount; row++)
        {
            IEnumerable<string> excelRow = loadedWorkSheet.GetRow(row).ToArray().Select(c => c.ToString());
            displayDataTable.Rows.Add(excelRow.ToArray());
        }
    }
}
Imports IronXL
Imports System.Data

@page "/fetchdata"

<PageTitle>Excel File Viewer</PageTitle>

<h1>Open Excel File to View</h1>

<InputFile OnChange="@OpenExcelFileFromDisk" />

<table>
    <thead>
        <tr>
            @For Each column As DataColumn In displayDataTable.Columns
                <th>
                    @column.ColumnName
                </th>
            Next
        </tr>
    </thead>
    <tbody>
        @For Each row As DataRow In displayDataTable.Rows
            <tr>
                @For Each column As DataColumn In displayDataTable.Columns
                    <td>
                        @row(column.ColumnName).ToString()
                    </td>
                Next
            </tr>
        Next
    </tbody>
</table>

@code {
    ' Create a DataTable instance
    Private displayDataTable As New DataTable()

    ' This method is triggered when a file is uploaded
    Private Async Function OpenExcelFileFromDisk(e As InputFileChangeEventArgs) As Task
        IronXl.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY"

        ' Load the uploaded file into a MemoryStream
        Dim ms As New MemoryStream()

        Await e.File.OpenReadStream().CopyToAsync(ms)
        ms.Position = 0

        ' Create an IronXL workbook from the MemoryStream
        Dim loadedWorkBook As WorkBook = WorkBook.FromStream(ms)
        Dim loadedWorkSheet As WorkSheet = loadedWorkBook.DefaultWorkSheet ' Or use .GetWorkSheet()

        ' Add header Columns to the DataTable
        Dim headerRow As RangeRow = loadedWorkSheet.GetRow(0)
        For col As Integer = 0 To loadedWorkSheet.ColumnCount - 1
            displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString())
        Next

        ' Populate the DataTable with data from the Excel sheet
        For row As Integer = 1 To loadedWorkSheet.RowCount - 1
            Dim excelRow As IEnumerable(Of String) = loadedWorkSheet.GetRow(row).ToArray().Select(Function(c) c.ToString())
            displayDataTable.Rows.Add(excelRow.ToArray())
        Next
    End Function
}
$vbLabelText   $csharpLabel

Podsumowanie

Komponent <InputFile> pozwala przesyłać plik na tę stronę. Ustawiliśmy wywoływane zdarzenie zwrotne, aby wywołać OpenExcelFileFromDisk, co jest asynchroniczną metodą w bloku @code na dole. HTML wyświetli arkusz Excel jako tabelę na zakładce.

IronXl.Excel to samodzielna biblioteka oprogramowania .NET do odczytu szerokiej gamy formatów arkuszy kalkulacyjnych. Nie wymaga zainstalowanego Microsoft Excel i nie jest zależny od Interop.


Dalsza lektura

Documentation related to Dalsza lektura

Zobacz Dokumentację API

Przeglądaj Dokumentację API dla IronXL, opisującą szczegóły wszystkich funkcji, przestrzeni nazw, klas, metod, pól i wyliczników IronXL.

Zobacz Dokumentację API

Pobierz produkt oprogramowania.

Często Zadawane Pytania

Jak mogę odczytać pliki Excel w aplikacji Blazor po stronie serwera?

Aby odczytać pliki Excel w aplikacji Blazor po stronie serwera, można użyć biblioteki IronXL w języku C#. Umożliwia ona łatwą integrację z projektem Blazor, instalując bibliotekę za pomocą Menedżera pakietów NuGet, a następnie implementując kod do odczytywania i wyświetlania danych Excel.

Jakie są kroki, aby skonfigurować projekt Blazor do odczytu plików Excel?

Najpierw zainstaluj IronXL za pomocą Menedżera pakietów NuGet. Następnie utwórz przycisk do przesyłania plików w aplikacji Blazor. Użyj IronXL do odczytania przesłanego pliku Excel i skonfiguruj aplikację, aby wyświetlała dane w tabeli, używając komponentów Razor.

Czy możliwe jest odczytywanie plików Excel w aplikacji Blazor bez zainstalowanego Excela?

Tak, z IronXL można odczytywać i manipulować plikami Excel w aplikacji Blazor bez posiadania zainstalowanego Microsoft Excel na systemie.

Jak mogę wyświetlać dane Excel w aplikacji Blazor?

Po odczytaniu pliku Excel za pomocą IronXL, można użyć komponentów Razor w aplikacji Blazor, aby wyświetlać dane w formacie tabeli, ulepszając interfejs użytkownika.

Jakie korzyści oferuje IronXL w porównaniu do innych bibliotek Excel?

IronXL oferuje rozległą funkcjonalność, łatwość obsługi skomplikowanej logiki, lepsze warunki licencyjne oraz dedykowane wsparcie, co czyni ją lepszym wyborem w porównaniu do alternatyw jak NPOI.

Jakie wersje .NET są wspierane przez IronXL do manipulacji Excel?

IronXL obsługuje wszystkie najnowsze wersje .NET, w tym 8, 7 i 6, a także .NET Core Framework 4.6.2+, zapewniając szeroką kompatybilność z nowoczesnymi aplikacjami.

Jak zintegrować bibliotekę Excel z moim projektem Blazor?

Możesz zintegrować bibliotekę Excel, taką jak IronXL, z projektem Blazor, używając Menedżera pakietów NuGet z komendą dotnet add package IronXl.Excel lub dodając PackageReference w pliku .csproj.

Jakie kroki należy podjąć, jeśli moja aplikacja Blazor nie odczytuje pliku Excel?

Upewnij się, że IronXL jest poprawnie zainstalowany przez NuGet i że aplikacja Blazor ma odpowiednie uprawnienia do odczytywania plików z dysku. Sprawdź dokładnie ścieżkę pliku Excel i upewnij się, że format pliku jest obsługiwany przez IronXL.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 1,950,735 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronXl.Excel
uruchom próbkę zobacz, jak Twoje dane stają się arkuszem.