Jak czytać pliki Excel Open Office w C# bez zainstalowanego Excel
Odczytywanie i przetwarzanie plików OpenDocument Spreadsheet (ODS) oraz Excel w języku C# jest proste, jeśli używa się odpowiedniej biblioteki. Dzięki IronXL można załadować dowolny plik XLS, XLSX, ODS lub CSV do obiektu WorkBook za pomocą jednego wywołania metody — bez konieczności instalacji programu Microsoft Excel, rejestracji COM i bez problemów związanych z interoperacyjnością. Ten przewodnik przeprowadzi Cię przez każdy krok: instalację pakietu, ładowanie plików, wyodrębnianie wartości wpisanych w komórkach, pracę z nazwanymi arkuszami, obsługę scalonych komórek oraz wdrażanie w środowisku Linux lub w środowiskach kontenerowych.
Jak zainstalować IronXL w projekcie .NET?
Instalacja menedżera pakietów NuGet
Dodaj IronXL do swojego projektu za pomocą menedżera pakietów NuGet. Otwórz konsolę menedżera pakietów w Visual Studio i uruchom:
Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
IronXL jest przeznaczony dla platform .NET 8, .NET 9, .NET 10, .NET Framework 4.6.2+ oraz .NET Standard 2.0, dzięki czemu pasuje zarówno do nowoczesnych, jak i starszych kodów źródłowych. Po zainstalowaniu pakietu wystarczy dodać dyrektywę using IronXL; na początku dowolnego pliku obsługującego arkusze kalkulacyjne, aby móc załadować swój pierwszy skoroszyt.
W przypadku funkcji Azure, kontenerów Docker lub interfejsów API hostowanych w systemie Linux nie jest wymagańa żadna dodatkowa konfiguracja środowiska uruchomieniowego. Biblioteka zawiera wszystko, czego potrzebuje, i nie korzysta z komponentów automatyzacji programu Excel.
Jak załadować plik OpenOffice lub Excel w języku C#?
IronXL traktuje pliki ODS, XLS, XLSX i CSV identycznie za pomocą metody WorkBook.Load. Przekazujesz bezwzględną lub względną ścieżkę do pliku, a biblioteka wykrywa format na podstawie nagłówka pliku — nie tylko rozszerzenia. Oznacza to, że plik, którego nazwa została zmieniona z .ods na .xlsx, nadal jest odczytywany poprawnie.
using IronXL;
// Load an OpenDocument Spreadsheet (.ods) produced by LibreOffice Calc or OpenOffice
WorkBook workbook = WorkBook.Load("quarterly_report.ods");
// Access the first worksheet by index
WorkSheet sheet = workbook.WorkSheets[0];
// Read a cell value
string companyName = sheet["A1"].StringValue;
int recordCount = sheet["B1"].IntValue;
Console.WriteLine($"Company : {companyName}");
Console.WriteLine($"Records : {recordCount}");
using IronXL;
// Load an OpenDocument Spreadsheet (.ods) produced by LibreOffice Calc or OpenOffice
WorkBook workbook = WorkBook.Load("quarterly_report.ods");
// Access the first worksheet by index
WorkSheet sheet = workbook.WorkSheets[0];
// Read a cell value
string companyName = sheet["A1"].StringValue;
int recordCount = sheet["B1"].IntValue;
Console.WriteLine($"Company : {companyName}");
Console.WriteLine($"Records : {recordCount}");
Imports IronXL
' Load an OpenDocument Spreadsheet (.ods) produced by LibreOffice Calc or OpenOffice
Dim workbook As WorkBook = WorkBook.Load("quarterly_report.ods")
' Access the first worksheet by index
Dim sheet As WorkSheet = workbook.WorkSheets(0)
' Read a cell value
Dim companyName As String = sheet("A1").StringValue
Dim recordCount As Integer = sheet("B1").IntValue
Console.WriteLine($"Company : {companyName}")
Console.WriteLine($"Records : {recordCount}")
To samo polecenie działa dla plików XLSX i XLS — wystarczy zmienić ścieżkę. WorkBook.Load zwraca ten sam obiekt silnie typowany niezależnie od formatu źródłowego, więc reszta kodu pozostaje identyczna, niezależnie od tego, czy plik pochodzi z programu Microsoft Excel, LibreOffice czy jakiejkolwiek innej aplikacji zgodnej ze standardem ODF.
Jak odczytać każdy wiersz i komórkę w arkuszu?
Iteracja kolekcji Rows
Przeglądanie wszystkich wierszy i komórek jest najczęstszym zadaniem przetwarzania w programie Excel — niezależnie od tego, czy chodzi o sprawdzanie poprawności importowanych danych, przekształcanie rekordów czy zasilanie potoku raportowania. IronXL udostępnia kolekcję Rows dla każdego WorkSheet:
using IronXL;
WorkBook workbook = WorkBook.Load("customers.xlsx");
WorkSheet worksheet = workbook.WorkSheets[0];
Console.WriteLine($"Total rows : {worksheet.RowCount}");
Console.WriteLine($"Total columns : {worksheet.ColumnCount}");
Console.WriteLine();
foreach (var row in worksheet.Rows)
{
foreach (var cell in row)
{
if (!cell.IsEmpty)
Console.Write($"{cell.StringValue,-20}");
}
Console.WriteLine();
}
using IronXL;
WorkBook workbook = WorkBook.Load("customers.xlsx");
WorkSheet worksheet = workbook.WorkSheets[0];
Console.WriteLine($"Total rows : {worksheet.RowCount}");
Console.WriteLine($"Total columns : {worksheet.ColumnCount}");
Console.WriteLine();
foreach (var row in worksheet.Rows)
{
foreach (var cell in row)
{
if (!cell.IsEmpty)
Console.Write($"{cell.StringValue,-20}");
}
Console.WriteLine();
}
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("customers.xlsx")
Dim worksheet As WorkSheet = workbook.WorkSheets(0)
Console.WriteLine($"Total rows : {worksheet.RowCount}")
Console.WriteLine($"Total columns : {worksheet.ColumnCount}")
Console.WriteLine()
For Each row In worksheet.Rows
For Each cell In row
If Not cell.IsEmpty Then
Console.Write($"{cell.StringValue,-20}")
End If
Next
Console.WriteLine()
Next
Właściwości RowCount i ColumnCount zwracają tylko wypełniony zakres — puste końcowe wiersze i kolumny nie są uwzględniane. Sprawdzenie cell.IsEmpty przed rozpoczęciem czytania zapobiega niepotrzebnemu przetwarzaniu w przypadku arkuszy o małej gęstości.
W przypadku dużych plików warto rozważyć użycie dostępu opartego na zakresach (worksheet["A1:D500"]) zamiast iteracji całego arkusza. Ogranicza to liczbę komórek ładowanych do pamięci i przyspiesza przetwarzanie, gdy potrzebny jest tylko podzbiór danych.
Jak wyodrębnić wartości wpisane w komórkach?
Akcesory właściwości typu
Komórki w rzeczywistym arkuszu kalkulacyjnym zawierają ciągi znaków, liczby całkowite, ułamki dziesiętne, wartości logiczne i daty. IronXL udostępnia dedykowane właściwości typowane, dzięki czemu nigdy nie musisz ręcznie analizować surowych ciągów znaków:
using IronXL;
WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workbook.GetWorkSheet("Products");
// Typed accessors handle conversion automatically
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal unitPrice = sheet["C2"].DecimalValue;
bool inStock = sheet["D2"].BoolValue;
DateTime? lastAudit = sheet["E2"].DateTimeValue;
Console.WriteLine($"Product : {productName}");
Console.WriteLine($"Qty : {quantity}");
Console.WriteLine($"Price : {unitPrice:C}");
Console.WriteLine($"In Stock : {inStock}");
Console.WriteLine($"Audited : {lastAudit?.ToString("d") ?? "Never"}");
using IronXL;
WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workbook.GetWorkSheet("Products");
// Typed accessors handle conversion automatically
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal unitPrice = sheet["C2"].DecimalValue;
bool inStock = sheet["D2"].BoolValue;
DateTime? lastAudit = sheet["E2"].DateTimeValue;
Console.WriteLine($"Product : {productName}");
Console.WriteLine($"Qty : {quantity}");
Console.WriteLine($"Price : {unitPrice:C}");
Console.WriteLine($"In Stock : {inStock}");
Console.WriteLine($"Audited : {lastAudit?.ToString("d") ?? "Never"}");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("inventory.xlsx")
Dim sheet As WorkSheet = workbook.GetWorkSheet("Products")
' Typed accessors handle conversion automatically
Dim productName As String = sheet("A2").StringValue
Dim quantity As Integer = sheet("B2").IntValue
Dim unitPrice As Decimal = sheet("C2").DecimalValue
Dim inStock As Boolean = sheet("D2").BoolValue
Dim lastAudit As DateTime? = sheet("E2").DateTimeValue
Console.WriteLine($"Product : {productName}")
Console.WriteLine($"Qty : {quantity}")
Console.WriteLine($"Price : {unitPrice:C}")
Console.WriteLine($"In Stock : {inStock}")
Console.WriteLine($"Audited : {If(lastAudit?.ToString("d"), "Never")}")
Gdy komórka zawiera formułę, IronXL oblicza ją i zwraca wynik obliczeń za pośrednictwem tych samych właściwości typowanych. Nie ma potrzeby wywoływania oddzielnej metody oceny. W przypadku komórek, które mogą być puste lub zawierać typ niezgodny, biblioteka zwraca wartość domyślną dla tego typu zamiast zgłaszać wyjątek, co upraszcza logikę sprawdzania poprawności danych wejściowych.
| Właściwość | Typ .NET | Zwraca wartość, gdy jest pusta | Uwagi |
|---|---|---|---|
StringValue |
string |
Pusty ciąg znaków | Zawsze bezpieczne; konwertuje dowolną komórkę na tekst |
IntValue |
int |
0 |
Skraca liczby dziesiętne |
DecimalValue |
decimal |
0m |
Zachowuje precyzję w odniesieniu do danych finansowych |
DoubleValue |
double |
0.0 |
Zastosowanie w przypadku wartości naukowych lub statystycznych |
BoolValue |
bool |
false |
Odczytuje komórki TRUE/FALSE w Excelu |
DateTimeValue |
DateTime? |
null |
Nullable — sprawdź przed użyciem |
Jak pracować z wieloma nazwanymi arkuszami?
Dostęp według nazwy, indeksu lub iteracji
Arkusze kalkulacyjne dla przedsiębiorstw często zawierają kilka nazwanych arkuszy — po jednym na miesiąc, region lub linię produktów. IronXL oferuje wiele sposobów uzyskiwania do nich dostępu:
using IronXL;
WorkBook workbook = WorkBook.Load("annual_sales.xlsx");
// Option 1: access by name (throws if the sheet does not exist)
WorkSheet januarySheet = workbook.GetWorkSheet("January");
// Option 2: iterate all sheets in the workbook
foreach (WorkSheet ws in workbook.WorkSheets)
{
Console.WriteLine($"Sheet: {ws.Name} | Rows: {ws.RowCount}");
// Read the header row from each sheet
string header = ws["A1"].StringValue;
Console.WriteLine($" Header: {header}");
}
// Option 3: access by zero-based index
WorkSheet lastSheet = workbook.WorkSheets[workbook.WorkSheets.Count - 1];
Console.WriteLine($"Last sheet: {lastSheet.Name}");
using IronXL;
WorkBook workbook = WorkBook.Load("annual_sales.xlsx");
// Option 1: access by name (throws if the sheet does not exist)
WorkSheet januarySheet = workbook.GetWorkSheet("January");
// Option 2: iterate all sheets in the workbook
foreach (WorkSheet ws in workbook.WorkSheets)
{
Console.WriteLine($"Sheet: {ws.Name} | Rows: {ws.RowCount}");
// Read the header row from each sheet
string header = ws["A1"].StringValue;
Console.WriteLine($" Header: {header}");
}
// Option 3: access by zero-based index
WorkSheet lastSheet = workbook.WorkSheets[workbook.WorkSheets.Count - 1];
Console.WriteLine($"Last sheet: {lastSheet.Name}");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("annual_sales.xlsx")
' Option 1: access by name (throws if the sheet does not exist)
Dim januarySheet As WorkSheet = workbook.GetWorkSheet("January")
' Option 2: iterate all sheets in the workbook
For Each ws As WorkSheet In workbook.WorkSheets
Console.WriteLine($"Sheet: {ws.Name} | Rows: {ws.RowCount}")
' Read the header row from each sheet
Dim header As String = ws("A1").StringValue
Console.WriteLine($" Header: {header}")
Next
' Option 3: access by zero-based index
Dim lastSheet As WorkSheet = workbook.WorkSheets(workbook.WorkSheets.Count - 1)
Console.WriteLine($"Last sheet: {lastSheet.Name}")
Gdy nazwa arkusza jest znana w momencie projektowania, GetWorkSheet jest najjaśniejszą opcją. W przypadku przetwarzania dynamicznego — gdzie nazwy arkuszy pochodzą z danych wprowadzonych przez użytkownika lub z konfiguracji — iteracja kolekcji WorkSheets zapobiega stosowaniu założeń zakodowanych na stałe i pozwala obsługiwać skoroszyty o różnej liczbie arkuszy.
Jak radzisz sobie ze scalonymi komórkami i sformatowanymi obszarami?
W raportach i pulpitach nawigacyjnych często stosuje się scalone komórki do tworzenia nagłówków, grupowanych etykiet i wierszy podsumowujących. IronXL odczytuje wartość z lewej górnej komórki połączonego obszaru, dokładnie tak, jak wyświetla ją program Excel:
using IronXL;
WorkBook workbook = WorkBook.Load("report_with_merges.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// The merged region A1:D1 stores its value in cell A1
string reportTitle = sheet["A1"].StringValue;
Console.WriteLine($"Report title : {reportTitle}");
// Read cell formatting metadata
var titleCell = sheet["A1"];
Console.WriteLine($"Bold : {titleCell.Style.Font.Bold}");
Console.WriteLine($"Font size : {titleCell.Style.Font.Height}");
// Scan an entire column for non-empty section headers
foreach (var cell in sheet["A1:A100"])
{
if (!cell.IsEmpty && cell.Style.Font.Bold)
Console.WriteLine($"Section header at {cell.AddressString}: {cell.StringValue}");
}
using IronXL;
WorkBook workbook = WorkBook.Load("report_with_merges.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// The merged region A1:D1 stores its value in cell A1
string reportTitle = sheet["A1"].StringValue;
Console.WriteLine($"Report title : {reportTitle}");
// Read cell formatting metadata
var titleCell = sheet["A1"];
Console.WriteLine($"Bold : {titleCell.Style.Font.Bold}");
Console.WriteLine($"Font size : {titleCell.Style.Font.Height}");
// Scan an entire column for non-empty section headers
foreach (var cell in sheet["A1:A100"])
{
if (!cell.IsEmpty && cell.Style.Font.Bold)
Console.WriteLine($"Section header at {cell.AddressString}: {cell.StringValue}");
}
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("report_with_merges.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' The merged region A1:D1 stores its value in cell A1
Dim reportTitle As String = sheet("A1").StringValue
Console.WriteLine($"Report title : {reportTitle}")
' Read cell formatting metadata
Dim titleCell = sheet("A1")
Console.WriteLine($"Bold : {titleCell.Style.Font.Bold}")
Console.WriteLine($"Font size : {titleCell.Style.Font.Height}")
' Scan an entire column for non-empty section headers
For Each cell In sheet("A1:A100")
If Not cell.IsEmpty AndAlso cell.Style.Font.Bold Then
Console.WriteLine($"Section header at {cell.AddressString}: {cell.StringValue}")
End If
Next
Drzewo właściwości Style odzwierciedla strukturę specyfikacji OOXML SpreadsheetML, więc nazwy właściwości będą brzmiały znajomo, jeśli pracowałeś z Open XML SDK. Jednak IronXL łączy całą tę złożoność w przejrzystym API, które nie wymaga od użytkownika żadnej manipulacji XML.
Jak importować pliki CSV za pomocą tego samego API?
Pliki CSV wygenerowane przez eksporty baz danych, systemy CRM i starsze aplikacje można odczytać za pomocą tego samego wywołania WorkBook.Load. IronXL wywnioskuje separator na podstawie zawartości pliku:
using IronXL;
// Load a comma-separated values file -- same method, same API
WorkBook csvWorkbook = WorkBook.Load("export.csv");
WorkSheet csvSheet = csvWorkbook.DefaultWorkSheet;
Console.WriteLine($"CSV rows loaded: {csvSheet.RowCount}");
// Process rows exactly like any other worksheet
foreach (var row in csvSheet.Rows)
{
string id = row[0].StringValue;
string name = row[1].StringValue;
Console.WriteLine($"{id,-10} {name}");
}
using IronXL;
// Load a comma-separated values file -- same method, same API
WorkBook csvWorkbook = WorkBook.Load("export.csv");
WorkSheet csvSheet = csvWorkbook.DefaultWorkSheet;
Console.WriteLine($"CSV rows loaded: {csvSheet.RowCount}");
// Process rows exactly like any other worksheet
foreach (var row in csvSheet.Rows)
{
string id = row[0].StringValue;
string name = row[1].StringValue;
Console.WriteLine($"{id,-10} {name}");
}
Imports IronXL
' Load a comma-separated values file -- same method, same API
Dim csvWorkbook As WorkBook = WorkBook.Load("export.csv")
Dim csvSheet As WorkSheet = csvWorkbook.DefaultWorkSheet
Console.WriteLine($"CSV rows loaded: {csvSheet.RowCount}")
' Process rows exactly like any other worksheet
For Each row In csvSheet.Rows
Dim id As String = row(0).StringValue
Dim name As String = row(1).StringValue
Console.WriteLine($"{id,-10} {name}")
Next
Po załadowaniu można zapisać dane jako plik XLSX za pomocą csvWorkbook.SaveAs("output.xlsx"). Jest to typowy schemat dla procesów konwersji plików CSV do formatu Excel — pobieranie pliku CSV, wzbogacanie go o obliczone kolumny lub formatowanie oraz zwracanie sformatowanego raportu XLSX użytkownikowi.
W przypadku plików rozdzielanych tabulatorami lub niestandardowymi separatorami należy użyć WorkBook.LoadCSV("file.tsv", fileFormat: ExcelFileFormat.TSV), aby wyraźnie określić format.
| Format | Rozszerzenie | Wyprodukowane przez | Uwagi |
|---|---|---|---|
| XLSX | .xlsx |
Excel 2007+, LibreOffice | Domyślny nowoczesny format; oparty na XML |
| XLS | .xls |
Excel 97–2003 | Format binarny; pełna obsługa odczytu/zapisu |
| ODS | .ods |
LibreOffice, OpenOffice | Standard arkusza kalkulacyjnego OpenDocument |
| CSV | .csv |
Dowolna aplikacja | Automatycznie wykryto separator; brak formatowania |
| TSV | .tsv |
Eksporty baz danych | Rozdzielane tabulatorami; należy wyraźnie określić format |
Jak IronXL wypada w porównaniu z Microsoft.Office.Interop.Excel?
Interop, Open XML SDK i IronXL Side by Side
Najpopularniejszą alternatywą dla IronXL for .NET do automatyzacji Excela jest Microsoft.Office.Interop.Excel. Zrozumienie kompromisów pomoże Ci wybrać odpowiednie narzędzie do Twojego projektu.
Microsoft Interop stanowi nakładkę na model obiektowy COM programu Excel. Oznacza to, że program Excel musi być zainstalowany na każdym komputerze, na którym działa kod — w tym na serwerach internetowych, agentach kompilacji i maszynach wirtualnych w chmurze. Zarządzanie cyklem życia obiektów COM odbywa się ręcznie: należy jawnie zwolnić każdy obiekt Range, Worksheet i Workbook, w przeciwnym razie procesy Excelu będą się gromadzić w tle i zużywać pamięć aż do ponownego uruchomienia serwera. Kwestią budzącą obawy jest również licencjonowanie: umowa EULA pakietu Office zabrania automatyzacji po stronie serwera w wielu scenariuszach.
IronXL pozwala uniknąć wszystkich tych ograniczeń. Jest to biblioteka czysto zarządzana, bez zależności od COM. Obiekt WorkBook jest standardową klasą .NET Standard; O czyszczenie pamięci dba moduł garbage collector. Ten sam kod można uruchomić na laptopie programisty, w usłudze Azure App Service, w kontenerze Docker lub na komputerze Raspberry Pi z systemem Linux.
Alternatywą jest pakiet Open XML SDK firmy Microsoft. Zapewnia on bezpośredni dostęp do formatu plików OOXML bez konieczności korzystania z programu Excel, ale działa na bardzo niskim poziomie — użytkownik manipuluje elementami XML bezpośrednio. Odczytanie wartości pojedynczej komórki wymaga poruszania się po wspólnych tabelach ciągów znaków, odwołaniach do komórek i indeksach stylów. IronXL łączy to wszystko w jednowierszowe wywołanie sheet["A1"].StringValue, pokazane w całym tym przewodniku.
Jak wdrożyć przetwarzanie plików Excel w systemie Linux i Docker?
Wdrożenia serwerowe to obszar, w którym niezależność IronXL od programu Excel staje się najbardziej cenna. Ten sam kod, który piszesz w systemie Windows, działa bez zmian w systemach Ubuntu, Alpine Linux lub macOS. W przypadku wdrożeń kontenerowych plik Dockerfile nie wymaga żadnej specjalnej konfiguracji:
# Standard .NET runtime image -- no Office packages needed
FROM mcr.microsoft.com/dotnet/runtime:10.0
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "ExcelProcessor.dll"]
# Standard .NET runtime image -- no Office packages needed
FROM mcr.microsoft.com/dotnet/runtime:10.0
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "ExcelProcessor.dll"]
W przypadku Azure Functions i AWS Lambda IronXL działa w ramach zarządzanego środowiska uruchomieniowego bez konieczności dodatkowej konfiguracji. Obciążenie związane z uruchomieniem na zimno jest minimalne, ponieważ nie ma etapu inicjalizacji COM.
Wbudowana jest bezpieczeństwo wątków: wiele wątków może otwierać różne instancje WorkBook jednocześnie bez koordynacji. Jeśli musisz przetwarzać tysiące plików równolegle — na przykład w zadaniu w tle, które pobiera arkusze kalkulacyjne przesłane przez użytkowników — możesz użyć Parallel.ForEach lub Task.WhenAll w puli instancji WorkBook bez ryzyka uszkodzenia danych.
Zużycie pamięci pozostaje przewidywalne, ponieważ IronXL ładuje do pamięci tylko żądany arkusz, a nie cały skoroszyt podczas inicjalizacji. W przypadku bardzo dużych plików to rozróżnienie ma znaczenie: skoroszyt zawierający dziesięć arkuszy o rozmiarze 50 MB nie wymaga 500 MB pamięci RAM tylko po to, aby odczytać jeden arkusz. Dokumentacja dotycząca wydajności IronXL obejmuje dodatkowe strategie obsługi scenariuszy przetwarzania dużych ilości plików.
Jakie są Twoje kolejne kroki?
Najszybszym sposobem na sprawdzenie działania IronXL w Twoim projekcie jest zainstalowanie pakietu NuGet i uruchomienie przykładów z tego przewodnika na prawdziwym pliku z Twojego środowiska. Bezpłatna licencja próbna odblokowuje wszystkie funkcje bez konieczności wprowadzania zmian w kodzie, gdy użytkownik jest gotowy do wdrożenia produkcyjnego.
Poznaj powiązane funkcje IronXL, które uzupełniają odczyt plików:
- Tworzenie i edycja plików Excel w języku C# — programowe generowanie raportów i eksport danych
- Formatowanie komórek, wierszy i kolumn — stosowanie kolorów, czcionek i obramowań w kodzie
- Praca z formułami programu Excel w języku C# — odczyt i zapis komórek zawierających formuły
- Konwersja plików Excel do formatu PDF w środowisku .NET — generowanie raportów PDF na podstawie danych z arkuszy kalkulacyjnych
- Dokumentacja API IronXL — pełny opis wszystkich klas i metod
- Licencjonowanie i ceny IronXL — opcje dla indywidualnych programistów i zespołów korporacyjnych
- Strona IronXL w NuGet — instrukcje instalacji dla wszystkich typów projektów
- Samouczki IronXL — przewodniki krok po kroku dotyczące typowych przypadków użycia
- Porównaj IronXL z EPPlus — zestawienie funkcji i licencji
- Strona główna produktu IronXL — przegląd funkcji i materiały dla początkujących
W przypadku pytań dotyczących licencji, obsługi wielu platform lub konkretnych wymagań dotyczących formatów plików, zespół wsparcia IronXL jest dostępny poprzez czat na żywo oraz e-mail.
!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101000101111101010011010101000100000101010010010101000100010101000100010111110101011101001001010100010010000101111101010000010100100100111101000100010101010100001101010100010111110101010001010010010010010100000101001100010111110100001001001100010011110100001101001011--}
Często Zadawane Pytania
Jak mogę odczytać pliki Open Office Excel w C# bez zainstalowanego Excela?
Możesz użyć biblioteki IronXL do odczytu plików Open Office Excel w C# bez potrzeby instalacji Excela na serwerze. Umożliwia ona ładowanie plików XLS, XLSX, ODS i CSV w sposób efektywny za pomocą pojedynczego wywołania metody WorkBook.Load.
Jakie typy plików Excel mogą być przetwarzane za pomocą IronXL?
IronXL obsługuje przetwarzanie różnych formatów plików Excel, w tym XLS, XLSX, ODS (OpenDocument Spreadsheet) i pliki CSV, co czyni go wszechstronnym narzędziem dla różnych aplikacji arkuszy kalkulacyjnych, w tym LibreOffice i OpenOffice.
Dlaczego programiści powinni używać IronXL zamiast Microsoft Interop do odczytu plików Excel?
IronXL zapewnia prostszy i bardziej efektywny sposób zarządzania plikami Excel bez potrzeby Microsoft Excel lub COM Interop, zmniejszając złożoność i obciążenie serwerów produkcyjnych oraz pozwalając na wdrożenia w systemach Linux i Docker.
Czy IronXL obsługuje pliki utworzone w aplikacjach arkuszy kalkulacyjnych innych niż MS Excel?
Tak, IronXL może odczytywać i przetwarzać pliki z innych aplikacji arkuszy kalkulacyjnych, takich jak OpenOffice Calc i LibreOffice Calc, co czyni go elastycznym narzędziem dla programistów pracujących z formatami zgodnymi z ODS i ODF.
Czy konieczne jest zainstalowanie Excela na serwerach produkcyjnych, aby korzystać z IronXL?
Nie, używając IronXL, nie musisz instalować Excela na serwerach produkcyjnych, co upraszcza wdrożenie i zmniejsza wymagania dotyczące konserwacji. IronXL działa na Windows, Linux, macOS i wewnątrz kontenerów Docker.
Czy IronXL obsługuje przetwarzanie plików CSV?
Tak, IronXL w pełni wspiera odczyt i przetwarzanie plików CSV oraz inne formaty Excel, takie jak XLS, XLSX i ODS przy użyciu tego samego API WorkBook.Load.
Jakie są korzyści z używania IronXL dla programistów .NET?
IronXL oferuje programistom .NET łatwą w użyciu bibliotekę do odczytu, pisania i manipulacji plikami Excel bez potrzeby Microsoft Excel, poprawiając produktywność i skracając czas programowania dzięki czystemu, silnie typowanemu API.
Jak IronXL poprawia efektywność obsługi plików Excel?
IronXL zwiększa efektywność, eliminując potrzebę oprogramowania Excel, zapewniając dostęp do wartości komórek z typami, bezpieczne przetwarzanie współbieżne i lekkie rozwiązanie, które przetwarza pliki Excel bezpośrednio w aplikacjach .NET.




