# Tworzenie, odczytywanie i edytowanie plików Excel w .NET MAUI
## Wprowadzenie
*Przewodnik pokazuje, jak tworzyć i odczytywać pliki Excel w aplikacjach .NET MAUI dla systemu Windows z wykorzystaniem IronXL. Zaczynajmy.*
## IronXL: Biblioteka Excel dla C#
IronXL to biblioteka C# .NET do odczytywania, zapisywania i manipulacji plikami Excel. Pozwala użytkownikom tworzyć dokumenty Excel od podstaw, w tym zawartość i wygląd arkusza, oraz metadane jak tytuł i autor. Biblioteka wspiera również funkcje dostosowywania interfejsu użytkownika, takie jak ustawianie marginesów, orientacji, rozmiaru strony, obrazów itp. Nie wymaga żadnych zewnętrznych frameworków, integracji platform ani innych bibliotek firm trzecich do generowania plików Excel. Jest samodzielnym i odizolowanym rozwiązaniem.
<div class="hsg-featured-snippet">
<h2>Jak odczytywać pliki Excel w .NET MAUI</h2>
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronXL.Excel/">Zainstaluj bibliotekę C# do odczytu plików Excel</a></li>
<li>Upewnij się, że wszystkie pakiety wymagane do uruchomienia aplikacji MAUI są zainstalowane</li>
<li>Twórz pliki Excel z intuicyjnymi API w Maui</li>
<li>Ładowanie i przeglądanie plików Excel w przeglądarce</li>
<li>Zapisz i eksportuj pliki Excel</li>
</ol>
</div>
## Zainstaluj IronXL
---------------------------
Aby zainstalować IronXL, możesz użyć konsoli Package Manager NuGet w Visual Studio. Otwórz konsolę i wprowadź następujące polecenie, aby zainstalować bibliotekę IronXL.
```shell
:ProductInstall
```
## Tworzenie plików Excel w C# przy użyciu IronXL
### Zaprojektuj frontend aplikacji
Otwórz stronę XAML o nazwie `MainPage.xaml` i zamień kod w niej na następujący fragment kodu.
```xml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MAUI_IronXl.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Label
Text="Welcome to .NET Multi-platform App UI"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome Multi-platform App UI"
FontSize="18"
HorizontalOptions="Center" />
<Button
x:Name="createBtn"
Text="Create Excel File"
SemanticProperties.Hint="Click on the button to create Excel file"
Clicked="CreateExcel"
HorizontalOptions="Center" />
<Button
x:Name="readExcel"
Text="Read and Modify Excel file"
SemanticProperties.Hint="Click on the button to read Excel file"
Clicked="ReadExcel"
HorizontalOptions="Center" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
```
Powyższy kod tworzy układ dla naszej podstawowej aplikacji .NET MAUI. Tworzy jeden etykietę i dwa przyciski. Jeden przycisk służy do tworzenia pliku Excel, a drugi zapewnia wsparcie dla odczytu i modyfikacji pliku Excel. Oba elementy są zagnieżdżone w elemencie rodzicu VerticalStackLayout, dzięki czemu będą wyświetlane w pionie na wszystkich obsługiwanych urządzeniach.
### Twórz pliki Excel
Czas na stworzenie pliku Excel z wykorzystaniem IronXL. Otwórz plik `MainPage.xaml.cs` i napisz następującą metodę w pliku.
```csharp
private void CreateExcel(object sender, EventArgs e)
{
// Create a new Workbook
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Create a Worksheet
var sheet = workbook.CreateWorkSheet("2022 Budget");
// Set cell headers
sheet["A1"].Value = "January";
sheet["B1"].Value = "February";
sheet["C1"].Value = "March";
sheet["D1"].Value = "April";
sheet["E1"].Value = "May";
sheet["F1"].Value = "June";
sheet["G1"].Value = "July";
sheet["H1"].Value = "August";
// Fill worksheet cells with random values
Random r = new Random();
for (int i = 2; i <= 11; i++)
{
sheet["A" + i].Value = r.Next(1, 1000);
sheet["B" + i].Value = r.Next(1000, 2000);
sheet["C" + i].Value = r.Next(2000, 3000);
sheet["D" + i].Value = r.Next(3000, 4000);
sheet["E" + i].Value = r.Next(4000, 5000);
sheet["F" + i].Value = r.Next(5000, 6000);
sheet["G" + i].Value = r.Next(6000, 7000);
sheet["H" + i].Value = r.Next(7000, 8000);
}
// Apply formatting (background and border)
sheet["A1:H1"].Style.SetBackgroundColor("#d3d3d3");
sheet["A1:H1"].Style.TopBorder.SetColor("#000000");
sheet["A1:H1"].Style.BottomBorder.SetColor("#000000");
sheet["H2:H11"].Style.RightBorder.SetColor("#000000");
sheet["H2:H11"].Style.RightBorder.Type = IronXL.Styles.BorderType.Medium;
sheet["A11:H11"].Style.BottomBorder.SetColor("#000000");
sheet["A11:H11"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Medium;
// Apply formulas
decimal sum = sheet["A2:A11"].Sum();
decimal avg = sheet["B2:B11"].Avg();
decimal max = sheet["C2:C11"].Max();
decimal min = sheet["D2:D11"].Min();
sheet["A12"].Value = "Sum";
sheet["B12"].Value = sum;
sheet["C12"].Value = "Avg";
sheet["D12"].Value = avg;
sheet["E12"].Value = "Max";
sheet["F12"].Value = max;
sheet["G12"].Value = "Min";
sheet["H12"].Value = min;
// Save and open the Excel file
SaveService saveService = new SaveService();
saveService.SaveAndView("Budget.xlsx", "application/octet-stream", workbook.ToStream());
}
```
Ten kod źródłowy tworzy skoroszyt i arkusz przy użyciu IronXL, ustawia wartości komórek i formatuje komórki. Demonstracja użycia formuł Excel z IronXL.
### Przeglądanie plików Excel w przeglądarce
Otwórz plik `MainPage.xaml.cs` i napisz następujący kod.
```csharp
private void ReadExcel(object sender, EventArgs e)
{
// Store the path of the file
string filepath = @"C:\Files\Customer Data.xlsx";
WorkBook workbook = WorkBook.Load(filepath);
WorkSheet sheet = workbook.WorkSheets.First();
// Calculate the sum of a range
decimal sum = sheet["B2:B10"].Sum();
// Modify a cell value and apply styles
sheet["B11"].Value = sum;
sheet["B11"].Style.SetBackgroundColor("#808080");
sheet["B11"].Style.Font.SetColor("#ffffff");
// Save and open the Excel file
SaveService saveService = new SaveService();
saveService.SaveAndView("Modified Data.xlsx", "application/octet-stream", workbook.ToStream());
DisplayAlert("Notification", "Excel file has been modified!", "OK");
}
```
Kod źródłowy ładuje plik Excel, stosuje formułę na zakresie komórek i formatuje go z niestandardowym tłem i kolorowaniem tekstu. Następnie zmodyfikowany plik Excel zostanie zapisany, a powiadomienie zostanie wyświetlone.
### Zapisz pliki Excel
W tej sekcji definiujemy klasę `SaveService`, która zapisze nasze pliki Excel w lokalnej pamięci.
Utwórz klasę "SaveService.cs" i napisz następujący kod:
```csharp
using System;
using System.IO;
namespace MAUI_IronXL
{
public partial class SaveService
{
public partial void SaveAndView(string fileName, string contentType, MemoryStream stream);
}
}
```
Następnie utwórz klasę o nazwie "SaveWindows.cs" w folderze Platforms > Windows, i dodaj następujący kod:
```csharp
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Storage.Streams;
using Windows.UI.Popups;
namespace MAUI_IronXL
{
public partial class SaveService
{
public async partial void SaveAndView(string fileName, string contentType, MemoryStream stream)
{
StorageFile stFile;
string extension = Path.GetExtension(fileName);
IntPtr windowHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
if (!Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
{
FileSavePicker savePicker = new FileSavePicker();
savePicker.DefaultFileExtension = ".xlsx";
savePicker.SuggestedFileName = fileName;
savePicker.FileTypeChoices.Add("XLSX", new List<string> { ".xlsx" });
WinRT.Interop.InitializeWithWindow.Initialize(savePicker, windowHandle);
stFile = await savePicker.PickSaveFileAsync();
}
else
{
StorageFolder local = ApplicationData.Current.LocalFolder;
stFile = await local.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
}
if (stFile != null)
{
using (IRandomAccessStream zipStream = await stFile.OpenAsync(FileAccessMode.ReadWrite))
{
using (Stream outputStream = zipStream.AsStreamForWrite())
{
outputStream.SetLength(0);
stream.WriteTo(outputStream);
await outputStream.FlushAsync();
}
}
MessageDialog msgDialog = new("Do you want to view the document?", "File has been created successfully");
UICommand yesCmd = new("Yes");
msgDialog.Commands.Add(yesCmd);
UICommand noCmd = new("No");
msgDialog.Commands.Add(noCmd);
WinRT.Interop.InitializeWithWindow.Initialize(msgDialog, windowHandle);
IUICommand cmd = await msgDialog.ShowAsync();
if (cmd.Label == yesCmd.Label)
{
await Windows.System.Launcher.LaunchFileAsync(stFile);
}
}
}
}
}
```
### Wynik
Zbuduj i uruchom projekt MAUI. Po pomyślnym wykonaniu otworzy się okno, które pokaże zawartość widoczną na poniższym obrazku.
<div class="content-img-align-center">
<div class="center-image-wrapper">
<img src="/img/tutorials/read-create-excel-net-maui/read-create-excel-net-maui-1.webp" alt="Odczytywanie, tworzenie i edytowanie plików Excel w .NET MAUI, Rysunek 1: Wynik" class="img-responsive add-shadow" />
<p><strong>Rysunek 1</strong> - <em>Wynik</em></p>
</div>
</div>
Kliknięcie przycisku "Create Excel File" otworzy osobne okno dialogowe. To okno poprosi użytkowników o wybór lokalizacji i nazwy pliku, za pomocą której można zapisać nowy (wygenerowany) plik Excel. Określ lokalizację i nazwę pliku, jak wskazano, i kliknij OK. Później pojawi się kolejne okno dialogowe.
<div class="content-img-align-center">
<div class="center-image-wrapper">
<img src="/img/tutorials/read-create-excel-net-maui/read-create-excel-net-maui-2.webp" alt="Odczytywanie, tworzenie i edytowanie plików Excel w .NET MAUI, Rysunek 2: Wyskakujące okno tworzenia Excela" class="img-responsive add-shadow" />
<p><strong>Rysunek 2</strong> - <em>Popup Tworzenia Excel</em></p>
</div>
</div>
Otworzenie pliku Excel zgodnie z instrukcją w pop-upie spowoduje wyświetlenie dokumentu pokazane na poniższym zrzucie ekranu.
<div class="content-img-align-center">
<div class="center-image-wrapper">
<img src="/img/tutorials/read-create-excel-net-maui/read-create-excel-net-maui-3.webp" alt="Odczytywanie, tworzenie i edytowanie plików Excel w .NET MAUI, Rysunek 3: Wynik" class="img-responsive add-shadow" />
<p><strong>Rysunek 3</strong> - <em>Popup Odczytu i Modyfikacji Excel</em></p>
</div>
</div>
Kliknięcie przycisku "Read and Modify Excel File" załaduje wcześniej wygenerowany plik Excel i zmodyfikuje go z niestandardowym tłem i kolorowaniem tekstu, które zdefiniowaliśmy w poprzedniej sekcji.
<div class="content-img-align-center">
<div class="center-image-wrapper">
<img src="/img/tutorials/read-create-excel-net-maui/read-create-excel-net-maui-4.webp" alt="Odczytywanie, tworzenie i edytowanie plików Excel w .NET MAUI, Rysunek 4: Wynik Excela" class="img-responsive add-shadow" />
<p><strong>Rysunek 4</strong> - <em>Wynik Excel</em></p>
</div>
</div>
Po otwarciu zmodyfikowanego pliku zobaczysz następujący wynik z tabelą zawartości.
<div class="content-img-align-center">
<div class="center-image-wrapper">
<img src="/img/tutorials/read-create-excel-net-maui/read-create-excel-net-maui-5.webp" alt="Odczytywanie, tworzenie i edytowanie plików Excel w .NET MAUI, Rysunek 5: Zmodyfikowany wynik Excela" class="img-responsive add-shadow" />
<p><strong>Rysunek 5</strong> - <em>Zmodyfikowany Wynik Excel</em></p>
</div>
</div>
## Wnioski
To wyjaśnia, jak możemy tworzyć, odczytywać i modyfikować pliki Excel w aplikacjach .NET MAUI przy użyciu biblioteki IronXL. IronXL wypada bardzo dobrze i wykonuje wszystkie operacje z szybkością i dokładnością. Jest doskonałą biblioteką do operacji Excel, przewyższającą Microsoft Interop, ponieważ nie wymaga instalacji pakietu Microsoft Office na maszynie. Dodatkowo, IronXL wspiera wiele operacji jak tworzenie skoroszytów i arkuszy, praca z zakresami komórek, formatowanie i eksportowanie do różnych typów dokumentów jak CSV, TSV i inne.
IronXL wspiera wszystkie szablony projektów jak Windows Form, WPF, ASP.NET Core i wiele innych. Zapoznaj się z naszymi tutorialami na temat [tworzenia plików Excel](/csharp/excel/tutorials/create-excel-file-net/) i [odczytywania plików Excel](/csharp/excel/tutorials/how-to-read-excel-file-csharp/) dla dodatkowych informacji o tym, jak korzystać z IronXL.
<hr class="separator" />
#### Szybkie linki dostępu
<div class="tutorial-section">
<div class="row">
<div class="col-sm-8">
<h3>Odkryj ten przewodnik "How-To" na GitHubie</h3>
<p>Kod źródłowy tego projektu dostępny jest na GitHubie.</p>
<p>Użyj tego kodu jako łatwego sposobu na szybkie rozpoczęcie. Projekt jest zapisany jako projekt Microsoft Visual Studio 2022, ale jest kompatybilny z dowolnym środowiskiem .NET IDE.</p>
<a class="doc-link" href="https://github.com/tayyab-create/MAUI-Create-and-Read-Excel-using-IronXL" target="_blank">Jak odczytywać, tworzyć i edytować pliki Excel w aplikacjach .NET MAUI<i class="fa fa-chevron-right"></i></a>
</div>
<div class="col-sm-4">
<div class="tutorial-image">
<img alt="" class="img-responsive add-shadow" src="/img/svgs/github-icon.svg" />
</div>
</div>
</div>
</div>
<div class="tutorial-section">
<div class="row">
<div class="col-sm-4">
<div class="tutorial-image">
<img style="max-width: 110px; width: 100px; height: 140px;" alt="" class="img-responsive add-shadow" src="/img/svgs/documentation.svg" width="100" height="140" />
</div>
</div>
<div class="col-sm-8">
<h3>Zobacz Dokumentację API</h3>
<p>Zapoznaj się z Dokumentacją API dla IronXL, przedstawiającą szczegóły wszystkich funkcji, przestrzeni nazw, klas, metod, pól i wyliczeń IronXL.</p>
<a class="doc-link" href="https://ironsoftware.com/csharp/excel/object-reference/api/" target="_blank">Zobacz Dokumentację API <i class="fa fa-chevron-right"></i></a>
</div>
</div>
</div>
Przewodnik pokazuje, jak tworzyć i odczytywać pliki Excel w aplikacjach .NET MAUI dla systemu Windows z wykorzystaniem IronXL. Zaczynajmy.
IronXL: Biblioteka Excel dla C#
IronXL to biblioteka C# .NET do odczytywania, zapisywania i manipulacji plikami Excel. Pozwala użytkownikom tworzyć dokumenty Excel od podstaw, w tym zawartość i wygląd arkusza, oraz metadane jak tytuł i autor. Biblioteka wspiera również funkcje dostosowywania interfejsu użytkownika, takie jak ustawianie marginesów, orientacji, rozmiaru strony, obrazów itp. Nie wymaga żadnych zewnętrznych frameworków, integracji platform ani innych bibliotek firm trzecich do generowania plików Excel. Jest samodzielnym i odizolowanym rozwiązaniem.
Upewnij się, że wszystkie pakiety wymagane do uruchomienia aplikacji MAUI są zainstalowane
Twórz pliki Excel z intuicyjnymi API w Maui
Ładowanie i przeglądanie plików Excel w przeglądarce
Zapisz i eksportuj pliki Excel
Zainstaluj IronXL
Aby zainstalować IronXL, możesz użyć konsoli Package Manager NuGet w Visual Studio. Otwórz konsolę i wprowadź następujące polecenie, aby zainstalować bibliotekę IronXL.
PM > Install-Package IronXL.Excel
Install-Package IronXL.Excel
Tworzenie plików Excel w C# przy użyciu IronXL
Zaprojektuj frontend aplikacji
Otwórz stronę XAML o nazwie MainPage.xaml i zamień kod w niej na następujący fragment kodu.
<?xml version="1.0" encoding="utf-8" ?><ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MAUI_IronXl.MainPage"> <ScrollView> <VerticalStackLayout Spacing="25" Padding="30,0" VerticalOptions="Center"> <Label Text="Welcome to .NET Multi-platform App UI" SemanticProperties.HeadingLevel="Level2" SemanticProperties.Description="Welcome Multi-platform App UI" FontSize="18" HorizontalOptions="Center" /> <Button x:Name="createBtn" Text="Create Excel File" SemanticProperties.Hint="Click on the button to create Excel file" Clicked="CreateExcel" HorizontalOptions="Center" /> <Button x:Name="readExcel" Text="Read and Modify Excel file" SemanticProperties.Hint="Click on the button to read Excel file" Clicked="ReadExcel" HorizontalOptions="Center" /> </VerticalStackLayout> </ScrollView></ContentPage>
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MAUI_IronXl.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Label
Text="Welcome to .NET Multi-platform App UI"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome Multi-platform App UI"
FontSize="18"
HorizontalOptions="Center" />
<Button
x:Name="createBtn"
Text="Create Excel File"
SemanticProperties.Hint="Click on the button to create Excel file"
Clicked="CreateExcel"
HorizontalOptions="Center" />
<Button
x:Name="readExcel"
Text="Read and Modify Excel file"
SemanticProperties.Hint="Click on the button to read Excel file"
Clicked="ReadExcel"
HorizontalOptions="Center" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
XML
Powyższy kod tworzy układ dla naszej podstawowej aplikacji .NET MAUI. Tworzy jeden etykietę i dwa przyciski. Jeden przycisk służy do tworzenia pliku Excel, a drugi zapewnia wsparcie dla odczytu i modyfikacji pliku Excel. Oba elementy są zagnieżdżone w elemencie rodzicu VerticalStackLayout, dzięki czemu będą wyświetlane w pionie na wszystkich obsługiwanych urządzeniach.
Twórz pliki Excel
Czas na stworzenie pliku Excel z wykorzystaniem IronXL. Otwórz plik MainPage.xaml.cs i napisz następującą metodę w pliku.
private voidCreateExcel(object sender, EventArgs e){ // Create a new Workbook WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); // Create a Worksheet var sheet = workbook.CreateWorkSheet("2022 Budget"); // Set cell headers sheet["A1"].Value = "January"; sheet["B1"].Value = "February"; sheet["C1"].Value = "March"; sheet["D1"].Value = "April"; sheet["E1"].Value = "May"; sheet["F1"].Value = "June"; sheet["G1"].Value = "July"; sheet["H1"].Value = "August"; // Fill worksheet cells with random values Random r = new Random(); for (int i = 2; i <= 11; i++) { sheet["A" + i].Value = r.Next(1, 1000); sheet["B" + i].Value = r.Next(1000, 2000); sheet["C" + i].Value = r.Next(2000, 3000); sheet["D" + i].Value = r.Next(3000, 4000); sheet["E" + i].Value = r.Next(4000, 5000); sheet["F" + i].Value = r.Next(5000, 6000); sheet["G" + i].Value = r.Next(6000, 7000); sheet["H" + i].Value = r.Next(7000, 8000); } // Apply formatting (background and border) sheet["A1:H1"].Style.SetBackgroundColor("#d3d3d3"); sheet["A1:H1"].Style.TopBorder.SetColor("#000000"); sheet["A1:H1"].Style.BottomBorder.SetColor("#000000"); sheet["H2:H11"].Style.RightBorder.SetColor("#000000"); sheet["H2:H11"].Style.RightBorder.Type = IronXL.Styles.BorderType.Medium; sheet["A11:H11"].Style.BottomBorder.SetColor("#000000"); sheet["A11:H11"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Medium; // Apply formulas decimal sum = sheet["A2:A11"].Sum(); decimal avg = sheet["B2:B11"].Avg(); decimal max = sheet["C2:C11"].Max(); decimal min = sheet["D2:D11"].Min(); sheet["A12"].Value = "Sum"; sheet["B12"].Value = sum; sheet["C12"].Value = "Avg"; sheet["D12"].Value = avg; sheet["E12"].Value = "Max"; sheet["F12"].Value = max; sheet["G12"].Value = "Min"; sheet["H12"].Value = min; // Save and open the Excel file SaveService saveService = new SaveService(); saveService.SaveAndView("Budget.xlsx", "application/octet-stream", workbook.ToStream());}
private void CreateExcel(object sender, EventArgs e)
{
// Create a new Workbook
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Create a Worksheet
var sheet = workbook.CreateWorkSheet("2022 Budget");
// Set cell headers
sheet["A1"].Value = "January";
sheet["B1"].Value = "February";
sheet["C1"].Value = "March";
sheet["D1"].Value = "April";
sheet["E1"].Value = "May";
sheet["F1"].Value = "June";
sheet["G1"].Value = "July";
sheet["H1"].Value = "August";
// Fill worksheet cells with random values
Random r = new Random();
for (int i = 2; i <= 11; i++)
{
sheet["A" + i].Value = r.Next(1, 1000);
sheet["B" + i].Value = r.Next(1000, 2000);
sheet["C" + i].Value = r.Next(2000, 3000);
sheet["D" + i].Value = r.Next(3000, 4000);
sheet["E" + i].Value = r.Next(4000, 5000);
sheet["F" + i].Value = r.Next(5000, 6000);
sheet["G" + i].Value = r.Next(6000, 7000);
sheet["H" + i].Value = r.Next(7000, 8000);
}
// Apply formatting (background and border)
sheet["A1:H1"].Style.SetBackgroundColor("#d3d3d3");
sheet["A1:H1"].Style.TopBorder.SetColor("#000000");
sheet["A1:H1"].Style.BottomBorder.SetColor("#000000");
sheet["H2:H11"].Style.RightBorder.SetColor("#000000");
sheet["H2:H11"].Style.RightBorder.Type = IronXL.Styles.BorderType.Medium;
sheet["A11:H11"].Style.BottomBorder.SetColor("#000000");
sheet["A11:H11"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Medium;
// Apply formulas
decimal sum = sheet["A2:A11"].Sum();
decimal avg = sheet["B2:B11"].Avg();
decimal max = sheet["C2:C11"].Max();
decimal min = sheet["D2:D11"].Min();
sheet["A12"].Value = "Sum";
sheet["B12"].Value = sum;
sheet["C12"].Value = "Avg";
sheet["D12"].Value = avg;
sheet["E12"].Value = "Max";
sheet["F12"].Value = max;
sheet["G12"].Value = "Min";
sheet["H12"].Value = min;
// Save and open the Excel file
SaveService saveService = new SaveService();
saveService.SaveAndView("Budget.xlsx", "application/octet-stream", workbook.ToStream());
}
Private Sub CreateExcel(ByVal sender AsObject, ByVal e AsEventArgs) ' Create a new Workbook Dim workbook AsWorkBook = WorkBook.Create(ExcelFileFormat.XLSX) ' Create a Worksheet Dim sheet = workbook.CreateWorkSheet("2022 Budget") ' Set cell headers sheet("A1").Value = "January" sheet("B1").Value = "February" sheet("C1").Value = "March" sheet("D1").Value = "April" sheet("E1").Value = "May" sheet("F1").Value = "June" sheet("G1").Value = "July" sheet("H1").Value = "August" ' Fill worksheet cells with random values Dim r As New Random() For i AsInteger = 2 To 11 sheet("A" & i).Value = r.Next(1, 1000) sheet("B" & i).Value = r.Next(1000, 2000) sheet("C" & i).Value = r.Next(2000, 3000) sheet("D" & i).Value = r.Next(3000, 4000) sheet("E" & i).Value = r.Next(4000, 5000) sheet("F" & i).Value = r.Next(5000, 6000) sheet("G" & i).Value = r.Next(6000, 7000) sheet("H" & i).Value = r.Next(7000, 8000) Next i ' Apply formatting (background and border) sheet("A1:H1").Style.SetBackgroundColor("#d3d3d3") sheet("A1:H1").Style.TopBorder.SetColor("#000000") sheet("A1:H1").Style.BottomBorder.SetColor("#000000") sheet("H2:H11").Style.RightBorder.SetColor("#000000") sheet("H2:H11").Style.RightBorder.Type = IronXL.Styles.BorderType.Medium sheet("A11:H11").Style.BottomBorder.SetColor("#000000") sheet("A11:H11").Style.BottomBorder.Type = IronXL.Styles.BorderType.Medium ' Apply formulas Dim sum AsDecimal = sheet("A2:A11").Sum() Dim avg AsDecimal = sheet("B2:B11").Avg() Dim max AsDecimal = sheet("C2:C11").Max() Dim min AsDecimal = sheet("D2:D11").Min() sheet("A12").Value = "Sum" sheet("B12").Value = sum sheet("C12").Value = "Avg" sheet("D12").Value = avg sheet("E12").Value = "Max" sheet("F12").Value = max sheet("G12").Value = "Min" sheet("H12").Value = min ' Save and open the Excel file Dim saveService As New SaveService() saveService.SaveAndView("Budget.xlsx", "application/octet-stream", workbook.ToStream())End Sub
Private Sub CreateExcel(ByVal sender As Object, ByVal e As EventArgs)
' Create a new Workbook
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Create a Worksheet
Dim sheet = workbook.CreateWorkSheet("2022 Budget")
' Set cell headers
sheet("A1").Value = "January"
sheet("B1").Value = "February"
sheet("C1").Value = "March"
sheet("D1").Value = "April"
sheet("E1").Value = "May"
sheet("F1").Value = "June"
sheet("G1").Value = "July"
sheet("H1").Value = "August"
' Fill worksheet cells with random values
Dim r As New Random()
For i As Integer = 2 To 11
sheet("A" & i).Value = r.Next(1, 1000)
sheet("B" & i).Value = r.Next(1000, 2000)
sheet("C" & i).Value = r.Next(2000, 3000)
sheet("D" & i).Value = r.Next(3000, 4000)
sheet("E" & i).Value = r.Next(4000, 5000)
sheet("F" & i).Value = r.Next(5000, 6000)
sheet("G" & i).Value = r.Next(6000, 7000)
sheet("H" & i).Value = r.Next(7000, 8000)
Next i
' Apply formatting (background and border)
sheet("A1:H1").Style.SetBackgroundColor("#d3d3d3")
sheet("A1:H1").Style.TopBorder.SetColor("#000000")
sheet("A1:H1").Style.BottomBorder.SetColor("#000000")
sheet("H2:H11").Style.RightBorder.SetColor("#000000")
sheet("H2:H11").Style.RightBorder.Type = IronXL.Styles.BorderType.Medium
sheet("A11:H11").Style.BottomBorder.SetColor("#000000")
sheet("A11:H11").Style.BottomBorder.Type = IronXL.Styles.BorderType.Medium
' Apply formulas
Dim sum As Decimal = sheet("A2:A11").Sum()
Dim avg As Decimal = sheet("B2:B11").Avg()
Dim max As Decimal = sheet("C2:C11").Max()
Dim min As Decimal = sheet("D2:D11").Min()
sheet("A12").Value = "Sum"
sheet("B12").Value = sum
sheet("C12").Value = "Avg"
sheet("D12").Value = avg
sheet("E12").Value = "Max"
sheet("F12").Value = max
sheet("G12").Value = "Min"
sheet("H12").Value = min
' Save and open the Excel file
Dim saveService As New SaveService()
saveService.SaveAndView("Budget.xlsx", "application/octet-stream", workbook.ToStream())
End Sub
Ten kod źródłowy tworzy skoroszyt i arkusz przy użyciu IronXL, ustawia wartości komórek i formatuje komórki. Demonstracja użycia formuł Excel z IronXL.
Przeglądanie plików Excel w przeglądarce
Otwórz plik MainPage.xaml.cs i napisz następujący kod.
private voidReadExcel(object sender, EventArgs e){ // Store the path of the file string filepath = @"C:\Files\Customer Data.xlsx"; WorkBook workbook = WorkBook.Load(filepath); WorkSheet sheet = workbook.WorkSheets.First(); // Calculate the sum of a range decimal sum = sheet["B2:B10"].Sum(); // Modify a cell value and apply styles sheet["B11"].Value = sum; sheet["B11"].Style.SetBackgroundColor("#808080"); sheet["B11"].Style.Font.SetColor("#ffffff"); // Save and open the Excel file SaveService saveService = new SaveService(); saveService.SaveAndView("Modified Data.xlsx", "application/octet-stream", workbook.ToStream());DisplayAlert("Notification", "Excel file has been modified!", "OK");}
private void ReadExcel(object sender, EventArgs e)
{
// Store the path of the file
string filepath = @"C:\Files\Customer Data.xlsx";
WorkBook workbook = WorkBook.Load(filepath);
WorkSheet sheet = workbook.WorkSheets.First();
// Calculate the sum of a range
decimal sum = sheet["B2:B10"].Sum();
// Modify a cell value and apply styles
sheet["B11"].Value = sum;
sheet["B11"].Style.SetBackgroundColor("#808080");
sheet["B11"].Style.Font.SetColor("#ffffff");
// Save and open the Excel file
SaveService saveService = new SaveService();
saveService.SaveAndView("Modified Data.xlsx", "application/octet-stream", workbook.ToStream());
DisplayAlert("Notification", "Excel file has been modified!", "OK");
}
Private Sub ReadExcel(ByVal sender AsObject, ByVal e AsEventArgs) ' Store the path of the file Dim filepath AsString = "C:\Files\Customer Data.xlsx" Dim workbook AsWorkBook = WorkBook.Load(filepath) Dim sheet AsWorkSheet = workbook.WorkSheets.First() ' Calculate the sum of a range Dim sum AsDecimal = sheet("B2:B10").Sum() ' Modify a cell value and apply styles sheet("B11").Value = sum sheet("B11").Style.SetBackgroundColor("#808080") sheet("B11").Style.Font.SetColor("#ffffff") ' Save and open the Excel file Dim saveService As New SaveService() saveService.SaveAndView("Modified Data.xlsx", "application/octet-stream", workbook.ToStream())DisplayAlert("Notification", "Excel file has been modified!", "OK")End Sub
Private Sub ReadExcel(ByVal sender As Object, ByVal e As EventArgs)
' Store the path of the file
Dim filepath As String = "C:\Files\Customer Data.xlsx"
Dim workbook As WorkBook = WorkBook.Load(filepath)
Dim sheet As WorkSheet = workbook.WorkSheets.First()
' Calculate the sum of a range
Dim sum As Decimal = sheet("B2:B10").Sum()
' Modify a cell value and apply styles
sheet("B11").Value = sum
sheet("B11").Style.SetBackgroundColor("#808080")
sheet("B11").Style.Font.SetColor("#ffffff")
' Save and open the Excel file
Dim saveService As New SaveService()
saveService.SaveAndView("Modified Data.xlsx", "application/octet-stream", workbook.ToStream())
DisplayAlert("Notification", "Excel file has been modified!", "OK")
End Sub
Kod źródłowy ładuje plik Excel, stosuje formułę na zakresie komórek i formatuje go z niestandardowym tłem i kolorowaniem tekstu. Następnie zmodyfikowany plik Excel zostanie zapisany, a powiadomienie zostanie wyświetlone.
Zapisz pliki Excel
W tej sekcji definiujemy klasę SaveService, która zapisze nasze pliki Excel w lokalnej pamięci.
Utwórz klasę "SaveService.cs" i napisz następujący kod:
using System;using System.IO;namespace MAUI_IronXL{ public partial class SaveService { public partial voidSaveAndView(string fileName, string contentType, MemoryStream stream); }}
using System;
using System.IO;
namespace MAUI_IronXL
{
public partial class SaveService
{
public partial void SaveAndView(string fileName, string contentType, MemoryStream stream);
}
}
ImportsSystemImportsSystem.IONamespaceMAUI_IronXLPartialPublic Class SaveService PublicPartial Private Sub SaveAndView(ByVal fileName AsString, ByVal contentType AsString, ByVal stream AsMemoryStream) End Sub End ClassEndNamespace
Imports System
Imports System.IO
Namespace MAUI_IronXL
Partial Public Class SaveService
Public Partial Private Sub SaveAndView(ByVal fileName As String, ByVal contentType As String, ByVal stream As MemoryStream)
End Sub
End Class
End Namespace
Następnie utwórz klasę o nazwie "SaveWindows.cs" w folderze Platforms > Windows, i dodaj następujący kod:
using System;using System.Collections.Generic;using System.IO;using System.Runtime.InteropServices.WindowsRuntime;using Windows.Storage;using Windows.Storage.Pickers;using Windows.Storage.Streams;using Windows.UI.Popups;namespace MAUI_IronXL{ public partial class SaveService { public async partial voidSaveAndView(string fileName, string contentType, MemoryStream stream) { StorageFile stFile; string extension = Path.GetExtension(fileName); IntPtr windowHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle; if (!Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons")) { FileSavePicker savePicker = new FileSavePicker(); savePicker.DefaultFileExtension = ".xlsx"; savePicker.SuggestedFileName = fileName; savePicker.FileTypeChoices.Add("XLSX", new List<string> { ".xlsx" });WinRT.Interop.InitializeWithWindow.Initialize(savePicker, windowHandle); stFile = await savePicker.PickSaveFileAsync(); } else { StorageFolder local = ApplicationData.Current.LocalFolder; stFile = await local.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); } if (stFile != null) { using (IRandomAccessStream zipStream = await stFile.OpenAsync(FileAccessMode.ReadWrite)) { using (Stream outputStream = zipStream.AsStreamForWrite()) { outputStream.SetLength(0); stream.WriteTo(outputStream); await outputStream.FlushAsync(); } } MessageDialog msgDialog = new("Do you want to view the document?", "File has been created successfully"); UICommand yesCmd = new("Yes"); msgDialog.Commands.Add(yesCmd); UICommand noCmd = new("No"); msgDialog.Commands.Add(noCmd);WinRT.Interop.InitializeWithWindow.Initialize(msgDialog, windowHandle); IUICommand cmd = await msgDialog.ShowAsync(); if (cmd.Label == yesCmd.Label) { awaitWindows.System.Launcher.LaunchFileAsync(stFile); } } } }}
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Storage.Streams;
using Windows.UI.Popups;
namespace MAUI_IronXL
{
public partial class SaveService
{
public async partial void SaveAndView(string fileName, string contentType, MemoryStream stream)
{
StorageFile stFile;
string extension = Path.GetExtension(fileName);
IntPtr windowHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
if (!Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
{
FileSavePicker savePicker = new FileSavePicker();
savePicker.DefaultFileExtension = ".xlsx";
savePicker.SuggestedFileName = fileName;
savePicker.FileTypeChoices.Add("XLSX", new List<string> { ".xlsx" });
WinRT.Interop.InitializeWithWindow.Initialize(savePicker, windowHandle);
stFile = await savePicker.PickSaveFileAsync();
}
else
{
StorageFolder local = ApplicationData.Current.LocalFolder;
stFile = await local.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
}
if (stFile != null)
{
using (IRandomAccessStream zipStream = await stFile.OpenAsync(FileAccessMode.ReadWrite))
{
using (Stream outputStream = zipStream.AsStreamForWrite())
{
outputStream.SetLength(0);
stream.WriteTo(outputStream);
await outputStream.FlushAsync();
}
}
MessageDialog msgDialog = new("Do you want to view the document?", "File has been created successfully");
UICommand yesCmd = new("Yes");
msgDialog.Commands.Add(yesCmd);
UICommand noCmd = new("No");
msgDialog.Commands.Add(noCmd);
WinRT.Interop.InitializeWithWindow.Initialize(msgDialog, windowHandle);
IUICommand cmd = await msgDialog.ShowAsync();
if (cmd.Label == yesCmd.Label)
{
await Windows.System.Launcher.LaunchFileAsync(stFile);
}
}
}
}
}
ImportsSystemImportsSystem.Collections.GenericImportsSystem.IOImportsSystem.Runtime.InteropServices.WindowsRuntimeImportsWindows.StorageImportsWindows.Storage.PickersImportsWindows.Storage.StreamsImportsWindows.UI.PopupsNamespaceMAUI_IronXLPartialPublic Class SaveService PublicAsync Sub SaveAndView(ByVal fileName AsString, ByVal contentType AsString, ByVal stream AsMemoryStream) Dim stFile AsStorageFile Dim extension AsString = Path.GetExtension(fileName) Dim windowHandle AsIntPtr = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle IfNotWindows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons") Then Dim savePicker As New FileSavePicker() savePicker.DefaultFileExtension = ".xlsx" savePicker.SuggestedFileName = fileName savePicker.FileTypeChoices.Add("XLSX", New List(OfString) From {".xlsx"})WinRT.Interop.InitializeWithWindow.Initialize(savePicker, windowHandle) stFile = Await savePicker.PickSaveFileAsync() Else Dim local AsStorageFolder = ApplicationData.Current.LocalFolder stFile = Await local.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting) End If If stFile IsNot Nothing ThenUsing zipStream AsIRandomAccessStream = Await stFile.OpenAsync(FileAccessMode.ReadWrite)Using outputStream AsStream = zipStream.AsStreamForWrite() outputStream.SetLength(0) stream.WriteTo(outputStream)Await outputStream.FlushAsync()EndUsingEndUsing Dim msgDialog As New MessageDialog("Do you want to view the document?", "File has been created successfully") Dim yesCmd As New UICommand("Yes") msgDialog.Commands.Add(yesCmd) Dim noCmd As New UICommand("No") msgDialog.Commands.Add(noCmd)WinRT.Interop.InitializeWithWindow.Initialize(msgDialog, windowHandle) Dim cmd AsIUICommand = Await msgDialog.ShowAsync() If cmd.Label = yesCmd.LabelThenAwaitWindows.System.Launcher.LaunchFileAsync(stFile) End If End If End Sub End ClassEndNamespace
Imports System
Imports System.Collections.Generic
Imports System.IO
Imports System.Runtime.InteropServices.WindowsRuntime
Imports Windows.Storage
Imports Windows.Storage.Pickers
Imports Windows.Storage.Streams
Imports Windows.UI.Popups
Namespace MAUI_IronXL
Partial Public Class SaveService
Public Async Sub SaveAndView(ByVal fileName As String, ByVal contentType As String, ByVal stream As MemoryStream)
Dim stFile As StorageFile
Dim extension As String = Path.GetExtension(fileName)
Dim windowHandle As IntPtr = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle
If Not Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons") Then
Dim savePicker As New FileSavePicker()
savePicker.DefaultFileExtension = ".xlsx"
savePicker.SuggestedFileName = fileName
savePicker.FileTypeChoices.Add("XLSX", New List(Of String) From {".xlsx"})
WinRT.Interop.InitializeWithWindow.Initialize(savePicker, windowHandle)
stFile = Await savePicker.PickSaveFileAsync()
Else
Dim local As StorageFolder = ApplicationData.Current.LocalFolder
stFile = Await local.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting)
End If
If stFile IsNot Nothing Then
Using zipStream As IRandomAccessStream = Await stFile.OpenAsync(FileAccessMode.ReadWrite)
Using outputStream As Stream = zipStream.AsStreamForWrite()
outputStream.SetLength(0)
stream.WriteTo(outputStream)
Await outputStream.FlushAsync()
End Using
End Using
Dim msgDialog As New MessageDialog("Do you want to view the document?", "File has been created successfully")
Dim yesCmd As New UICommand("Yes")
msgDialog.Commands.Add(yesCmd)
Dim noCmd As New UICommand("No")
msgDialog.Commands.Add(noCmd)
WinRT.Interop.InitializeWithWindow.Initialize(msgDialog, windowHandle)
Dim cmd As IUICommand = Await msgDialog.ShowAsync()
If cmd.Label = yesCmd.Label Then
Await Windows.System.Launcher.LaunchFileAsync(stFile)
End If
End If
End Sub
End Class
End Namespace
Wynik
Zbuduj i uruchom projekt MAUI. Po pomyślnym wykonaniu otworzy się okno, które pokaże zawartość widoczną na poniższym obrazku.
Rysunek 1 - Wynik
Kliknięcie przycisku "Create Excel File" otworzy osobne okno dialogowe. To okno poprosi użytkowników o wybór lokalizacji i nazwy pliku, za pomocą której można zapisać nowy (wygenerowany) plik Excel. Określ lokalizację i nazwę pliku, jak wskazano, i kliknij OK. Później pojawi się kolejne okno dialogowe.
Rysunek 2 - Popup Tworzenia Excel
Otworzenie pliku Excel zgodnie z instrukcją w pop-upie spowoduje wyświetlenie dokumentu pokazane na poniższym zrzucie ekranu.
Rysunek 3 - Popup Odczytu i Modyfikacji Excel
Kliknięcie przycisku "Read and Modify Excel File" załaduje wcześniej wygenerowany plik Excel i zmodyfikuje go z niestandardowym tłem i kolorowaniem tekstu, które zdefiniowaliśmy w poprzedniej sekcji.
Rysunek 4 - Wynik Excel
Po otwarciu zmodyfikowanego pliku zobaczysz następujący wynik z tabelą zawartości.
Rysunek 5 - Zmodyfikowany Wynik Excel
Wnioski
To wyjaśnia, jak możemy tworzyć, odczytywać i modyfikować pliki Excel w aplikacjach .NET MAUI przy użyciu biblioteki IronXL. IronXL wypada bardzo dobrze i wykonuje wszystkie operacje z szybkością i dokładnością. Jest doskonałą biblioteką do operacji Excel, przewyższającą Microsoft Interop, ponieważ nie wymaga instalacji pakietu Microsoft Office na maszynie. Dodatkowo, IronXL wspiera wiele operacji jak tworzenie skoroszytów i arkuszy, praca z zakresami komórek, formatowanie i eksportowanie do różnych typów dokumentów jak CSV, TSV i inne.
IronXL wspiera wszystkie szablony projektów jak Windows Form, WPF, ASP.NET Core i wiele innych. Zapoznaj się z naszymi tutorialami na temat tworzenia plików Excel i odczytywania plików Excel dla dodatkowych informacji o tym, jak korzystać z IronXL.
Szybkie linki dostępu
Odkryj ten przewodnik "How-To" na GitHubie
Kod źródłowy tego projektu dostępny jest na GitHubie.
Użyj tego kodu jako łatwego sposobu na szybkie rozpoczęcie. Projekt jest zapisany jako projekt Microsoft Visual Studio 2022, ale jest kompatybilny z dowolnym środowiskiem .NET IDE.
Aby utworzyć plik Excel w projekcie .NET MAUI, należy użyć biblioteki IronXL do zainicjowania nowego skoroszytu i arkusza. Następnie można ustawić wartości komórek, zastosować formuły Excel i dostosować formatowanie przed zapisaniem pliku przy użyciu niestandardowej klasy SaveService.
Czy mogę odczytywać istniejące pliki Excel w aplikacji .NET MAUI?
Tak, można używać IronXL do ładowania i odczytywania istniejących plików Excel w aplikacji .NET MAUI. Biblioteka IronXL umożliwia dostęp do wartości komórek i ich modyfikację, stosowanie formuł oraz wdrażanie niestandardowego formatowania.
Jakie są zalety korzystania z IronXL do manipulacji plikami Excel w .NET MAUI?
IronXL oferuje samodzielne rozwiązanie do obsługi plików Excel w środowisku .NET MAUI, eliminując potrzebę korzystania z pakietu Microsoft Office lub Interop. Umożliwia ono wydajne tworzenie, odczytywanie i edycję plików Excel oraz eksportowanie ich do różnych formatów, takich jak CSV i TSV.
Jak zainstalować IronXL w moim projekcie .NET MAUI?
Możesz zainstalować IronXL w swoim projekcie .NET MAUI, korzystając z konsoli NuGet Package Manager Console w Visual Studio. Wprowadź polecenie: Install-Package IronXL.Excel, aby dodać bibliotekę IronXL do swojego projektu.
Czy w .NET MAUI można programowo formatować komórki Excela?
Tak, dzięki IronXL można programowo formatować komórki Excela w środowisku .NET MAUI. Obejmuje to ustawianie stylów komórek, kolorów oraz stosowanie różnych opcji formatowania w celu poprawy wyglądu plików Excel.
Jak mogę zaimplementować klasę SaveService dla plików Excel w mojej aplikacji .NET MAUI?
Aby zaimplementować klasę SaveService w .NET MAUI, można utworzyć klasę wykorzystującą funkcjonalność IronXL do obsługi zapisywania plików Excel w lokalnej pamięci. Wymaga to zdefiniowania metod służących do określania ścieżek plików oraz zarządzania operacjami wejścia/wyjścia plików.
Jakie szablony projektów obsługuje IronXL w aplikacjach .NET?
IronXL obsługuje różnorodne szablony projektów .NET, w tym Windows Forms, WPF, ASP.NET Core i inne, zapewniając elastyczność programistom pracującym nad różnymi typami aplikacji.
Gdzie mogę znaleźć kod źródłowy projektu .NET MAUI Excel?
Kod źródłowy projektu .NET MAUI Excel wykorzystującego IronXL jest dostępny na GitHubie. Dzięki temu programiści mogą szybko skonfigurować i eksperymentować z manipulacją plikami Excel w swoich aplikacjach przy użyciu Visual Studio 2022.
Is IronXL compatible with different .NET project templates?
Yes, IronXL is compatible with various .NET project templates including Windows Forms, WPF, and ASP.NET Core, among others.
Where can I find additional resources and tutorials for using IronXL?
You can find additional tutorials and resources for using IronXL on the official [Iron Software website](https://ironsoftware.com) and their GitHub repository, which includes sample projects and API references.
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ęczników.