Przejdź do treści stopki
KORZYSTANIE Z IRONXL

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. Z IronXL, mozna zaladowac dowolny plik XLS, XLSX, ODS lub CSV do obiektu WorkBook, korzystajac z jednego wywolania metody – nie wymaga instalacji Microsoft Excel, rejestracji COM ani problemow z Interop. 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.Excel

IronXL obsluguje .NET 8, .NET 9, .NET 10, .NET Framework 4.6.2+ oraz .NET Standard 2.0, co sprawia, ze nadaje sie zarówno do nowoczesnych, jak i starszych baz kodu. Po zainstalowaniu pakietu nalezy dodac dyrektywe using IronXL; na poczatku dowolnego pliku, który pracuje z arkuszami kalkulacyjnymi, i bedziesz gotowy do zaladowania pierwszego skoroszytu.

W przypadku Azure Functions, kontenerów Docker lub interfejsów API hostowanych w systemie Linux nie jest wymagana ż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 C#?

IronXL traktuje pliki ODS, XLS, XLSX i CSV identycznie za pomoca 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, ze plik przemianowany z .ods na .xlsx jest nadal poprawnie czytany.

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}")
$vbLabelText   $csharpLabel

To samo polecenie działa dla plików XLSX i XLS — wystarczy zmienić ścieżkę. WorkBook.Load zwraca ten sam silnie typowany obiekt niezaleznie od formatu zródla, wiec reszta kodu pozostaje identyczna, niezaleznie czy plik pochodzi z Microsoft Excel, LibreOffice czy dowolnej innej aplikacji zgodnej z ODF.

Jak odczytać każdy wiersz i komórkę w arkuszu?

Iteracja kolekcji Rows

Iterowanie przez wszystkie wiersze i komórki to najczesciej wykonywane zadanie przetwarzania Excela - bez wzgledu na to, czy sprawdzana jest poprawnosc danych importowanych, przeksztalcane sa rekordy, czy zasilany jest rurociag raportowania. IronXL udostepnia kolekcje Rows w kazdym 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
$vbLabelText   $csharpLabel

Wlasciwosci RowCount i ColumnCount zwracaja tylko zakres wypelniony - puste, końcowe wiersze i kolumny nie sa uwzglednione. Sprawdzenie cell.IsEmpty przed odczytem zapobiega niepotrzebnemu przetwarzaniu na rzadkich arkuszach.

W przypadku duzych plików rozwaz uzycie dostepu opartego na zakresach (worksheet["A1:D500"]) zamiast pelno-arkuszowego iterowania. 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")}")
$vbLabelText   $csharpLabel

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ści wartości komórek IronXL i ich odpowiedniki w typach .NET
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}")
$vbLabelText   $csharpLabel

Gdy nazwa arkusza jest znana na etapie projektowania, GetWorkSheet jest najjasniejsza opcja. Dla dynamicznego przetwarzania - gdzie nazwy arkuszy pochodza od uzytkownika badz konfiguracji - iterowanie przez kolekcje WorkSheets uniemozliwia sztywne zalozenia i obsluguje skoroszyty z rózna liczba 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
$vbLabelText   $csharpLabel

Drzewo wlasciwosci Style odzwierciedla strukture specyfikacji OOXML SpreadsheetML, wiec nazwy wlasciwosci beda znane, jesli pracowano 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 produkowane przez eksport danych z baz danych, systemy CRM i starsze aplikacje mozna czytac przez to samo wywolanie 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
$vbLabelText   $csharpLabel

Po zaladowaniu dane mozna zapisac jako XLSX, uzywajac 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.

Dla plików rozdzielanych tabulatorami lub niestandardowych separatorów, nalezy uzyc WorkBook.LoadCSV("file.tsv", fileFormat: ExcelFileFormat.TSV), aby okreslic format jawnie.

Obsługiwane formaty plików wejściowych w IronXL
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. Zarzadzanie cyklem zycia obiektów COM jest reczne: musisz jawnie zwolnic kazdy obiekt Range, Worksheet i Workbook, w przeciwnym razie procesy Excela beda kumulowac sie w tle i zuzywac pamiec, az serwer zostanie zrestartowany. 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 standardowa klasa .NET; 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 opakowuje to wszystko w jednolinijkowe wywolanie sheet["A1"].StringValue, pokazane w calym 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"]
SHELL

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.

Bezpieczenstwo watkowe jest wbudowane: wiele watków moze otwozac rózne instancje WorkBook równoczesnie bez koniecznosci koordynacji. Jesli musisz przetwarzac tysiece plików równolegle - na przyklad, w procesie w tle przyjmujacym przeslane przez uzytkownika arkusze kalkulacyjne - mozesz uzyc Parallel.ForEach lub Task.WhenAll w calym puli instancji WorkBook bez ryzyka uszkodzenia.

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 wydajności IronXL opisuje 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:

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.

Zacznij z IronXL teraz.
green arrow pointer

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.

Curtis Chau
Autor tekstów technicznych

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ę...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie