IRONSOFTWAREHOME
KORZYSTANIE Z IRONXL

Jak pisać pliki CSV w .NET z IronXL

Curtis Chau
Curtis Chau
Updated: 28 czerwca 2026

Dlaczego programiści .NET potrzebują lepszego rozwiązania do obsługi plików CSV?

Pliki CSV umożliwiają wymianę danych między niezliczoną liczbą aplikacji .NET — a standardowe opcje biblioteczne często okazują się niewystarczające, gdy trzeba poradzić sobie ze złożonością rzeczywistych sytuacji. Od raportów finansowych po systemy magazynowe — można programowo tworzyć pliki CSV za pomocą zaledwie kilku wierszy kodu. Podczas gdy biblioteki takie jak CsvHelper obsługują podstawowe operacje CSV, współcześni programiści mają do czynienia ze złożonymi scenariuszami: konwersją skoroszytów Excel zawierających formuły, zachowaniem typów danych podczas eksportu oraz obsługą procesów związanych z arkuszami kalkulacyjnymi na poziomie Enterprise. IronXL odpowiada na te wyzwania, łącząc niezawodne zapisywanie plików CSV z pełną funkcjonalnością programu Excel w jednej, niezależnej bibliotece IronXL, zgodnej ze standardami RFC 4180.

Dzięki temu idealnie nadaje się dla programistów tworzących niestandardowy moduł zapisujący pliki CSV w środowisku .NET lub parser plików CSV w środowisku .NET, który obsługuje wiele kolumn, logikę przetwarzania specyficzną dla wierszy oraz automatycznie wnioskowane separatory. Ten samouczek przeprowadzi Cię przez możliwości IronXL w zakresie plików CSV — od podstawowego tworzenia plików po eksport danych na skalę Enterprise.

Jak zainstalować i skonfigurować IronXL?

Instalacja IronXL zajmuje kilka sekund za pomocą menedżera pakietów NuGet. Można użyć konsoli menedżera pakietów lub interfejsu CLI platformy .NET:

PM > Install-Package IronXL.Excel

Po zainstalowaniu dodaj przestrzeń nazw IronXL i od razu zacznij tworzyć pliki CSV. Poniższy przykład pokazuje, jak utworzyć skoroszyt, wypełnić go danymi i wyeksportować do pliku CSV przy użyciu instrukcji najwyższego poziomu w .NET 10:

using IronXL;

// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("data");

// Add headers
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";

// Add data rows
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 100;
workSheet["C2"].Value = 19.99;

workSheet["A3"].Value = "Gadget";
workSheet["B3"].Value = 250;
workSheet["C3"].Value = 34.50;

workSheet["A4"].Value = "Component";
workSheet["B4"].Value = 75;
workSheet["C4"].Value = 8.99;

// Save as CSV with comma delimiter
workBook.SaveAsCsv("inventory.csv", ",");

Ten prosty program pokazuje, jak zapisywać zawartość pliku CSV bezpośrednio z kodu C#, tworząc obiekt WorkBook, który przechowuje dane. Metoda SaveAsCsv używa przecinka jako domyślnego separatora, ale pozwala na określenie dowolnego znaku separatora — przydatnego w scenariuszach specyficznych dla danego regionu, gdzie standardowym separatorem kolumn są średniki lub tabulatory.

Zrozumienie modelu WorkBook i WorkSheet

IronXL organizuje dane poprzez hierarchię skoroszytów i arkuszy. Arkusz roboczy (WorkBook) pełni rolę kontenera dla jednego lub więcej obiektów arkusza roboczego (WorkSheet), z których każdy reprezentuje siatkę komórek. Podczas eksportu do CSV, IronXL tworzy jeden plik na arkusz, nazywając je według wzoru filename.SheetName.csv.

Ten model daje spójne API, niezależnie od tego, czy tworzysz nowe pliki od podstaw, ładujesz istniejące skoroszyty Excel, czy eksportujesz dane z bazy danych. Odwołujesz się do komórek używając standardowej notacji Excel (A1, B2) lub liczb wierszy i kolumn zaczynających się od zera, w zależności od potrzeb twojego przepływu pracy.

Jak tworzyć pliki CSV z niestandardowymi separatorami?

W różnych regionach i systemach stosuje się różne separatory kolumn. W europejskich lokalizacjach często stosuje się średniki, ponieważ przecinki występują w liczbach dziesiętnych. Wartości rozdzielone tabulatorami (TSV) są powszechnie stosowane w bioinformatyce i procesach przetwarzania logów. Metoda SaveAsCsv IronXL przyjmuje dowolny ciąg jako separator:

using IronXL;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");

workSheet["A1"].Value = "Region";
workSheet["B1"].Value = "Revenue";
workSheet["C1"].Value = "Units";

workSheet["A2"].Value = "Europe";
workSheet["B2"].Value = "1250000.50";
workSheet["C2"].Value = 3400;

workSheet["A3"].Value = "Nierth America";
workSheet["B3"].Value = "2800000.00";
workSheet["C3"].Value = 7200;

// Semicolon delimiter for European locales
workBook.SaveAsCsv("sales_europe.csv", ";");

// Tab delimiter for TSV output
workBook.SaveAsCsv("sales_tsv.tsv", "\t");

Ciąg znaków oddzielających trafia bezpośrednio do pola znaku separatora bez dodatkowej konfiguracji parsowania. IronXL obsługuje cytowanie komórek zawierających znak separatora, zapewniając zgodność wyników z RFC 4180.

Jak przekonwertować skoroszyty Excel na CSV?

Jak stworzyć pisarza CSV dla .NET używając IronXL: Rysunek 1 - Przykładowe wyjście CSV z IronXL

IronXL doskonale radzi sobie z konwersją istniejących plików Excel do formatu CSV, obliczaniem formuł i zachowaniem integralności danych. Jest to niezbędne podczas pracy z arkuszami kalkulacyjnymi zawierającymi zarówno wiersze nagłówkowe, jak i wartości obliczane dynamicznie.

using IronXL;

// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");

// Evaluate all formulas before export so calculated values appear in CSV
workBook.EvaluateAll();

// Export to CSV -- each worksheet creates a separate CSV file
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
workBook.SaveAsCsv("report.csv", ",");

Podczas konwersji skoroszytów wielarkuszowych IronXL automatycznie generuje osobne pliki CSV dla każdego arkusza. Obliczenia formuł są wykonywane przed eksportem, co zapewnia dokładność danych w końcowym pliku CSV. Metoda EvaluateAll oblicza wszystkie formuły, w tym odwołania międzyarkuszowe, przed zapisaniem pliku na dysku.

Wynik

Najpierw możesz zobaczyć pliki CSV wygenerowane z wielarkuszowego pliku Excel:

Jak stworzyć pisarza CSV dla .NET używając IronXL: Rysunek 2 - Pliki CSV

A oto przykładowe porównanie jednego z arkuszy Excel z odpowiadającym mu plikiem CSV:

Jak stworzyć pisarza CSV dla .NET używając IronXL: Rysunek 3 - Przykładowe wyjście

Jak wyeksportować tabelę danych do pliku CSV?

Dla aplikacji bazodanowych, IronXL ułatwia eksport DataTable. Poniższy przykład odczytuje DataTable z fikcyjnego źródła danych i zapisuje go do CSV z separatorem średnika:

using System.Data;
using IronXL;

// Simulate a DataTable from a database query
DataTable dataTable = GetSalesData();

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");

// Write column headers from DataTable schema
for (int col = 0; col < dataTable.Columns.Count; col++)
{
    workSheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);
}

// Write data rows
int row = 1;
foreach (DataRow dataRow in dataTable.Rows)
{
    for (int col = 0; col < dataTable.Columns.Count; col++)
    {
        workSheet.SetCellValue(row, col, dataRow[col]?.ToString() ?? string.Empty);
    }
    row++;
}

// Export with semicolon delimiter for European compatibility
workBook.SaveAsCsv("sales_data.csv", ";");

Podczas importu z DataTable, każdy wiersz w kolekcji dataTable.Rows staje się nowym wierszem w arkuszu. IronXL zachowuje formaty danych podczas konwersji — liczby pozostają numeryczne, daty zachowują swoje formatowanie, a tekst obsługuje znaki specjalne bez dodatkowej konfiguracji.

Wynik

Tutaj można zobaczyć przykładowe źródło danych obok wyjściowego pliku CSV:

Jak stworzyć pisarza CSV dla .NET używając IronXL: Rysunek 4 - Eksportowanie DataTable do pliku CSV

Pierwszy krok:
arrow pointer

Jak IronXL wypada w porównaniu z CsvHelper pod względem tworzenia plików CSV?

Rozważmy ten scenariusz eksportu danych pracowników, ilustrujący procesy zapisywania plików CSV przy użyciu obu bibliotek.

Implementacja CsvHelper:

using System.Globalization;
using System.IO;
using CsvHelper;

using var writer = new StreamWriter("employees.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
csv.WriteRecords(employees);

Wdrożenie IronXL:

using IronXL;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");

int rowIndex = 1;
foreach (var emp in employees)
{
    workSheet[$"A{rowIndex}"].Value = emp.Name;
    workSheet[$"B{rowIndex}"].Value = emp.Salary;
    workSheet[$"C{rowIndex}"].Value = emp.StartDate;
    rowIndex++;
}

workBook.SaveAsCsv("employees.csv", ",");
Porównanie funkcji IronXL i CsvHelper
FunkcjaCsvHelperIronXL
Podstawy pisania w formacie CSVTakTak
Konwersja plików Excel do CSVNieTak
Ocena formułyNieTak
Obsługa wielu arkuszyNieTak
Zachowanie typów danychPodręcznikAutomatyczne
Obsługa formatów Excel (XLSX, XLS, XLSM)NieTak
Nie jest wymagany pakiet MS OfficeTakTak
Formatowanie komórek i styleNieTak
Wielopłatformowość (obsługa .NET 10)TakTak

CsvHelper sprawnie obsługuje prostą serializację obiektów POCO. IronXL umożliwia dodatkowe możliwości, gdy potrzebujesz załadować istniejące pliki Excel, ocenić formuły przed eksportem lub zarządzać zakresami arkuszy z precyzyjną kontrolą. Jeśli twoja ścieżka robocza polega na przyjmowaniu plików .xlsx od użytkowników biznesowych i konwertowaniu ich do CSV dla systemów z dolnego biegu, IronXL usuwa cały krok konwersji z twojego potoku.

Jakie funkcje dla Enterprise oferuje IronXL w zakresie eksportu do plików CSV?

Metoda SaveAsCsv IronXL dostarczana jest z kilkoma gotowymi do produkcji funkcjami:

Funkcje IronXL CSV Export Enterprise
FunkcjaOpisPrzykład zastosowania
Niestandardowe separatoryPrzecinek, średnik, tabulator lub dowolny znakZgodność z regionalnymi ustawieniami lokalnymi
Opcje kodowaniaUTF-8, UTF-16 i niestandardowe kodowaniaMiędzynarodowe zestawy znaków
Ocena formułyOblicza formuły Excel przed eksportemRaporty finansowe, dane dynamiczne
Obsługa wielu platformWindows, Linux, macOSWdrożenia w chmurze i kontenerach
Eksport wielu arkuszyJeden plik CSV na arkuszZłożone struktury skoroszytów
Zgodność z RFC 4180Automatyczne cytowanie znaków specjalnychGwarantowana interoperacyjność

Możesz zastosować formatowanie danych komórki przed eksportem, aby kontrolować, jak liczby, waluty i daty pojawiają się w wyjściu CSV. Dla dużych zbiorów danych, przetwarzaj dane w kawałkach za pomocą operacji zakresu arkuszy, aby utrzymać przewidywalne zużycie pamięci.

Obsługa wielu platform oznacza, że można wdrożyć generowanie plików CSV oparte na IronXL w kontenerach Linux w Kubernetes lub Azure App Service bez wprowadzania jakichkolwiek zmian w kodzie. Biblioteka nie zawiera żadnych zależności niezarządzanych, dzięki czemu działa identycznie na różnych systemach operacyjnych. Pełne informacje na temat obsługiwanych środowisk uruchomieniowych można znaleźć w przewodniku zgodności platformy IronXL.

Jak radzisz sobie z typowymi problemami związanymi z eksportem do plików CSV?

Podczas pracy z eksportami CSV na dużą skalę pojawia się kilka przewidywalnych problemów. Oto jak rozwiązać każdy z nich:

Znaki specjalne w danych: IronXL automatycznie zamienia znaki cudzysłowu, przecinki i znaki nowej linii w wartościach komórek. Nie ma potrzeby wstępnego przetwarzania ciągów znaków ani pisania niestandardowej logiki escape — biblioteka wewnętrznie obsługuje reguły cytowania RFC 4180.

Obsługa dużych plików: Dla arkuszy z dziesiątkami tysięcy wierszy używaj zakresów arkuszy, aby przetwarzać dane w partiach. Zapisywanie danych do arkuszy pośrednich przed ostatecznym eksportem zapewnia kontrolę nad alokacją pamięci.

Kwestie związane z kodowaniem: W przypadku znaków międzynarodowych, alfabetów azjatyckich lub emoji w wartościach komórek należy wyraźnie określić kodowanie UTF-8. IronXL obsługuje kodowanie UTF-8 i UTF-16 od razu po uruchomieniu, więc nie jest wymagana żadna biblioteka kodowania innych firm.

Brakujące lub błędnie wpisane dane: IronXL domyślnie zachowuje formaty liczbowe i daty. Kiedy komórka zawiera formułę, która odnosi się do brakujących danych, EvaluateAll() rozwiązuje ją jako wartość błędu, zamiast cicho emitować pusty tekst, co sprawia, że problemy z jakością danych są widoczne we wczesnym etapie potoku.

Konflikty separatorów: Jeśli twoje dane zawierają znak separatora (na przykład, pole z ceną zawierające $1,200.00 przy użyciu przecinka jako separatora), IronXL automatycznie otacza wartość w cudzysłowach zgodnie z zasadami RFC 4180.

Szczegółowe wskazówki można znaleźć w dokumentacji IronXL CSV, Dokumentacji API oraz zasobach pomocy technicznej.

Jak odczytywać i analizować pliki CSV za pomocą IronXL?

Zapis w formacie CSV to tylko połowa sukcesu. IronXL obsługuje również odczyt i parsowanie plików CSV, ładując dane rozdzielone przecinkami do struktury skoroszytu, którą można przeszukiwać, filtrować i przekształcać przed eksportem do dowolnego formatu.

using IronXL;

// Load an existing CSV file into a workbook
WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Iterate over rows and process data
foreach (var row in workSheet.Rows)
{
    string product = row["A"].ToString();
    int quantity = row["B"].IntValue;
    decimal price = (decimal)row["C"].DoubleValue;

    Console.WriteLine($"Product: {product}, Qty: {quantity}, Price: {price:C}");
}

// Apply a filter and re-export to a new CSV
workBook.SaveAsCsv("filtered_output.csv", ",");

Załadowanie pliku CSV za pomocą IronXL zapewnia dostęp do pełnego interfejsu API arkusza kalkulacyjnego, w tym sortowania, filtrowania i obliczania formuł. Można również zapisać załadowane dane jako plik Excel za pomocą funkcji SaveAs, konwertując CSV na XLSX za pomocą jednego wywołania metody — jest to częsty wymóg podczas tworzenia usług generowania raportów.

Jak weryfikować dane CSV przed eksportem?

Walidacja danych przed eksportem zapobiega awariom w dalszej części procesu. IronXL zapewnia bezpośredni dostęp do wartości i typów komórek, dzięki czemu przed zapisaniem można sprawdzić, czy nie ma wartości null, wymusić zakresy liczbowe i odrzucić nieprawidłowe daty:

using IronXL;

WorkBook workBook = WorkBook.Load("input.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

var errors = new List<string>();

for (int rowIdx = 1; rowIdx <= workSheet.RowCount; rowIdx++)
{
    string productName = workSheet[$"A{rowIdx}"].StringValue;
    double price = workSheet[$"C{rowIdx}"].DoubleValue;

    if (string.IsNullOrWhiteSpace(productName))
        errors.Add($"Row {rowIdx}: Product name is empty.");

    if (price <= 0)
        errors.Add($"Row {rowIdx}: Price must be greater than zero (found {price}).");
}

if (errors.Count == 0)
{
    workBook.SaveAsCsv("validated_output.csv", ",");
    Console.WriteLine("Export complete.");
}
else
{
    foreach (var error in errors)
        Console.WriteLine(error);
}

Ten wzorzec jest szczególnie przydatny w potokach ETL, gdzie nieprawidłowe wiersze powinny być odrzucane — i rejestrowane — zamiast być po cichu eksportowane. Metody dostępu do danych komórki w obiektach RangeRow i Cell IronXL zwracają wartości ściśle typowane, zmniejszając ryzyko błędów wynikających z cichego wymuszania typu.

Jak rozpocząć pracę z IronXL do zapisywania plików CSV?

IronXL zmienia zapis CSV z trudnego zadania parsowania w prostą operację. Dzięki połączeniu funkcji CSV z obsługą skoroszytów Excel, obliczaniem formuł i automatyczną obsługą typów eliminuje złożoność związaną z zarządzaniem wieloma bibliotekami lub ręczną konwersją danych.

Bezpłatna wersja próbna zapewnia pełny dostęp do wszystkich funkcji — w tym eksportu wielu arkuszy, obliczania formuł i wdrażania na różnych platformach — bez konieczności posiadania klucza licencyjnego podczas tworzenia oprogramowania. Kiedy będziesz gotowy do przejścia do produkcji, licencja zaczyna się od poziomu dla jednego programisty, który obejmuje użytkowanie komercyjne.

Kluczowe zasoby na początek:

Gotowy do tworzenia gotowych do wdrożenia procesów CSV? Bezpłatna próba i uruchom swój pierwszy eksport CSV w mniej niż pięć minut.

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