IRONSOFTWAREHOME
KORZYSTANIE Z IRONXL

C# Czytnik plików CSV: Parsuj i przetwarzaj dane CSV z IronXL

Curtis Chau
Curtis Chau
Updated: 28 czerwca 2026

Pliki CSV (Przecinek Separated Values) są powszechnie stosowane w aplikacjach biznesowych, od raportów finansowych po eksport danych klientów. Format CSV na pierwszy rzut oka wydaje się prosty, ale parsowanie go w kodzie produkcyjnym może szybko stać się trudne, gdy mamy do czynienia z polami w cudzysłowie, wieloma typami separatorów, osadzonymi znakami nowej linii oraz koniecznością konwersji surowego tekstu na obiekty .NET o silnym typowaniu. Biblioteka IronXL .NET zapewnia obsługę plików CSV na poziomie korporacyjnym, umożliwiająca programistom konwersję danych CSV do formatu Excel, XML lub innych formatów przy minimalnym nakładzie kodu.

Ten przewodnik pokazuje, jak działa IronXL jako czytnik plików CSV w języku C# i jak można go zaimplementować w aplikacjach .NET 10. Wypróbuj IronXL samodzielnie dzięki bezpłatnej licencji próbnej i śledź instrukcje, aby dowiedzieć się, jak radzi sobie z zadaniami związanymi z plikami CSV i Excel.

Jak zainstalować IronXL do odczytu plików CSV?

Włączenie IronXL do projektu zajmuje tylko chwilę. Można go zainstalować za pomocą menedżera pakietów NuGet w Visual Studio lub z wiersza poleceń, korzystając z interfejsu CLI .NET lub konsoli menedżera pakietów NuGet w PowerShell. Oba podejścia instalują ten sam pakiet i działają z każdym typem projektu .NET 10.

dotnet add package IronXL.Excel

Więcej szczegółów na temat opcji instalacji i konfiguracji można znaleźć w dokumentacji instalacyjnej IronXL.

Po zainstalowaniu odczytanie pierwszego pliku CSV wymaga bardzo niewielkiej ilości kodu. W poniższym przykładzie wykorzystano instrukcje najwyższego poziomu .NET 10:

using IronXL;

// Load CSV file
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a specific cell
string cellValue = sheet["A1"].StringValue;

// Iterate through all rows and cells
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.WriteLine(cell.StringValue);
    }
}

Metoda WorkBook.LoadCSV zajmuje się identyfikacją nagłówków, tworzy wewnętrzną strukturę danych i wykonuje efektywne pod względem pamięci parsowanie -- upraszczając zarządzanie danymi od pierwszej linii kodu.

Poradnik C# do odczytu plików CSV: Parsowanie i konwersja danych CSV za pomocą IronXL: Obraz 1 - Instalacja NuGet IronXL

Jak odczytywać pliki CSV z niestandardowymi separatorami?

W rzeczywistych plikach CSV nie zawsze stosuje się przecinki. Średniki, pionowe kreski i tabulatory są powszechnie stosowanymi alternatywami, zwłaszcza w międzynarodowych zbiorach danych, gdzie przecinki służą jako separatory dziesiętne. IronXL obsługuje dowolne separatory dzięki elastycznym opcjom ładowania.

using IronXL;

// Load CSV with semicolon delimiter (common in European data exports)
WorkBook workbook = WorkBook.LoadCSV("european-data.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listSeparator: ";");

// Load tab-separated values (TSV)
WorkBook tsvWorkbook = WorkBook.LoadCSV("export_data.tsv",
    fileFormat: ExcelFileFormat.XLSX,
    listSeparator: "\t");

// Load pipe-delimited file
WorkBook pipeWorkbook = WorkBook.LoadCSV("log_export.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listSeparator: "|");

// Access data normally after loading
WorkSheet sheet = workbook.DefaultWorkSheet;
decimal totalSales = sheet["B2:B10"].Sum();

Console.WriteLine($"Total sales: {totalSales}");

Parametr listSeparator akceptuje dowolny ciąg znaków, dając pełną kontrolę nad zachowaniem parsowania. IronXL zachowuje wartości kolumn i typy danych podczas parsowania -- wartości numeryczne pozostają liczbami, daty pozostają jako obiekty DateTime, a formuły zachowują swoje relacje.

W przypadku plików o niespójnym formatowaniu mechanizm obsługi błędów IronXL radzi sobie z nieprawidłowymi wierszami bez powodowania awarii aplikacji, dzięki czemu prawidłowe dane są nadal przetwarzane, nawet jeśli poszczególne wiersze są problematyczne.

Poradnik C# do odczytu plików CSV: Parsowanie i konwersja danych CSV za pomocą IronXL: Obraz 2 - Przykładowy wynik startowy

Obsługiwane formaty plików i separatory

IronXL obsługuje ładowanie następujących typów separatorów podczas odczytu plików CSV:

Typowe typy separatorów obsługiwane przez metodę LoadCSV biblioteki IronXL
SeparatorZnakTypowy przypadek użycia
Przecinek,Standardowy eksport do pliku CSV, lokalizacja amerykańska
Średnik;Eksport do lokalizacji europejskich (gdzie przecinek jest separatorem dziesiętnym)
Tab\tWartości rozdzielone tabulatorami (TSV), eksporty baz danych
Pionowa kreska|Pliki dziennika, eksporty systemowe
Niestandardowy ciąg znakówWszelkieWłasne formaty danych, wieloznakowe separatory

Jak analizować dane CSV na obiekty C#?

Przekształcanie wierszy CSV w obiekty silnie typowane upraszcza przetwarzanie danych i umożliwia operacje LINQ. IronXL ułatwia to mapowanie dzięki metodom dostępu do komórek. Poniższy kod pokazuje, jak zamapować plik CSV na listę obiektów typu za pomocą instrukcji najwyższego poziomu w .NET 10:

using IronXL;

// Define a typed model matching your CSV structure
public record Product(string Name, decimal Price, int Stock, DateTime? LastUpdated);

// Load and parse CSV file
WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

var products = new List<Product>();

// Start from row 2 to skip the header row
for (int row = 2; row <= sheet.RowCount; row++)
{
    products.Add(new Product(
        Name: sheet[$"A{row}"].StringValue,
        Price: sheet[$"B{row}"].DecimalValue,
        Stock: sheet[$"C{row}"].IntValue,
        LastUpdated: sheet[$"D{row}"].DateTimeValue
    ));
}

// Use LINQ for analysis after loading
var lowStock = products.Where(p => p.Stock < 10).ToList();
var highValue = products.Where(p => p.Price > 100m).OrderByDescending(p => p.Price).ToList();

Console.WriteLine($"Products with low stock: {lowStock.Count}");
Console.WriteLine($"High-value products: {highValue.Count}");

Właściwości wartości typizowanych w IronXL -- StringValue, DecimalValue, IntValue, DateTimeValue -- bezpiecznie obsługują konwersje, zwracając wartości domyślne dla nieprawidłowych danych zamiast wyrzucać wyjątki. To defensywne podejście gwarantuje, że aplikacje obsługują niedoskonałe dane bez zakłóceń. Naturalnie współgra z typami rekordów C#, które zostały wprowadzone w C# 9 i zapewniają zwięzły, niezmienny model danych dla mapowanych wierszy CSV.

Strona funkcji IronXL zawiera pełny przegląd typów akcesorów wartości dostępnych do odczytu danych komórek.

Poradnik C# do odczytu plików CSV: Parsowanie i konwersja danych CSV za pomocą IronXL: Obraz 3 - Wynik odczytu różnych separatorów

Jak filtrować i wyszukiwać dane CSV za pomocą LINQ?

Gdy dane CSV są załadowane do WorkSheet, można z nimi pracować używając selektorów zakresu lub konwertować je na obiekty do zapytań LINQ. W przypadku prostych operacji na kolumnach dostęp oparty na zakresach jest najprostszą metodą:

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("sales-data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read entire columns using range notation
var productNames = sheet["A2:A100"]
    .Select(cell => cell.StringValue)
    .Where(name => !string.IsNullOrEmpty(name))
    .ToList();

// Aggregate numeric columns directly
decimal totalRevenue = sheet["C2:C100"].Sum();
decimal averageOrder = sheet["C2:C100"].Avg();

Console.WriteLine($"Products loaded: {productNames.Count}");
Console.WriteLine($"Total revenue: {totalRevenue:C}");
Console.WriteLine($"Average order value: {averageOrder:C}");

To podejście oparte na zakresach pozwala uniknąć iteracji wiersz po wierszu w przypadku prostych agregacji, co poprawia wydajność w przypadku większych plików. Pełną listę obsługiwanych operacji na zakresach można znaleźć w dokumentacji IronXL.

Jak konwertować CSV na format Excel w C#?

Wiele procesów biznesowych wymaga danych CSV w formacie Excel do zaawansowanej analizy, formatowania lub dystrybucji. IronXL sprawia, że konwersja ta jest prosta, przy jednoczesnym zachowaniu integralności wszystkich danych.

using IronXL;

// Load CSV file
WorkBook csvWorkbook = WorkBook.LoadCSV("monthly-report.csv");
WorkSheet sheet = csvWorkbook.DefaultWorkSheet;

// Apply formatting before saving
sheet["A1:D1"].Style.Font.Bold = true;
sheet["A1:D1"].Style.BackgroundColor = "#4472C4";
sheet["A1:D1"].Style.Font.Color = "#FFFFFF";

// Apply currency format to price column
sheet["B2:B1000"].FormatString = "$#,##0.00";

// Apply date format to date column
sheet["D2:D1000"].FormatString = "yyyy-MM-dd";

// Save as Excel with a single method call
csvWorkbook.SaveAs("monthly-report.xlsx");

Console.WriteLine("Conversion complete: monthly-report.xlsx");

Konwersja zachowuje precyzję liczbową, formaty dat oraz znaki specjalne, które często powodują problemy przy ręcznych metodach konwersji. IronXL automatycznie optymalizuje strukturę wynikowego pliku Excel, tworząc wydajne pliki, które otwierają się szybko nawet w przypadku dużych zbiorów danych.

Aby uzyskać dodatkową kontrolę nad formatem wyjściowym, przewodnik dotyczący eksportu obejmuje opcje eksportu do formatów XLSX, XLS, CSV i PDF. Możesz również dowiedzieć się, jak pisać pliki Excel i tworzyć je od podstaw.

Poradnik C# do odczytu plików CSV: Parsowanie i konwersja danych CSV za pomocą IronXL: Obraz 4 - Wynik parsowania danych CSV

Konwersja pliku CSV do zestawu danych (DataSet) na potrzeby operacji bazodanowych

Gdy trzeba załadować dane CSV do DataSet do dalszego przetwarzania lub wstawienia do bazy danych, IronXL zapewnia bezpośrednie wsparcie konwersji. Szczegółowe wyjaśnienie znajduje się w przewodniku "Excel to DataSet":

using IronXL;
using System.Data;

WorkBook workbook = WorkBook.LoadCSV("customer-export.csv");

// Convert entire workbook to DataSet
DataSet dataSet = workbook.ToDataSet();

// The first sheet becomes the first DataTable
DataTable customerTable = dataSet.Tables[0];

Console.WriteLine($"Rows loaded: {customerTable.Rows.Count}");
Console.WriteLine($"Columns: {customerTable.Columns.Count}");

// Process with standard ADO.NET
foreach (DataRow row in customerTable.Rows)
{
    string name = row["Name"]?.ToString() ?? string.Empty;
    string email = row["Email"]?.ToString() ?? string.Empty;
    Console.WriteLine($"Customer: {name} <{email}>");
}

To podejście integruje się bezpośrednio z przepływami pracy ADO.NET i jest przydatne podczas przesyłania danych CSV do SQL Server, SQLite lub innych relacyjnych baz danych za pośrednictwem standardowych adapterów danych. Ponieważ DataSet i DataTable są podstawowymi typami .NET, ta ścieżka nie wymaga dodatkowych zależności poza samym IronXL.

Jak radzisz sobie z dużymi plikami CSV i optymalizacją wydajności?

Przetwarzanie dużych plików CSV — zawierających dziesiątki tysięcy wierszy lub więcej — wymaga zwrócenia uwagi na sposób uzyskiwania dostępu do danych oraz zarządzanie pamięcią. IronXL zawiera funkcje, które pomagają w pracy z dużymi plikami.

Wykorzystanie operacji zakresowych w celu poprawy wydajności

Aby uzyskać optymalną wydajność przy pracy z dużymi zbiorami danych, należy stosować operacje na zakresach zamiast uzyskiwać dostęp do poszczególnych komórek pojedynczo. Operacje na zakresach są przetwarzane bardziej efektywnie przez wewnętrzny silnik IronXL:

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("large-dataset.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;

Console.WriteLine($"Dataset dimensions: {rowCount} rows x {colCount} columns");

// Efficient: read entire range at once
var allData = sheet[$"A1:{GetColumnLetter(colCount)}{rowCount}"]
    .Select(cell => cell.StringValue)
    .ToList();

// Efficient: aggregate a column without row-by-row iteration
decimal columnSum = sheet[$"B2:B{rowCount}"].Sum();

Console.WriteLine($"Column B total: {columnSum}");

static string GetColumnLetter(int col)
{
    string result = string.Empty;
    while (col > 0)
    {
        col--;
        result = (char)('A' + col % 26) + result;
        col /= 26;
    }
    return result;
}

IronXL automatycznie obsługuje różne formaty kodowania tekstu (UTF-8, UTF-16, ASCII) podczas ładowania plików CSV, zapewniając prawidłowe wyświetlanie znaków międzynarodowych w wartościach kolumn bez dodatkowej konfiguracji. Jest to szczególnie ważne w przypadku plików eksportowanych z systemów w regionach, gdzie powszechnie stosuje się BOM UTF-8 lub alternatywne kodowania.

Obsługa błędów dla niezaufanych źródeł CSV

Podczas przetwarzania plików CSV z niezaufanych lub zmiennych źródeł, umieszczenie operacji w blokach try-catch zapewnia dodatkową warstwę bezpieczeństwa:

using IronXL;

string filePath = "user-uploaded-data.csv";

try
{
    WorkBook workbook = WorkBook.LoadCSV(filePath);
    WorkSheet sheet = workbook.DefaultWorkSheet;

    Console.WriteLine($"Loaded {sheet.RowCount} rows from {filePath}");

    for (int row = 2; row <= sheet.RowCount; row++)
    {
        string value = sheet[$"A{row}"].StringValue;
        if (!string.IsNullOrWhiteSpace(value))
        {
            Console.WriteLine(value);
        }
    }
}
catch (IronXL.Exceptions.IronXLException ex)
{
    Console.WriteLine($"IronXL error reading {filePath}: {ex.Message}");
}
catch (IOException ex)
{
    Console.WriteLine($"File access error: {ex.Message}");
}

Poradniki IronXL obejmują wzorce importu danych z różnych źródeł, w tym plików, strumieni i tablic bajtów.

Poradnik C# do odczytu plików CSV: Parsowanie i konwersja danych CSV za pomocą IronXL: Obraz 5 - Konwersja CSV do formatu Excel

Wdrażanie wielopłatformowe

IronXL działa niezależnie od pakietu Microsoft Office, dzięki czemu nadaje się do środowisk serwerowych i wdrożeń w chmurze. Niezależnie od tego, czy wdrażasz na Windows, Linux, macOS, w kontenerach Docker, czy w funkcjach chmury na Azure lub AWS, IronXL zapewnia spójne wyniki na wszystkich platformach bez zmian w konfiguracji.

Ta wielopłatformowa funkcjonalność jest cenna w architekturach mikrousług, gdzie lekkie kontenery obsługują zadania przetwarzania danych. Przegląd funkcji IronXL zawiera pełną listę obsługiwanych środowisk i platform uruchomieniowych.

Jak uzyskać licencję na IronXL?

IronXL wymaga klucza licencyjnego do użytkowania w środowiskach produkcyjnych. Dostępna jest bezpłatna licencja próbna do oceny, a licencje komercyjne są dostępne dla indywidualnych programistów, zespołów i organizacji.

Zastosuj klucz licencyjny w swojej aplikacji przed wykonaniem jakichkolwiek wywołań IronXL:

using IronXL;

// Apply license key at application startup
IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

// Verify the license is active
if (IronXL.License.IsValidLicense("YOUR-LICENSE-KEY-HERE"))
{
    Console.WriteLine("IronXL license is active.");
}

// Now use IronXL normally
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
Console.WriteLine($"Loaded {sheet.RowCount} rows.");

Aby zapoznać się z opcjami wersji próbnej i licencjonowania, odwiedź stronę licencyjną IronXL.

Dlaczego IronXL jest właściwym wyborem do przetwarzania plików CSV?

IronXL zmienia odczytywanie plików CSV w języku C# z żmudnego zadania parsowania w prostą operację. Biblioteka obsługuje typowe skrajne przypadki, w których ręczne parsowanie daje błędy — wbudowane przecinki, znaki nowej linii wewnątrz pól w cudzysłowie, niespójne separatory, różnice w kodowaniu i nieprawidłowo sformatowane wiersze — bez konieczności pisania niestandardowego kodu dla każdego scenariusza. Niezależnie od tego, czy potrzebujesz szybkiego, jednorazowego importu danych, czy też potoku produkcyjnego przetwarzającego tysiące plików dziennie, ten sam interfejs API działa w obu kontekstach.

Ręczne parsowanie CSV z string.Split lub StreamReader szybko się łamie, gdy pola w cudzysłowie zawierają znak separatora lub gdy w polach pojawiają się łamania linii. IronXL domyślnie obsługuje te przypadki poprawnie, zgodnie ze specyfikacją CSV dotyczącą obsługi pól w cudzysłowie i sekwencji escape.

Kluczowe zalety, które wyróżniają IronXL w pracy z plikami CSV w .NET 10:

  • Brak zależności od pakietu Office: wdrożenia serwerowe i chmurowe działają bez konieczności instalowania pakietu Microsoft Office ani żadnej interoperacyjności COM
  • Własne separatory: Każdy znak lub ciąg separatora jest obsługiwany za pomocą parametru listSeparator
  • Bezpieczny typowo dostęp do komórek: Akcesory StringValue, DecimalValue, IntValue i DateTimeValue zwracają bezpieczne wartości domyślne zamiast wyrzucać błędy dla złych danych
  • Operacje na zakresach: agreguj i wyszukuj dane w różnych zakresach bez iteracji wiersz po wierszu
  • Konwersja formatów: wczytaj plik CSV i zapisz go jako XLSX, XLS, PDF lub w innym formacie w ramach jednego procesu
  • Integracja z DataSet: Konwersja załadowanych skoroszytów do DataSet / DataTable do operacji z ADO.NET i bazami danych
  • Wielopłatformowość: Działa na systemach Windows, Linux, macOS, w środowisku Docker oraz w chmurze bez konieczności wprowadzania zmian

Dokumentacja IronXL oraz przewodnik po formatowaniu komórek zawierają dalsze szczegóły dotyczące formatowania, obsługi formuł oraz zaawansowanych operacji w skoroszytach.

Gotowy do pewnego obchodzenia się z plikami CSV? Zacznij od bezpłatnej wersji próbnej i poznaj pełen zestaw funkcji IronXL.

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ęczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta