Jak pisać pliki CSV w .NET z IronXL
Dłączego 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:
Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
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", ",");
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", ",");
Imports IronXL
' Create a new workbook and worksheet
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As 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.5
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 formatu CSV IronXL tworzy jeden plik na arkusz, nazywając je według wzorca filename.SheetName.csv.
Model ten zapewnia spójny interfejs API niezależnie od tego, czy tworzysz nowe pliki od podstaw, wczytujesz istniejące skoroszyty Excel, czy eksportujesz dane z bazy danych. Odwołujesz się do komórek przy użyciu standardowej notacji programu Excel (A1, B2) lub liczb całkowitych wierszy i kolumn zaczynających się od zera, w zależności od tego, co lepiej pasuje do Twojego stylu 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 w IronXL akceptuje dowolny ciąg znaków 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");
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");
Imports IronXL
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As 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", vbTab)
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?

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", ",");
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", ",");
Imports IronXL
' Load an Excel file with formulas and formatting
Dim workBook As 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:

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

Jak wyeksportować tabelę danych do pliku CSV?
W przypadku aplikacji opartych na bazach danych IronXL ułatwia eksport do DataTable. Poniższy przykład odczytuje DataTable z przykładowego źródła danych i zapisuje go do pliku CSV z separatorem w postaci ś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", ";");
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", ";");
Imports System.Data
Imports IronXL
' Simulate a DataTable from a database query
Dim dataTable As DataTable = GetSalesData()
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("sales")
' Write column headers from DataTable schema
For col As Integer = 0 To dataTable.Columns.Count - 1
workSheet.SetCellValue(0, col, dataTable.Columns(col).ColumnName)
Next
' Write data rows
Dim row As Integer = 1
For Each dataRow As DataRow In dataTable.Rows
For col As Integer = 0 To dataTable.Columns.Count - 1
workSheet.SetCellValue(row, col, If(dataRow(col)?.ToString(), String.Empty))
Next
row += 1
Next
' Export with semicolon delimiter for European compatibility
workBook.SaveAsCsv("sales_data.csv", ";")
Podczas importowania z DataTable każdy wiersz w zbiorze dataTable.Rows staje się nowym wierszem w arkuszu. IronXL zachowuje typy danych podczas konwersji — liczby pozostają liczbami, 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:

!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101000101111101010011010101000100000101010010010101000100010101000100010111110101011101001001010100010010000101111101010000010100100100111101000100010101010100001101010100010111110101010001010010010010010100000101001100010111110100001001001100010011110100001101001011--}
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);
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);
Imports System.Globalization
Imports System.IO
Imports CsvHelper
Using writer As New StreamWriter("employees.csv")
Using csv As New CsvWriter(writer, CultureInfo.InvariantCulture)
csv.WriteRecords(employees)
End Using
End Using
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", ",");
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", ",");
Imports IronXL
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("employees")
Dim rowIndex As Integer = 1
For Each emp In employees
workSheet($"A{rowIndex}").Value = emp.Name
workSheet($"B{rowIndex}").Value = emp.Salary
workSheet($"C{rowIndex}").Value = emp.StartDate
rowIndex += 1
Next
workBook.SaveAsCsv("employees.csv", ",")
| Funkcja | CsvHelper | IronXL |
|---|---|---|
| Podstawy pisania w formacie CSV | Tak | Tak |
| Konwersja plików Excel do CSV | Nie | Tak |
| Ocena formuły | Nie | Tak |
| Obsługa wielu arkuszy | Nie | Tak |
| Zachowanie typów danych | Podręcznik | Automatyczne |
| Obsługa formatów Excel (XLSX, XLS, XLSM) | Nie | Tak |
| Nie jest wymagańy pakiet MS Office | Tak | Tak |
| Formatowanie komórek i style | Nie | Tak |
| Wielopłatformowość (obsługa .NET 10) | Tak | Tak |
CsvHelper sprawnie obsługuje prostą serializację obiektów POCO. IronXL zapewnia dodatkowe możliwości, gdy trzeba załadować istniejące pliki Excel, sprawdzić formuły przed eksportem lub zarządzać zakresami arkuszy z precyzyjną kontrolą. Jeśli Twój proces pracy obejmuje odbieranie plików .xlsx od użytkowników biznesowych i konwertowanie ich do formatu CSV dla systemów niższego szczebla, IronXL eliminuje cały etap konwersji z Twojego procesu.
Jakie funkcje dla Enterprise oferuje IronXL w zakresie eksportu do plików CSV?
Metoda SaveAsCsv firmy IronXL oferuje kilka gotowych do użycia w środowisku produkcyjnym funkcji:
| Funkcja | Opis | Przykład zastosowania |
|---|---|---|
| Niestandardowe separatory | Przecinek, średnik, tabulator lub dowolny znak | Zgodność z regionalnymi ustawieniami lokalnymi |
| Opcje kodowania | UTF-8, UTF-16 i niestandardowe kodowania | Międzynarodowe zestawy znaków |
| Ocena formuły | Oblicza formuły Excel przed eksportem | Raporty finansowe, dane dynamiczne |
| Obsługa wielu platform | Windows, Linux, macOS | Wdrożenia w chmurze i kontenerach |
| Eksport wielu arkuszy | Jeden plik CSV na arkusz | Złożone struktury skoroszytów |
| Zgodność z RFC 4180 | Automatyczne cytowanie znaków specjalnych | Gwarantowana interoperacyjność |
Przed eksportem można zastosować formatowanie danych komórek, aby kontrolować sposób wyświetlania liczb, walut i dat w pliku CSV. W przypadku dużych zbiorów danych należy przetwarzać dane w partiach, korzystając z operacji na zakresach arkusza, aby zużycie pamięci było przewidywalne.
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: W przypadku skoroszytów zawierających dziesiątki tysięcy wierszy należy używać zakresów arkuszy do przetwarzania danych partiami. 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 wymagańa żadna biblioteka kodowania innych firm.
Brakujące lub błędnie wpisane dane: IronXL domyślnie zachowuje formaty liczbowe i daty. Gdy komórka zawiera formułę odwołującą się do brakujących danych, EvaluateAll() zostanie zastąpione wartością błędu zamiast cichego wyświetlania pustego tekstu, co pozwala na wczesne wykrycie problemów z jakością danych w procesie przetwarzania.
Konflikty separatorów: Jeśli dane zawierają znak separatora (na przykład pole ceny zawierające $1,200.00 przy użyciu przecinka jako separatora), IronXL automatycznie otacza wartość podwójnymi cudzysłowami 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", ",");
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", ",");
Imports IronXL
' Load an existing CSV file into a workbook
Dim workBook As WorkBook = WorkBook.Load("sales_data.csv")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Iterate over rows and process data
For Each row In workSheet.Rows
Dim product As String = row("A").ToString()
Dim quantity As Integer = row("B").IntValue
Dim price As Decimal = CType(row("C").DoubleValue, Decimal)
Console.WriteLine($"Product: {product}, Qty: {quantity}, Price: {price:C}")
Next
' 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);
}
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);
}
Imports IronXL
Dim workBook As WorkBook = WorkBook.Load("input.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
Dim errors As New List(Of String)()
For rowIdx As Integer = 1 To workSheet.RowCount
Dim productName As String = workSheet($"A{rowIdx}").StringValue
Dim price As Double = workSheet($"C{rowIdx}").DoubleValue
If String.IsNullOrWhiteSpace(productName) Then
errors.Add($"Row {rowIdx}: Product name is empty.")
End If
If price <= 0 Then
errors.Add($"Row {rowIdx}: Price must be greater than zero (found {price}).")
End If
Next
If errors.Count = 0 Then
workBook.SaveAsCsv("validated_output.csv", ",")
Console.WriteLine("Export complete.")
Else
For Each error As String In errors
Console.WriteLine(error)
Next
End If
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órek w obiektach RangeRow i Cell biblioteki IronXL zwracają wartości silnie typowane, co zmniejsza ryzyko wystąpienia cichych błędów wymuszania typów.
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:
- Dokumentacja IronXL — pełna dokumentacja API i przewodniki użytkownika
- Przewodnik po konwersji plików CSV do formatu Excel — szczegółowa instrukcja konwersji formatów
- Samouczek dotyczący eksportu z DataTable — wzorce eksportu oparte na bazach danych
- Operacje na zakresach arkusza — wydajne przetwarzanie dużych zbiorów danych
- Przewodnik po rozwiązywaniu problemów — rozwiązania typowych problemów z integracją
Gotowy do tworzenia gotowych do wdrożenia procesów CSV? Rozpocznij bezpłatny okres próbny i uruchom swój pierwszy eksport CSV w mniej niż pięć minut.
Często Zadawane Pytania
Do czego służy IronXL?
Biblioteka IronXL for .NET przeznaczona do pracy z plikami Excel, umożliwiająca programistom tworzenie, odczytywanie i modyfikowanie dokumentów Excel, a także eksportowanie ich do różnych formatów, takich jak CSV, przy zachowaniu typów danych i obsłudze złożonych scenariuszy arkuszy kalkulacyjnych.
W jaki sposób IronXL może pomóc w pisaniu plików CSV w .NET?
IronXL oferuje funkcje eksportowania skoroszytów Excel do formatu CSV, zapewniając zachowanie typów danych i skuteczne radzenie sobie ze złożonymi scenariuszami arkuszy kalkulacyjnych, co czyni go idealnym wyborem dla programistów .NET potrzebujących solidnego rozwiązania do zapisywania plików CSV.
Dlaczego programiści powinni rozważyć użycie IronXL do operacji na plikach CSV?
Programiści powinni rozważyć użycie IronXL ze względu na jego zdolność do płynnego eksportowania plików Excel do formatu CSV, obsługi dużych zbiorów danych oraz zachowania integralności typów danych, co stanowi doskonałe rozwiązanie do operacji CSV w aplikacjach .NET.
Jakie są zalety korzystania z IronXL do zarządzania arkuszami kalkulacyjnymi?
Korzyści wynikające z używania IronXL do zarządzania arkuszami kalkulacyjnymi obejmują łatwą obsługę dokumentów Excel, obsługę różnych formatów eksportu, takich jak CSV, oraz możliwość wydajnego przetwarzania złożonych struktur danych i dużych zbiorów danych w aplikacjach .NET.
Czy IronXL radzi sobie z dużymi plikami Excel podczas eksportu do formatu CSV?
Tak, IronXL został zaprojektowany do wydajnej obsługi dużych plików Excel, umożliwiając programistom eksportowanie ogromnych ilości danych do formatu CSV bez utraty wydajności lub integralności danych.
W jaki sposób IronXL zapewnia zachowanie typów danych podczas eksportu do pliku CSV?
IronXL zapewnia zachowanie typów danych poprzez dokładną konwersję danych z Excela do formatu CSV przy zachowaniu oryginalnych typów i struktur danych, co ma kluczowe znaczenie dla aplikacji wymagających precyzyjnej obsługi danych.
Czy IronXL nadaje się do złożonych scenariuszy związanych z arkuszami kalkulacyjnymi?
IronXL doskonale nadaje się do złożonych scenariuszy związanych z arkuszami kalkulacyjnymi, oferując zaawansowane funkcje do zarządzania i manipulowania skomplikowanymi dokumentami Excel oraz zapewniając możliwość dokładnego eksportowania danych do formatu CSV lub innych formatów.




