Read Excel Files in ASP.NET MVC Using C# with IronXL
IronXL umożliwia programistom ASP.NET MVC czytanie plików Excel bezpośrednio w C# bez zależności od Microsoft Office, konwertując dane Excel na System.Data.DataTable do łatwego wyświetlania w widokach webowych przy użyciu 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 jego pierwszy arkusz i przekonwertuj go na System.Data.DataTable używając IronXL — bez Interop, bez problemó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?
Dlaczego Visual Studio 2022 działa najlepiej?
Korzystając z Visual Studio 2022, utwórz nowy projekt ASP.NET. Visual Studio 2022 zapewnia doskonałe wsparcie dla frameworków .NET 6+, ulepszoną inteligentną pomoc dla metod IronXL oraz lepszą wydajność przy pracy z dużymi plikami Excel. Integracja NuGet w IDE czyni instalację IronXL szczególnie prostą.
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 na DataTable, pozwalając na ładowanie arkuszy w kontrolerach i wyświetlanie ich w widokach bezproblemowo.
Która wersja .NET jest zalecana?
IronXL współpracuje z .NET Framework 4.6.2+ i .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. Postępuj zgodnie z tymi krokami, 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 zweryfikować poprawne zainstalowanie IronXL, 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 swoim 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 używać DataTable zamiast innych formatów?
W metodzie akcji Index, załaduj plik Excel używając metody IronXL z 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 końcu wyślij DataTable na frontend.
DataTable jest idealne dla ASP.NET MVC, ponieważ bezproblemowo integruje się z widokami Razor i zapewnia wbudowane wsparcie dla iteracji przez wiersze i kolumny. W przeciwieństwie do obiektów niestandardowych, DataTable nie wymaga mapowania modeli i automatycznie obsługuje mieszane typy danych. Możesz również eksportować DataSet i DataTable z powrotem do Excela, gdy jest to potrzebne.
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 zapewnia wiele sposobów na wybór i pracę z konkretnymi arkuszami. 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?
Kolejny przykład pokazuje, jak wyświetlić DataTable zwrócone w poprzednim przykładzie w przeglądarce internetowej.
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>
}
Dlaczego używać Bootstrap do stylizacji tabel?
Powyższy kod używa DataTable zwróconego z metody Index jako modelu. Każdy wiersz z tabeli jest drukowany na stronie internetowej przy użyciu pętli @for, obejmując formatowanie Bootstrap dla 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ą, ciemnotematową tabelę, która jest łatwa do odczytania. Dla bardziej zaawansowanego formatowania Excela, jak obramowania komórek i wyrównanie lub wzory tła i kolory, IronXL dostarcza dodatkowe metody dostępu do danych strukturalnych bezpośrednio.
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ływania ToDataTable(true), IronXL automatycznie używa pierwszego wiersza jako nazw 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 prawidłowe nagłówki kolumn takie jak "Nazwa Klienta", "Koszt Wysyłki" i "Cena Jednostkowa" z twojego pliku Excel. Dla bardziej skomplikowanych scenariuszy obejmujących nazwane zakresy lub nazwane tabele, IronXL dostarcza dodatkowe metody dostępu do danych strukturalnych bezpośrednio.
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.

