Przejdź do treści stopki
KORZYSTANIE Z IRONXL

Jak przeglądać Excel w ASP.NET

Ten obszerny samouczek pokaże, jak zbudować przeglądarkę plików Excel przy użyciu ASP.NET MVC i IronXL. Ta przeglądarka umożliwi użytkownikom wyświetlanie, edycję i poruszanie się po plikach Excel bezpośrednio ze strony internetowej.

Czym jest IronXL?

IronXL to potężna biblioteka .NET, która zapewnia mnóstwo funkcji związanych z operacjami w programie Excel. Oferuje uproszczony interfejs API, który pozwala programistom .NET na tworzenie, edycję i odczyt dokumentów Excel w różnych formatach plików, w tym XLS, XLSX, CSV i innych.

Dzięki IronXL możesz odczytywać pliki Excel, wyodrębniać dane, dodawać lub edytować arkusze, tworzyć lub modyfikować wiersze i kolumny, stosować formuły, zapisywać zmiany i wiele więcej. Wszystkie te operacje można wykonać bez konieczności instalowania programu Microsoft Excel na komputerze.

IronXL obsługuje obrazy, stylizację, formatowanie warunkówe i inne złożone funkcje programu Excel, co czyni go kompleksowym rozwiązaniem do operacji .NET w programie Excel. Idealnie nadaje się do obsługi wymagań dotyczących źródeł danych i arkuszy kalkulacyjnych w aplikacjach ASP.NET MVC. Biblioteka IronXL będzie wykorzystywana do wyświetlania plików Excel w aplikacjach internetowych ASP.NET.

Wymagania wstępne

  • Podstawowa znajomość ASP.NET MVC
  • Visual Studio zainstalowane na Twoim komputerze
  • Zainstalowano bibliotekę IronXL. Instrukcję instalacji można znaleźć w oficjalnej dokumentacji.

Pierwsze kroki

Najpierw utwórzmy nowy projekt ASP.NET MVC w programie Visual Studio.

  1. Otwórz program Visual Studio.
  2. Kliknij Plik > Nowy > Projekt.
  3. W oknie nowego projektu wybierz szablon Aplikacja internetowa ASP.NET (.NET Framework).

    Jak wyświetlać pliki Excel w ASP.NET, rysunek 1: Utwórz nową aplikację internetową ASP.NET w programie Visual Studio Utwórz nową aplikację internetową ASP.NET w programie Visual Studio

  4. Nadaj projektowi nazwę ExcelViewer, wybierz lokalizację projektu i kliknij przycisk Utwórz.

    Jak wyświetlać pliki Excel w ASP.NET, rysunek 2: Konfiguracja projektu Skonfiguruj swój projekt

W tym artykułe skupimy się na wdrożeniu funkcji przeglądarki plików Excel w tej aplikacji ASP.NET MVC.

Dodawanie IronXL do projektu

Aby obsługiwać formaty plików Excel (takie jak .xls, .xlsx i .csv), IronXL oferuje kompleksowe funkcje do ładowania dokumentów Excel, odczytu, zapisu, a nawet modyfikacji danych Excel. Obsługuje formuły, obrazy, formatowanie i wiele więcej.

  1. Kliknij prawym przyciskiem myszy swój projekt w Eksploratorze rozwiązań i przejdź do opcji Zarządzaj pakietami NuGet.
  2. W menedżerze pakietów NuGet wyszukaj IronXl.Excel.
  3. Kliknij przycisk "Zainstaluj", aby dodać bibliotekę do projektu.

    Jak wyświetlać pliki Excel w ASP.NET, rysunek 3: Wyszukaj i zainstaluj pakiet IronXL w interfejsie użytkownika menedżera pakietów NuGet Wyszukaj i zainstaluj pakiet IronXL w interfejsie użytkownika NuGet Package Manager

Można również zainstalować IronXL za pomocą konsoli menedżera pakietów, używając następującego polecenia:

Install-Package IronXl.Excel

Jak wyświetlać pliki Excel w ASP.NET, rysunek 4: Zainstaluj pakiet IronXL z konsoli menedżera pakietów Zainstaluj pakiet IronXL z konsoli menedżera pakietów

Teraz, gdy IronXL jest już zainstalowany, przejdźmy do następnego kroku.

Tworzenie modeli

ExcelModel

Pierwszym krokiem jest utworzenie modelu danych w programie Excel. Klasa ExcelModel będzie reprezentować pojedynczy arkusz Excel i będzie zawierać nazwę arkusza oraz dane obecne w arkuszu Excel.

namespace Excel_File_Viewer_IronXl.Models
{
    public class ExcelModel
    {
        public string SheetName { get; set; }

        // Data is a list of string arrays, each array represents a row in the sheet.
        public List<string[]> Data { get; set; }
    }
}
namespace Excel_File_Viewer_IronXl.Models
{
    public class ExcelModel
    {
        public string SheetName { get; set; }

        // Data is a list of string arrays, each array represents a row in the sheet.
        public List<string[]> Data { get; set; }
    }
}
Imports System.Collections.Generic

Namespace Excel_File_Viewer_IronXl.Models
    Public Class ExcelModel
        Public Property SheetName As String

        ' Data is a list of string arrays, each array represents a row in the sheet.
        Public Property Data As List(Of String())
    End Class
End Namespace
$vbLabelText   $csharpLabel

ExcelModel jest zdefiniowany za pomocą dwóch właściwości, SheetName i Data. SheetName to prosty ciąg znaków zawierający nazwę każdego arkusza Excel. Data to lista tablic ciągów znaków służąca do przechowywania danych każdego wiersza w arkuszu Excel.

ExcelViewModel

Następnie utwórzmy ExcelViewModel. Ten model jest opakowaniem zawierającym plik, komunikat oraz listę ExcelModel, która reprezentuje dane ze wszystkich arkuszy w pliku.

using Microsoft.AspNetCore.Http;
using System.Collections.Generic;

namespace Excel_File_Viewer_IronXl.Models
{
    public class ExcelViewModel
    {
        public IFormFile File { get; set; }  // For uploading Excel file
        public string Message { get; set; }  // Message for storing success/error messages
        public List<ExcelModel> ExcelData { get; set; }  // List to store data from all sheets
    }
}
using Microsoft.AspNetCore.Http;
using System.Collections.Generic;

namespace Excel_File_Viewer_IronXl.Models
{
    public class ExcelViewModel
    {
        public IFormFile File { get; set; }  // For uploading Excel file
        public string Message { get; set; }  // Message for storing success/error messages
        public List<ExcelModel> ExcelData { get; set; }  // List to store data from all sheets
    }
}
Imports Microsoft.AspNetCore.Http
Imports System.Collections.Generic

Namespace Excel_File_Viewer_IronXl.Models
    Public Class ExcelViewModel
        Public Property File As IFormFile ' For uploading Excel file
        Public Property Message As String ' Message for storing success/error messages
        Public Property ExcelData As List(Of ExcelModel) ' List to store data from all sheets
    End Class
End Namespace
$vbLabelText   $csharpLabel

Ta klasa będzie używana jako model widoku. Posiada właściwość IFormFile do przesyłania plików, ciąg znaków Message do wyświetlania wszelkich komunikatów oraz List<ExcelModel> do przechowywania pobranych danych z programu Excel.

5. Utwórz ExcelController, aby wczytać pliki Excel w celu wyodrębnienia danych

Następnie utwórz nowy ExcelController. To właśnie tutaj dzieje się magia! Pliki Excel są ładowane za pomocą funkcji WorkBook.Load biblioteki IronXL, która przechodzi przez arkusze, wyodrębnia dane i dodaje je do ExcelViewModel.

using Excel_File_Viewer_IronXl.Models;
using IronXL;
using System.Collections.Generic;
using System.Web.Mvc;
using System;
using System.Linq;

public class ExcelController : Controller
{
    // GET: Excel
    public ActionResult Index()
    {
        var model = new ExcelViewModel();

        // Define the file path for the Excel file
        string filePath = Server.MapPath("~/App_Data/Test.xlsx"); 

        // List to store data for each sheet
        List<ExcelModel> data = new List<ExcelModel>();

        try
        {
            // Load workbook directly from a file path
            var workbook = WorkBook.Load(filePath);

            // Loop through all worksheets in the workbook
            foreach (var worksheet in workbook.WorkSheets)
            {
                // Add each worksheet's name and data to the data list
                data.Add(new ExcelModel
                {
                    SheetName = worksheet.Name,
                    Data = worksheet.Rows.Select(r => r.ToArray().Select(c => c.Value.ToString()).ToArray()).ToList()
                });
            }

            model.ExcelData = data;
            model.Message = "File processed successfully!";
        }
        catch (Exception ex)
        {
            model.Message = $"Error occurred while processing file: {ex.Message}";
        }

        return View(model);
    }
}
using Excel_File_Viewer_IronXl.Models;
using IronXL;
using System.Collections.Generic;
using System.Web.Mvc;
using System;
using System.Linq;

public class ExcelController : Controller
{
    // GET: Excel
    public ActionResult Index()
    {
        var model = new ExcelViewModel();

        // Define the file path for the Excel file
        string filePath = Server.MapPath("~/App_Data/Test.xlsx"); 

        // List to store data for each sheet
        List<ExcelModel> data = new List<ExcelModel>();

        try
        {
            // Load workbook directly from a file path
            var workbook = WorkBook.Load(filePath);

            // Loop through all worksheets in the workbook
            foreach (var worksheet in workbook.WorkSheets)
            {
                // Add each worksheet's name and data to the data list
                data.Add(new ExcelModel
                {
                    SheetName = worksheet.Name,
                    Data = worksheet.Rows.Select(r => r.ToArray().Select(c => c.Value.ToString()).ToArray()).ToList()
                });
            }

            model.ExcelData = data;
            model.Message = "File processed successfully!";
        }
        catch (Exception ex)
        {
            model.Message = $"Error occurred while processing file: {ex.Message}";
        }

        return View(model);
    }
}
Imports Excel_File_Viewer_IronXl.Models
Imports IronXL
Imports System.Collections.Generic
Imports System.Web.Mvc
Imports System
Imports System.Linq

Public Class ExcelController
    Inherits Controller

    ' GET: Excel
    Public Function Index() As ActionResult
        Dim model As New ExcelViewModel()

        ' Define the file path for the Excel file
        Dim filePath As String = Server.MapPath("~/App_Data/Test.xlsx")

        ' List to store data for each sheet
        Dim data As New List(Of ExcelModel)()

        Try
            ' Load workbook directly from a file path
            Dim workbook = WorkBook.Load(filePath)

            ' Loop through all worksheets in the workbook
            For Each worksheet In workbook.WorkSheets
                ' Add each worksheet's name and data to the data list
                data.Add(New ExcelModel With {
                    .SheetName = worksheet.Name,
                    .Data = worksheet.Rows.Select(Function(r) r.ToArray().Select(Function(c) c.Value.ToString()).ToArray()).ToList()
                })
            Next

            model.ExcelData = data
            model.Message = "File processed successfully!"
        Catch ex As Exception
            model.Message = $"Error occurred while processing file: {ex.Message}"
        End Try

        Return View(model)
    End Function
End Class
$vbLabelText   $csharpLabel

W tym miejscu zainicjuj ExcelViewModel, a następnie załadować WorkBook za pomocą IronXL, przejść przez każdy WorkSheet i dla każdego WorkSheet utworzyć ExcelModel z nazwą i danymi arkusza. Następnie ExcelModel jest dodawane do listy ExcelData w ExcelViewModel.

Dane z poniższego pliku Excel zostaną załadowane i wyświetlone:

Jak wyświetlać pliki Excel w ASP.NET, rysunek 5: Przykładowy plik Excel Przykładowy plik Excel

6. Utwórz widok

W katalogu Views/Excel utwórz nowy plik HTML Index.cshtml, aby wyświetlić dane z Excela. Następnie użyj nav-tabs Bootstrapa, aby przedstawić każdy arkusz w pliku Excel. Każdy arkusz będzie osobną kartą, a zawartość karty będzie stanowić dane arkusza.

@model Excel_File_Viewer_IronXl.Models.ExcelViewModel

@{
    ViewBag.Title = "Index";
}

<h2>Excel File Viewer</h2>

@if (Model.ExcelData != null)
{
    <ul class="nav nav-tabs" id="myTab" role="tablist">
        @for (int i = 0; i < Model.ExcelData.Count; i++)
        {
            <li class="nav-item">
                <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected="@(i == 0)">
                    @Model.ExcelData[i].SheetName
                </a>
            </li>
        }
    </ul>
    <div class="tab-content" id="myTabContent">
        @for (int i = 0; i < Model.ExcelData.Count; i++)
        {
            <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i">
                <table class="table table-bordered">
                    @foreach (var row in Model.ExcelData[i].Data)
                    {
                        <tr>
                            @foreach (var cell in row)
                            {
                                <td>@cell</td>
                            }
                        </tr>
                    }
                </table>
            </div>
        }
    </div>
}
@model Excel_File_Viewer_IronXl.Models.ExcelViewModel

@{
    ViewBag.Title = "Index";
}

<h2>Excel File Viewer</h2>

@if (Model.ExcelData != null)
{
    <ul class="nav nav-tabs" id="myTab" role="tablist">
        @for (int i = 0; i < Model.ExcelData.Count; i++)
        {
            <li class="nav-item">
                <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected="@(i == 0)">
                    @Model.ExcelData[i].SheetName
                </a>
            </li>
        }
    </ul>
    <div class="tab-content" id="myTabContent">
        @for (int i = 0; i < Model.ExcelData.Count; i++)
        {
            <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i">
                <table class="table table-bordered">
                    @foreach (var row in Model.ExcelData[i].Data)
                    {
                        <tr>
                            @foreach (var cell in row)
                            {
                                <td>@cell</td>
                            }
                        </tr>
                    }
                </table>
            </div>
        }
    </div>
}
$vbLabelText   $csharpLabel

W tym przykładzie kodu nav nav-tabs wygeneruje listę zakładek, z których każda reprezentuje arkusz z pliku Excel. Odpowiednia zawartość zakładki wyświetli dane danego arkusza w formacie tabeli. Po wprowadzeniu pewnych zmian dodano przycisk przeglądania, umożliwiający ręczny wybór pliku Excel.

Uruchamianie programu

Po wykonaniu wszystkich kroków i prawidłowym skonfigurowaniu projektu nadszedł czas, aby go uruchomić. Powinna pojawić się strona internetowa z zakładkami o nazwach odpowiadających nazwom arkuszy w pliku Excel. Kliknięcie na zakładkę spowoduje wyświetlenie danych z danego arkusza w formie tabeli.

Jak wyświetlać pliki Excel w ASP.NET, rysunek 6: Przeglądarka Excel Przeglądarka Excel

Wnioski

Właśnie stworzyłeś przeglądarkę plików Excel dla ASP.NET przy użyciu IronXL! Ta potężna biblioteka umożliwia użytkownikom pracę z plikami Excel w bardziej wydajny i łatwiejszy w zarządzaniu sposób. Dzięki IronXL praca z plikami Excel w środowisku .NET nigdy nie była łatwiejsza.

IronXL oferuje bezpłatną wersję próbną, która pozwala zapoznać się z jego rozbudowaną funkcjonalnością bez ponoszenia żadnych kosztów z góry. Po przetestowaniu programu i stwierdzeniu, że jest to idealne rozwiązanie dla Twoich potrzeb, cena licencji zaczyna się od $799.

Często Zadawane Pytania

Jak mogę stworzyć przeglądarkę plików Excel przy użyciu ASP.NET MVC?

Możesz stworzyć przeglądarkę plików Excel przy użyciu ASP.NET MVC, zakładając nowy projekt w Visual Studio i dodając bibliotekę IronXL za pośrednictwem menedżera pakietów NuGet. Pozwala to na ładowanie, wyświetlanie i edycję plików Excel bezpośrednio w aplikacji internetowej.

Jakie kroki należy wykonać, aby skonfigurować projekt ASP.NET MVC do obsługi plików Excel?

Aby skonfigurować projekt ASP.NET MVC do obsługi plików Excel, otwórz Visual Studio, utwórz nowy projekt aplikacji internetowej ASP.NET i zainstaluj bibliotekę IronXL za pośrednictwem NuGet. Następnie zaimplementuj modele, takie jak ExcelModel i ExcelViewModel, do zarządzania danymi Excel, oraz użyj ExcelController do ładowania i przetwarzania plików Excel.

Czy mogę wyświetlać wiele arkuszy Excel w aplikacji ASP.NET?

Tak, w aplikacji ASP.NET można wyświetlać wiele arkuszy Excel, używając IronXL do załadowania pliku Excel, a następnie wykorzystując nav-tabs Bootstrapa do utworzenia oddzielnych zakładek dla każdego arkusza, wyświetlając dane w formacie tabeli.

Jak załadować i przetworzyć plik Excel w ASP.NET przy użyciu biblioteki .NET?

W ASP.NET można załadować i przetworzyć plik Excel za pomocą metody WorkBook.Load biblioteki IronXL. Metoda ta pozwala odczytać plik Excel, przeglądać jego arkusze i wyodrębnić dane w celu wyświetlenia lub dalszej obróbki.

Jakie są zalety korzystania z IronXL for .NET do operacji w Excelu?

IronXL oferuje kilka zalet w zakresie operacji z plikami Excel w środowisku .NET, w tym obsługę różnych formatów plików Excel, możliwość manipulowania złożonymi funkcjami programu Excel, takimi jak obrazy i formatowanie warunkowe, oraz korzyść wynikającą z braku konieczności instalowania programu Microsoft Excel na serwerze.

Jak rozwiązywać typowe problemy podczas tworzenia przeglądarki plików Excel dla ASP.NET?

Typowe problemy związane z tworzeniem przeglądarki plików Excel dla ASP.NET można rozwiązać, upewniając się, że biblioteka IronXL jest poprawnie zainstalowana za pośrednictwem NuGet, sprawdzając, czy wszystkie niezbędne modele i kontrolery są prawidłowo zaimplementowane, oraz upewniając się, że pliki Excel są w obsługiwanym formacie.

Czy można edytować pliki Excel bezpośrednio ze strony internetowej ASP.NET?

Tak, za pomocą biblioteki IronXL można edytować pliki Excel bezpośrednio ze strony internetowej ASP.NET. Biblioteka pozwala na ładowanie plików Excel do aplikacji internetowej, modyfikowanie danych i płynne zapisywanie zmian z powrotem do pliku.

Czy IronXL obsługuje zarówno odczyt, jak i zapis plików Excel?

Tak, IronXL obsługuje zarówno odczyt, jak i zapis plików Excel. Można go używać do odczytu danych z istniejących dokumentów Excel oraz zapisywania nowych danych lub zmian w plikach Excel w wielu formatach, w tym XLS, XLSX i CSV.

Jakie modele należy utworzyć do zarządzania danymi Excel w aplikacji ASP.NET MVC?

W aplikacji ASP.NET MVC należy utworzyć modele, takie jak ExcelModel do reprezentowania poszczególnych arkuszy Excel oraz ExcelViewModel do zarządzania zbiorem arkuszy oraz obsługi przesyłania plików i komunikacji.

Jak mogę przetestować funkcje IronXL przed zakupem?

Możesz przetestować funkcje IronXL, pobierając bezpłatną wersję próbną dostępną na ich stronie internetowej. Ta wersja próbna pozwala bez żadnych początkowych kosztów zapoznać się z możliwościami biblioteki IronXL w zakresie obsługi plików Excel w aplikacjach .NET.

Jordi Bardia
Inżynier oprogramowania
Jordi jest najbardziej biegły w Pythonie, C# i C++. Kiedy nie wykorzystuje swoich umiejętności w Iron Software, programuje gry. Dzieląc odpowiedzialność za testowanie produktów, rozwój produktów i badania, Jordi wnosi ogromną wartość do ciągłej poprawy produktów. Różnorodne doświadczenia ...
Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie