Odczytywanie plików Excel w ASP.NET MVC za pomocą C# z IronXL
IronXL umożliwia programistom ASP.NET MVC odczytywanie plików Excel bezpośrednio w języku C# bez zależności od pakietu Microsoft Office, konwertując dane Excel do formatu System.Data.DataTable w celu łatwego wyświetlania w widokach internetowych za pomocą zaledwie kilku linii kodu.
Szybki start: Załaduj i przekonwertuj arkusz Excel na DataTable w MVC
Ten przykład pokazuje, jak zacząć w kilka sekund: załaduj skoroszyt Excel, wybierz pierwszy arkusz i przekonwertuj go na System.Data.DataTable using IronXL — bez Interop, bez kłopotów.
-
Install IronXL with NuGet Package Manager
PM > Install-Package IronXL.Excel -
Skopiuj i uruchom ten fragment kodu.
var dataTable = IronXl.WorkBook.Load("CustomerData.xlsx").DefaultWorkSheet.ToDataTable(true); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronXL w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Zainstaluj bibliotekę C#, aby czytać pliki Excel w ASP.NET
- Załaduj i uzyskaj dostęp do docelowego arkusza w pliku Excel
- Uzyskaj dostęp do metody
ToDataTablei zwróć ją doView - Wyświetl dane Excel na stronie internetowej używając pętli
- Iteruj przez wszystkie dane i zbuduj tabelę HTML
Jak utworzyć projekt ASP.NET do odczytu Excela?
Dłączego Visual Studio 2022 działa najlepiej?
Korzystając z Visual Studio 2022, utwórz nowy projekt ASP.NET. Visual Studio 2022 zapewnia doskonałą obsługę frameworków .NET 6+, ulepszoną funkcję IntelliSense dla metod IronXL oraz lepszą wydajność podczas pracy z dużymi plikami Excel. Integracja IDE z NuGet sprawia, że instalacja IronXL jest szczególnie prosta.
Jaki szablon projektu wybrać?
Do odczytu plików Excel w ASP.NET, wybierz szablon "ASP.NET Core Web App (Model-View-Controller)". Ten szablon zapewnia czystą strukturę MVC, która oddziela przetwarzanie danych (odczyt Excela) od logiki prezentacji. Wzorzec MVC doskonale współpracuje z konwersją IronXL do DataTable, umożliwiając płynne ładowanie arkuszy kalkulacyjnych w kontrolerach i wyświetlanie ich w widokach.
Która wersja .NET jest zalecana?
IronXL działa z platformą .NET Framework 4.6.2+ oraz .NET Core 3.1+. Dla nowych projektów ASP.NET MVC używaj .NET 6.0 lub wyższej dla optymalnej wydajności i bezpieczeństwa. Te wersje oferują lepsze zarządzanie pamięcią przy przetwarzaniu dużych plików Excel oraz lepsze wsparcie async/await dla konwersji typów plików arkuszy kalkulacyjnych.
Jak zainstalować bibliotekę IronXL?
Jakie są wymagania instalacyjne?
Jaka metoda instalacji jest najszybsza?
Po utworzeniu nowego projektu zainstaluj bibliotekę IronXL. Wykonaj poniższe kroki, aby zainstalować IronXL. Otwórz konsolę menedżera pakietów NuGet i uruchom następujące polecenie:
Install-Package IronXL.Excel
Jak mogę zweryfikować instalację?
Aby sprawdzić, czy IronXL jest poprawnie zainstalowany, sprawdź zależności projektu w Eksploratorze rozwiązań. Powinieneś zobaczyć "IronXL" wymienione w "Dependencies > Packages". Dodatkowo spróbuj dodać using IronXL; na początku pliku kontrolera — IntelliSense powinno natychmiast rozpoznać przestrzeń nazw. Aby rozwiązać problemy z instalacją, odwiedź przewodnik licencyjny.
Jak odczytać plik Excel w moim kontrolerze?
Jaki kod umieścić w akcji kontrolera?
Otwórz domyślny kontroler w projekcie ASP.NET (np. HomeController.cs) i zastąp metodę Index następującym kodem:
using IronXL;
using System.Data;
public ActionResult Index()
{
// Load the Excel workbook from a specified path.
WorkBook workBook = WorkBook.Load(@"C:\Files\Customer Data.xlsx");
// Access the first worksheet from the workbook.
WorkSheet workSheet = workBook.WorkSheets.First();
// Convert the worksheet data to a DataTable object.
// The 'true' parameter uses the first row as column headers
var dataTable = workSheet.ToDataTable(true);
// Send the DataTable to the view for rendering.
return View(dataTable);
}
using IronXL;
using System.Data;
public ActionResult Index()
{
// Load the Excel workbook from a specified path.
WorkBook workBook = WorkBook.Load(@"C:\Files\Customer Data.xlsx");
// Access the first worksheet from the workbook.
WorkSheet workSheet = workBook.WorkSheets.First();
// Convert the worksheet data to a DataTable object.
// The 'true' parameter uses the first row as column headers
var dataTable = workSheet.ToDataTable(true);
// Send the DataTable to the view for rendering.
return View(dataTable);
}
Imports IronXL
Imports System.Data
Public Function Index() As ActionResult
' Load the Excel workbook from a specified path.
Dim workBook As WorkBook = WorkBook.Load("C:\Files\Customer Data.xlsx")
' Access the first worksheet from the workbook.
Dim workSheet As WorkSheet = workBook.WorkSheets.First()
' Convert the worksheet data to a DataTable object.
' The 'true' parameter uses the first row as column headers
Dim dataTable = workSheet.ToDataTable(True)
' Send the DataTable to the view for rendering.
Return View(dataTable)
End Function
Dlaczego warto używać DataTable zamiast innych formatów?
W metodzie akcji Index załaduj plik Excel za pomocą metody IronXL's Load. Ścieżka pliku Excel (w tym nazwa pliku) jest podawana jako parametr wywołania metody. Następnie wybierz pierwszy arkusz Excel jako arkusz roboczy i załaduj zawarte w nim dane do obiektu DataTable. Na koniec wyślij DataTable do frontendu.
DataTable idealnie nadaje się do ASP.NET MVC, ponieważ płynnie integruje się z widokami Razor i zapewnia wbudowaną obsługę iteracji wierszy i kolumn. W przeciwieństwie do obiektów niestandardowych, DataTable nie wymaga mapowania modeli i automatycznie obsługuje mieszane typy danych. W razie potrzeby można również wyeksportować DataSet i DataTable z powrotem do programu Excel.
A co z obsługą błędów dla brakujących plików?
Solidna obsługa błędów zapewnia, że aplikacja nie zawiesi się, gdy pliki Excel są brakujące lub uszkodzone. Oto ulepszona wersja z odpowiednią obsługą wyjątków:
public ActionResult Index()
{
try
{
string filePath = @"C:\Files\Customer Data.xlsx";
// Check if file exists before attempting to load
if (!System.IO.File.Exists(filePath))
{
ViewBag.Error = "Excel file not found at specified location.";
return View(new DataTable());
}
// Load workbook with error handling
WorkBook workBook = WorkBook.Load(filePath);
// Verify worksheet exists
if (workBook.WorkSheets.Count == 0)
{
ViewBag.Error = "No worksheets found in the Excel file.";
return View(new DataTable());
}
WorkSheet workSheet = workBook.WorkSheets.First();
var dataTable = workSheet.ToDataTable(true);
return View(dataTable);
}
catch (Exception ex)
{
// Log the exception (consider using a logging framework)
ViewBag.Error = $"Error reading Excel file: {ex.Message}";
return View(new DataTable());
}
}
public ActionResult Index()
{
try
{
string filePath = @"C:\Files\Customer Data.xlsx";
// Check if file exists before attempting to load
if (!System.IO.File.Exists(filePath))
{
ViewBag.Error = "Excel file not found at specified location.";
return View(new DataTable());
}
// Load workbook with error handling
WorkBook workBook = WorkBook.Load(filePath);
// Verify worksheet exists
if (workBook.WorkSheets.Count == 0)
{
ViewBag.Error = "No worksheets found in the Excel file.";
return View(new DataTable());
}
WorkSheet workSheet = workBook.WorkSheets.First();
var dataTable = workSheet.ToDataTable(true);
return View(dataTable);
}
catch (Exception ex)
{
// Log the exception (consider using a logging framework)
ViewBag.Error = $"Error reading Excel file: {ex.Message}";
return View(new DataTable());
}
}
Imports System.IO
Imports System.Data
Public Function Index() As ActionResult
Try
Dim filePath As String = "C:\Files\Customer Data.xlsx"
' Check if file exists before attempting to load
If Not File.Exists(filePath) Then
ViewBag.Error = "Excel file not found at specified location."
Return View(New DataTable())
End If
' Load workbook with error handling
Dim workBook As WorkBook = WorkBook.Load(filePath)
' Verify worksheet exists
If workBook.WorkSheets.Count = 0 Then
ViewBag.Error = "No worksheets found in the Excel file."
Return View(New DataTable())
End If
Dim workSheet As WorkSheet = workBook.WorkSheets.First()
Dim dataTable = workSheet.ToDataTable(True)
Return View(dataTable)
Catch ex As Exception
' Log the exception (consider using a logging framework)
ViewBag.Error = $"Error reading Excel file: {ex.Message}"
Return View(New DataTable())
End Try
End Function
Jak mogę wybrać różne arkusze?
IronXL oferuje wiele sposobów wybierania konkretnych arkuszy i pracy z nimi. Możesz uzyskać dostęp do arkuszy poprzez indeks, nazwę lub iterować przez wszystkie dostępne arkusze:
// Method 1: Select by worksheet name
WorkSheet namedSheet = workBook.GetWorkSheet("Sales Data");
// Method 2: Select by index (zero-based)
WorkSheet secondSheet = workBook.WorkSheets[1];
// Method 3: Select the default/active worksheet
WorkSheet defaultSheet = workBook.DefaultWorkSheet;
// Method 4: Iterate through all worksheets
foreach (WorkSheet sheet in workBook.WorkSheets)
{
string sheetName = sheet.Name;
// Process each worksheet
}
// Method 1: Select by worksheet name
WorkSheet namedSheet = workBook.GetWorkSheet("Sales Data");
// Method 2: Select by index (zero-based)
WorkSheet secondSheet = workBook.WorkSheets[1];
// Method 3: Select the default/active worksheet
WorkSheet defaultSheet = workBook.DefaultWorkSheet;
// Method 4: Iterate through all worksheets
foreach (WorkSheet sheet in workBook.WorkSheets)
{
string sheetName = sheet.Name;
// Process each worksheet
}
' Method 1: Select by worksheet name
Dim namedSheet As WorkSheet = workBook.GetWorkSheet("Sales Data")
' Method 2: Select by index (zero-based)
Dim secondSheet As WorkSheet = workBook.WorkSheets(1)
' Method 3: Select the default/active worksheet
Dim defaultSheet As WorkSheet = workBook.DefaultWorkSheet
' Method 4: Iterate through all worksheets
For Each sheet As WorkSheet In workBook.WorkSheets
Dim sheetName As String = sheet.Name
' Process each worksheet
Next
Jak wyświetlić dane Excel na stronie internetowej?
Jaki kod widoku jest potrzebny?
Poniższy przykład pokazuje, jak wyświetlić w przeglądarce internetowej wartość DataTable zwróconą w poprzednim przykładzie.
Plik Excel używany w tym przykładzie jest pokazany poniżej:
Plik Excel
Otwórz index.cshtml (widok indeksu) i zastąp kod następującym kodem HTML:
@{
ViewData["Title"] = "Home Page";
}
@using System.Data
@model DataTable
<div class="text-center">
<h1 class="display-4">Welcome to IronXL Read Excel MVC</h1>
</div>
@* Check for errors first *@
@if (ViewBag.Error != null)
{
<div class="alert alert-danger">
@ViewBag.Error
</div>
}
@* Display table only if data exists *@
@if (Model != null && Model.Rows.Count > 0)
{
<table class="table table-dark">
<tbody>
@foreach (DataRow row in Model.Rows)
{
<tr>
@for (int i = 0; i < Model.Columns.Count; i++)
{
<td>@row[i]</td>
}
</tr>
}
</tbody>
</table>
}
else
{
<p>No data to display.</p>
}
@{
ViewData["Title"] = "Home Page";
}
@using System.Data
@model DataTable
<div class="text-center">
<h1 class="display-4">Welcome to IronXL Read Excel MVC</h1>
</div>
@* Check for errors first *@
@if (ViewBag.Error != null)
{
<div class="alert alert-danger">
@ViewBag.Error
</div>
}
@* Display table only if data exists *@
@if (Model != null && Model.Rows.Count > 0)
{
<table class="table table-dark">
<tbody>
@foreach (DataRow row in Model.Rows)
{
<tr>
@for (int i = 0; i < Model.Columns.Count; i++)
{
<td>@row[i]</td>
}
</tr>
}
</tbody>
</table>
}
else
{
<p>No data to display.</p>
}
Dłączego używać Bootstrap do stylizacji tabel?
Powyższy kod wykorzystuje DataTable zwrócony przez metodę Index jako wzór. Każdy wiersz z tabeli jest drukowany na stronie internetowej przy użyciu pętli @for, w tym formatowania Bootstrap do dekoracji.
Bootstrap zapewnia responsywne projekty tabel, które automatycznie dostosowują się do różnych rozmiarów ekranu — kluczowe dla nowoczesnych aplikacji webowych. Klasa table-dark tworzy atrakcyjną tabelę w ciemnej kolorystyce, która jest łatwa do odczytania. W przypadku bardziej zaawansowanego formatowania w Excelu, takiego jak obramowania i wyrównanie komórek lub wzory i kolory tła, IronXL zapewnia dodatkowe metody bezpośredniego dostępu do danych strukturalnych.
Jak wygląda efekt końcowy?
Uruchomienie projektu generuje wyniki pokazane poniżej:
Tabela Bootstrap
Jak mogę dodać nagłówki do tabeli?
Aby wyświetlić nagłówki kolumn z pliku Excel, zmodyfikuj kod widoku, aby zawierał sekcję nagłówków tabeli. Podczas wywołania ToDataTable(true), IronXL automatycznie wykorzystuje pierwszy wiersz jako nazwy kolumn:
@if (Model != null && Model.Rows.Count > 0)
{
<table class="table table-dark">
<thead>
<tr>
@foreach (DataColumn column in Model.Columns)
{
<th>@column.ColumnName</th>
}
</tr>
</thead>
<tbody>
@foreach (DataRow row in Model.Rows)
{
<tr>
@for (int i = 0; i < Model.Columns.Count; i++)
{
<td>@row[i]</td>
}
</tr>
}
</tbody>
</table>
}
@if (Model != null && Model.Rows.Count > 0)
{
<table class="table table-dark">
<thead>
<tr>
@foreach (DataColumn column in Model.Columns)
{
<th>@column.ColumnName</th>
}
</tr>
</thead>
<tbody>
@foreach (DataRow row in Model.Rows)
{
<tr>
@for (int i = 0; i < Model.Columns.Count; i++)
{
<td>@row[i]</td>
}
</tr>
}
</tbody>
</table>
}
To ulepszenie wyświetla odpowiednie nagłówki kolumn, takie jak "Nazwa klienta", "Koszt wysyłki" i "Cena jednostkowa" z pliku Excel. W przypadku bardziej złożonych scenariuszy obejmujących nazwane zakresy lub nazwane tabele, IronXL zapewnia dodatkowe metody bezpośredniego dostępu do danych strukturalnych.
Często Zadawane Pytania
Jak odczytać pliki Excel w ASP.NET MVC bez pakietu Microsoft Office?
IronXL pozwala na odczytywanie plików Excel bezpośrednio w C# bez żadnych zależności od Microsoft Office. Wystarczy zainstalować IronXL za pośrednictwem NuGet, a następnie użyć WorkBook.Load(), aby otworzyć plik Excel i przekonwertować go na DataTable za pomocą zaledwie jednej linii kodu: var dataTable = IronXl.WorkBook.Load('CustomerData.xlsx').DefaultWorkSheet.ToDataTable(true);
Jaki jest najszybszy sposób konwersji danych z Excela do DataTable w ASP.NET?
IronXL udostępnia metodę ToDataTable(), która natychmiast konwertuje arkusze kalkulacyjne Excel na obiekty System.Data.DataTable. Po załadowaniu skoroszytu za pomocą IronXL należy przejść do dowolnego arkusza i wywołać metodę ToDataTable(true), aby uwzględnić nagłówki. Konwersja ta wymaga zaledwie jednej linii kodu i działa płynnie z widokami ASP.NET MVC.
Którą wersję .NET należy używać do przetwarzania plików Excel w aplikacjach internetowych?
IronXL obsługuje .NET Framework 4.6.2+ i .NET Core 3.1+. W przypadku nowych projektów ASP.NET MVC zaleca się użycie .NET 6.0 lub nowszego, ponieważ oferuje on ulepszone zarządzanie pamięcią podczas przetwarzania dużych plików Excel za pomocą IronXL oraz lepszą obsługę async/await dla operacji na arkuszach kalkulacyjnych.
Który szablon projektu Visual Studio najlepiej sprawdza się w przypadku funkcji odczytu plików Excel?
Podczas tworzenia projektu wybierz szablon „ASP.NET Core Web App (Model-View-Controller)”. Ta struktura MVC doskonale uzupełnia funkcję konwersji DataTable w IronXL, umożliwiając ładowanie i przetwarzanie plików Excel w kontrolerach przy jednoczesnym przejrzystym wyświetlaniu danych w widokach.
Jak zainstalować bibliotekę do odczytu plików Excel w moim projekcie ASP.NET?
Zainstaluj IronXL za pomocą konsoli NuGet Package Manager, uruchamiając polecenie „Install-Package IronXL.Excel”. Po instalacji sprawdź, czy biblioteka została poprawnie dodana, sprawdzając zależności projektu i dodając „using IronXL;” do kontrolera — IntelliSense powinno natychmiast rozpoznać przestrzeń nazw.

