How to Use C# to Convert Datatable to CSV

This article was translated from English: Does it need improvement?
Translated
View the article in English

Konwertuj DataTable do CSV w C# używając IronXL poprzez stworzenie WorkBook, wypełnienie go wierszami DataTable oraz wywołanie metody SaveAsCsv() - bez potrzeby złożonych pętli lub Interopu.

Szybki start: Jednowierszowy eksport DataTable do CSV

Użyj IronXL, aby przekształcić wypełniony DataTable w plik CSV za pomocą jednego wywołania metody - bez pętli, bez Interopu, bez złożoności. Potrzebujesz tylko WorkBook i jego DefaultWorkSheet, aby eksportować w ciągu kilku sekund używając SaveAsCsv.

  1. Install IronXL with NuGet Package Manager

    PM > Install-Package IronXL.Excel
  2. Skopiuj i uruchom ten fragment kodu.

    IronXL.WorkBook.Create().DefaultWorkSheet.SaveAsCsv("output.csv", ",");
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronXL w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

Krok 1

Jak zainstalować IronXL w moim projekcie?

Musisz zainstalować IronXL, zanim użyjesz go w swoich aplikacjach. IronXL oferuje wiele możliwości instalacji dla twoich projektów. IronXL to biblioteka, która upraszcza pracę z plikami Excel w C# bez potrzeby instalacji Microsoft Excel lub Interopu.

Jaka metoda instalacji powinna być użyta?

Pobierz z oficjalnej strony używając poniższego linku: https://ironsoftware.com/csharp/excel/docs/

or

  • W Visual Studio wybierz menu Projekt
  • Kliknij Zarządzaj pakietami NuGet
  • Wyszukaj IronXL.Excel
  • Kliknij Zainstaluj

Jakiej komendy NuGet powinienem użyć?

Install-Package IronXL.Excel

Dlaczego warto wybrać NuGet Package Manager?

NuGet to preferowana metoda dla deweloperów .NET, ponieważ automatycznie zarządza zależnościami i utrzymuje biblioteki w aktualności. Pakiet IronXL zawiera wszystkie niezbędne komponenty do konwerowania typów plików arkusza kalkulacyjnego i pracy z różnymi formatami Excela.

Okno instalacji pakietu IronXL.Excel NuGet pokazujące szczegóły pakietu, informacje o wersji oraz przycisk instalacji w Visual Studio Package Manager
Rysunek 1 - Pakiet IronXL.Excel NuGet

Poradnik "Jak to zrobić"

Jak stworzyć i eksportować DataTable do CSV?

Proces konwersji DataTable do CSV obejmuje utworzenie WorkBook, wypełnienie go danymi oraz użycie wbudowanej w IronXL funkcji zapisu do CSV. To podejście jest bardziej wydajne niż ręczne tworzenie stringów CSV czy używanie tradycyjnych metod strumieniowych.

Jaki przestrzeń nazw muszę zaimportować?

Najpierw zaimportuj przestrzeń nazw IronXL. IronXL zapewnia kompleksowe wsparcie dla importu i eksportu DataSet i DataTable obiektów, co czyni go idealnym dla aplikacji opartych na bazach danych.

:path=/static-assets/excel/content-code-examples/how-to/csharp-datatable-to-csv-3.cs
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

Jaki jest kompletny przykład kodu?

Dodaj następujący kod:

:path=/static-assets/excel/content-code-examples/how-to/csharp-database-to-csv-datatable.cs
using IronXL;
using System;
using System.Data;

// Create a new DataTable object
DataTable table = new DataTable();

// Add a single column named "Example_DataSet" of type string
table.Columns.Add("Example_DataSet", typeof(string));

// Add rows to the DataTable
table.Rows.Add("0");
table.Rows.Add("1");
table.Rows.Add("2");
table.Rows.Add("3");
table.Rows.Add("1");
table.Rows.Add("2");
table.Rows.Add("3");

// Create a new Excel workbook and set its author metadata
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
wb.Metadata.Author = "OJ";

// Get the default worksheet
WorkSheet ws = wb.DefaultWorkSheet;

// Initialize rowCounter for Excel sheet rows
int rowCount = 1;

// Loop through each row in the DataTable and add the data to the Excel worksheet
foreach (DataRow row in table.Rows)
{
    // Populate worksheet cells with data from DataTable
    ws["A" + (rowCount)].Value = row[0].ToString();
    rowCount++;
}

// Save the workbook as a CSV file
wb.SaveAsCsv("Save_DataTable_CSV.csv", ";"); // Will be saved as: Save_DataTable_CSV.Sheet1.csv
Imports IronXL
Imports System
Imports System.Data

' Create a new DataTable object
Dim table As New DataTable()

' Add a single column named "Example_DataSet" of type string
table.Columns.Add("Example_DataSet", GetType(String))

' Add rows to the DataTable
table.Rows.Add("0")
table.Rows.Add("1")
table.Rows.Add("2")
table.Rows.Add("3")
table.Rows.Add("1")
table.Rows.Add("2")
table.Rows.Add("3")

' Create a new Excel workbook and set its author metadata
Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
wb.Metadata.Author = "OJ"

' Get the default worksheet
Dim ws As WorkSheet = wb.DefaultWorkSheet

' Initialize rowCounter for Excel sheet rows
Dim rowCount As Integer = 1

' Loop through each row in the DataTable and add the data to the Excel worksheet
For Each row As DataRow In table.Rows
    ' Populate worksheet cells with data from DataTable
    ws("A" & rowCount).Value = row(0).ToString()
    rowCount += 1
Next

' Save the workbook as a CSV file
wb.SaveAsCsv("Save_DataTable_CSV.csv", ";") ' Will be saved as: Save_DataTable_CSV.Sheet1.csv
$vbLabelText   $csharpLabel

Jak kod działa krok po kroku?

Powyższy kod tworzy DataTable, tworzy nową książkę określając 'OJ' jako jej właściciela, a następnie używa pętli foreach do wstawienia danych z DataTable do arkusza Excel. Na koniec metoda SaveAsCsv eksportuje datatable do CSV.

Podział procesu:

  1. Tworzenie DataTable: Zainicjuj nową DataTable i zdefiniuj jej schemat dodając kolumny. To przypomina definiowanie struktury tabeli bazy danych.

  2. Wypełnianie danych: Dodaj wiersze do DataTable używając metody Rows.Add(). Każdy wiersz reprezentuje zapis do eksportu CSV.

  3. Generowanie książki: Metoda WorkBook.Create() IronXL inicjuje nową książkę Excel. Możesz również tworzyć arkusze kalkulacyjne z wieloma arkuszami, jeśli to potrzebne.

  4. Wypełnianie komórek: Pętla foreach przechodzi przez wiersze DataTable i mapuje każdą wartość do określonej komórki arkusza, używając składni odwołań do komórek (np. "A1", "A2").

  5. Eksport do CSV: Metoda SaveAsCsv() obsługuje złożoność formatowania CSV, w tym właściwe eskapowanie znaków specjalnych i obsługę separatorów.

A co z zaawansowanymi scenariuszami DataTable?

Dla złożonych DataTable z wieloma kolumnami rozwijaj poniższy kod w ten sposób:

// Create a DataTable with multiple columns
DataTable advancedTable = new DataTable();
advancedTable.Columns.Add("ID", typeof(int));
advancedTable.Columns.Add("Name", typeof(string));
advancedTable.Columns.Add("Price", typeof(decimal));

--snip--
workbook.SaveAsCsv("products.csv", ",");
// Create a DataTable with multiple columns
DataTable advancedTable = new DataTable();
advancedTable.Columns.Add("ID", typeof(int));
advancedTable.Columns.Add("Name", typeof(string));
advancedTable.Columns.Add("Price", typeof(decimal));

--snip--
workbook.SaveAsCsv("products.csv", ",");
' Create a DataTable with multiple columns
Dim advancedTable As New DataTable()
advancedTable.Columns.Add("ID", GetType(Integer))
advancedTable.Columns.Add("Name", GetType(String))
advancedTable.Columns.Add("Price", GetType(Decimal))

' --snip--
workbook.SaveAsCsv("products.csv", ",")
$vbLabelText   $csharpLabel

Jak wygląda wynik?

Wyjściowy arkusz Excel wygląda następująco:

Arkusz Excel wyświetlający wartości DataTable wyeksportowane w formacie CSV z komórkami od A1 do A7 zawierającymi kolejne wartości numeryczne
Rysunek 2 - Wynik DataTable do CSV

Jak obsługiwać duże DataTable?

Podczas pracy z dużymi DataTable zawierającymi tysiące wierszy, IronXL utrzymuje doskonałą wydajność. Biblioteka efektywnie obsługuje duże zestawy danych. Dla środowisk produkcyjnych, zastosuj swój klucz licencyjny, aby usunąć znaki wodne i włączyć pełną funkcjonalność.

A co z obsługą błędów?

Zawsze implementuj odpowiednie obsługi błędów podczas pracy z operacjami plikówymi:

:path=/static-assets/excel/content-code-examples/how-to/csharp-datatable-to-csv-6.cs
try 
{
    // Your DataTable to CSV conversion code
    WorkBook wb = WorkBook.Create();
    // ... rest of the code
    wb.SaveAsCsv("output.csv", ",");
    Console.WriteLine("CSV file created successfully!");
}
catch (Exception ex)
{
    Console.WriteLine($"Error creating CSV: {ex.Message}");
}
Imports System

Try
    ' Your DataTable to CSV conversion code
    Dim wb As WorkBook = WorkBook.Create()
    ' ... rest of the code
    wb.SaveAsCsv("output.csv", ",")
    Console.WriteLine("CSV file created successfully!")
Catch ex As Exception
    Console.WriteLine($"Error creating CSV: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

Szybki dostęp do biblioteki

Dokumentacja API IronXL

Dowiedz się więcej i podziel się informacjami na temat scałania, rozdzielania i pracy z komórkami w arkuszach kalkulacyjnych Excel, korzystając z przydatnej Dokumentacji API IronXL.

Dokumentacja API IronXL
Documentation related to Szybki dostęp do biblioteki

Często Zadawane Pytania

Jak skonwertować DataTable do CSV w C# bez pisania zlozonych pętli?

IronXL zapewnia proste rozwiązanie w jednej linii do konwersji DataTable do CSV. Po utworzeniu WorkBook i wypelnieniu go danymi DataTable, możesz uzyc metody SaveAsCsv(), aby bezpośrednio wyeksportowac do formatu CSV bez pisania pętli lub użycia Interop.

Jakie sa opcje instalacji biblioteki do konwersji DataTable do CSV?

IronXL można zainstalować za pośrednictwem NuGet Package Manager w Visual Studio, wyszukujac 'IronXL.Excel' lub używając linii polecen NuGet. Jest to preferowana metoda, poniewaz automatycznie zarzadza zależnościami i utrzymuje biblioteke aktualna.

Czy muszę mieć zainstalowany Microsoft Excel, aby skonwertować DataTable do CSV?

Nie, IronXL działa niezależnie bez potrzeby instalacji Microsoft Excel lub Interop. To samodzielna biblioteka, która upraszcza prace z plikami Excel i eksport CSV w aplikacjach C#.

Jakie przestrzen nazw muszę zaimportowac do konwersji DataTable do CSV?

Musisz zaimportowac przestrzen nazw IronXL, dodajac 'using IronXL;' na początku pliku C#. To zapewnia dostep do kompleksowego wsparcia importu i eksportu obiektow DataSet i DataTable.

Czy mogę okreslic niestandardowy separator podczas eksportu do CSV?

Tak, metoda IronXL's SaveAsCsv() pozwala okreslic niestandardowy separator. W przykładzie kodu, przecinek (",") jest używany jako separator, ale możesz go zmienic na dowolny znak, ktory odpowiada twoim wymaganiom.

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
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 2,134,203 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Chcesz szybkiego dowodu? PM > Install-Package IronXL.Excel
uruchom próbkę zobacz, jak Twoje dane stają się arkuszem.