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.
- Otwórz program Visual Studio.
- Kliknij Plik > Nowy > Projekt.
-
W oknie nowego projektu wybierz szablon Aplikacja internetowa ASP.NET (.NET Framework).
Utwórz nową aplikację internetową ASP.NET w programie Visual Studio -
Nadaj projektowi nazwę ExcelViewer, wybierz lokalizację projektu i kliknij przycisk Utwórz.
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.
- Kliknij prawym przyciskiem myszy swój projekt w Eksploratorze rozwiązań i przejdź do opcji Zarządzaj pakietami NuGet.
- W menedżerze pakietów NuGet wyszukaj IronXl.Excel.
-
Kliknij przycisk "Zainstaluj", aby dodać bibliotekę do projektu.
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
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
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
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
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:
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>
}
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.
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.




