Przejdź do treści stopki
KORZYSTANIE Z IRONXL

Jak konwertować DataSet do CSV w C#

W poniższym artykułe zostanie pokazane, jak przekonwertować zbiór danych C# na plik CSV.

IronXL to doskonałe rozwiązanie do pracy z arkuszami kalkulacyjnymi, zarówno w formacie CSV, jak i plikach Excel. IronXL jest darmowy do celów programistycznych, łatwy w użyciu i oferuje szeroki zakres funkcji do pracy z dowolnym rodzajem arkusza kalkulacyjnego. Jest bezpieczny i zapewnia wysoką wydajność. Zanim przejdziemy dalej, zapoznajmy się pokrótce z IronXL.

IronXL

IronXL to biblioteka firmy Iron Software, która umożliwia programistom C# odczytywanie, generowanie i edytowanie plików Excel (oraz innych arkuszy kalkulacyjnych) w aplikacjach .NET i na stronach internetowych.

IronXL to szybki i łatwy sposób na pracę z plikami Excel i innymi arkuszami kalkulacyjnymi w języku C# i środowisku .NET. IronXL dobrze współpracuje z .NET Framework, .NET Core i Azure bez konieczności korzystania z Office Excel Interop. IronXL nie wymaga również instalacji pakietu Microsoft Office ani żadnych innych podobnych zależności.

Przejdźmy do tworzenia i pisania kodu służącego do generowania pliku CSV dla zbioru danych.

Utwórz nowy projekt Visual Studio

Otwórz środowisko IDE Visual Studio; zalecana jest najnowsza wersja Visual Studio, ale możesz użyć dowolnej wersji zgodnie z własnymi preferencjami. Należy pamiętać, że kroki tworzenia nowego projektu mogą się różnić w zależności od wersji.

Jak przekonwertować zbiór danych do formatu CSV w języku C#, rysunek 1: Okno startowe programu Visual Studio Okno startowe programu Visual Studio

Kliknij Utwórz nowy projekt. Pojawi się nowe okno, jak pokazano poniżej.

Jak przekonwertować zbiór danych do formatu CSV w języku C#, rysunek 2: Utwórz nowy projekt w Visual Studio Utwórz nowy projekt w Visual Studio

Wybierz preferowany szablon projektu z listy. Kliknij przycisk Dalej, a pojawi się nowe okno, jak pokazano poniżej.

Jak przekonwertować zbiór danych do formatu CSV w języku C#, rysunek 3: Konfiguracja nowo utworzonego projektu Skonfiguruj nowo utworzony projekt

Nadaj nazwę projektowi, wybierz jego lokalizację i naciśnij przycisk Dalej. Pojawi się nowe okno, jak pokazano poniżej.

Jak przekonwertować zbiór danych do formatu CSV w języku C#, rysunek 4: Wybierz wersję .NET Framework Wybierz wersję .NET Framework

Wybierz docelową platformę .NET Framework. Możesz wybrać dowolną wersję .NET Framework, która odpowiada Twoim potrzebom, ponieważ IronXL obsługuje wszystkie wersje .NET Framework. W tym samouczku zostanie użyty .NET 7. Kliknij przycisk Utwórz, a zostanie utworzony nowy projekt, jak pokazano poniżej.

Jak przekonwertować zbiór danych do formatu CSV w języku C#, rysunek 5: nowa aplikacja konsolowa w Visual Studio nowa aplikacja konsolowa w Visual Studio

Teraz zainstaluj pakiet IronXL NuGet, aby móc z niego korzystać w tej aplikacji.

Zainstaluj IronXL

Otwórz konsolę menedżera pakietów NuGet i wprowadź następujące polecenie.

Install-Package IronXl.Excel

Pakiet NuGet zostanie zainstalowany i będzie gotowy do użycia, jak pokazano poniżej.

Jak przekonwertować zbiór danych do formatu CSV w języku C#, rysunek 6: Instalacja pakietu IronXL i jego zależności Instalacja pakietu IronXL i jego zależności

Teraz napiszmy kod, który przekształci zbiór danych w plik CSV w języku C#.

W tym przykładzie zostaną wprowadzone dane z bazy danych serwera SQL. Po pobraniu zbioru danych z bazy SQL utworzymy plik CSV na podstawie tych danych wejściowych.

Utwórz tabelę danych

Pierwszym krokiem jest pobranie danych z bazy SQL, ale można użyć dowolnego źródła danych.

W tym samouczku wykorzystano następujące dane:

Jak przekonwertować zbiór danych do formatu CSV w języku C#, rysunek 7: Utwórz nową bazę danych z przykładowymi danymi Utwórz nową bazę danych z przykładowymi danymi

Oto skrypt SQL służący do tworzenia przykładowych danych:

USE Test_DB;

CREATE TABLE STUDENT_DATA
(
    REG_NUM INT PRIMARY KEY,
    FIRST_NAME VARCHAR(30),
    LAST_NAME VARCHAR(30),
    CLASS VARCHAR(5),
    CONTACT_NUM VARCHAR(15)
);

INSERT INTO STUDENT_DATA
VALUES
(123, 'JHON', 'SMITH', '2', '(223) 444-1234'),
(124, 'THOMAS', 'CHARLES', '2', '(332) 555-1235'),
(125, 'WILLIAM', 'RICHARD', '2', '(432) 666-1236'),
(126, 'JAMES', 'BOND', '2', '(543) 777-1237'),
(127, 'CRISTOPHER', 'MICHAL', '2', '(555) 999-1238'),
(128, 'DONALD', 'MARK', '2', '(777) 888-1239');

Poniższy kod w języku C# służy do eksportowania tabeli danych do pliku CSV.

using System;
using System.Data;
using System.Data.SqlClient;
using IronXL;

class Program
{
    // Method to retrieve data from SQL database and return as DataTable
    public static DataTable GetData()
    {
        // Define connection string (modify accordingly for your local server)
        string connString = @"server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;";
        string query = "SELECT * FROM STUDENT_DATA";

        try
        {
            // Create SQL connection
            using SqlConnection conn = new SqlConnection(connString);
            // Create SQL command
            SqlCommand cmd = new SqlCommand(query, conn);
            conn.Open();
            // Create data adapter
            using SqlDataAdapter da = new SqlDataAdapter(cmd);
            // Query the database and return the result to a data table
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
            throw;
        }
    }

    static void Main(string[] args)
    {
        // Retrieve data and store it in a DataTable
        DataTable table = GetData();

        // Create a new Workbook
        WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
        wb.Metadata.Author = "JOHN";

        // Use the default worksheet
        WorkSheet ws = wb.DefaultWorkSheet;
        int rowCount = 1;

        // Populate the worksheet with data from the DataTable
        foreach (DataRow row in table.Rows)
        {
            ws[$"A{rowCount}"].Value = row[0].ToString();
            ws[$"B{rowCount}"].Value = row[1].ToString();
            ws[$"C{rowCount}"].Value = row[2].ToString();
            ws[$"D{rowCount}"].Value = row[3].ToString();
            ws[$"E{rowCount}"].Value = row[4].ToString();
            rowCount++;
        }

        // Save the workbook as a CSV file
        wb.SaveAsCsv(@"D:\Tutorial Project\Save_DataTable_CSV.csv");
    }
}
using System;
using System.Data;
using System.Data.SqlClient;
using IronXL;

class Program
{
    // Method to retrieve data from SQL database and return as DataTable
    public static DataTable GetData()
    {
        // Define connection string (modify accordingly for your local server)
        string connString = @"server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;";
        string query = "SELECT * FROM STUDENT_DATA";

        try
        {
            // Create SQL connection
            using SqlConnection conn = new SqlConnection(connString);
            // Create SQL command
            SqlCommand cmd = new SqlCommand(query, conn);
            conn.Open();
            // Create data adapter
            using SqlDataAdapter da = new SqlDataAdapter(cmd);
            // Query the database and return the result to a data table
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
            throw;
        }
    }

    static void Main(string[] args)
    {
        // Retrieve data and store it in a DataTable
        DataTable table = GetData();

        // Create a new Workbook
        WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
        wb.Metadata.Author = "JOHN";

        // Use the default worksheet
        WorkSheet ws = wb.DefaultWorkSheet;
        int rowCount = 1;

        // Populate the worksheet with data from the DataTable
        foreach (DataRow row in table.Rows)
        {
            ws[$"A{rowCount}"].Value = row[0].ToString();
            ws[$"B{rowCount}"].Value = row[1].ToString();
            ws[$"C{rowCount}"].Value = row[2].ToString();
            ws[$"D{rowCount}"].Value = row[3].ToString();
            ws[$"E{rowCount}"].Value = row[4].ToString();
            rowCount++;
        }

        // Save the workbook as a CSV file
        wb.SaveAsCsv(@"D:\Tutorial Project\Save_DataTable_CSV.csv");
    }
}
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports IronXL

Friend Class Program
	' Method to retrieve data from SQL database and return as DataTable
	Public Shared Function GetData() As DataTable
		' Define connection string (modify accordingly for your local server)
		Dim connString As String = "server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;"
		Dim query As String = "SELECT * FROM STUDENT_DATA"

		Try
			' Create SQL connection
			Using conn As New SqlConnection(connString)
				' Create SQL command
				Dim cmd As New SqlCommand(query, conn)
				conn.Open()
				' Create data adapter
				Using da As New SqlDataAdapter(cmd)
					' Query the database and return the result to a data table
					Dim dt As New DataTable()
					da.Fill(dt)
					Return dt
				End Using
			End Using
		Catch ex As Exception
			Console.WriteLine($"An error occurred: {ex.Message}")
			Throw
		End Try
	End Function

	Shared Sub Main(ByVal args() As String)
		' Retrieve data and store it in a DataTable
		Dim table As DataTable = GetData()

		' Create a new Workbook
		Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
		wb.Metadata.Author = "JOHN"

		' Use the default worksheet
		Dim ws As WorkSheet = wb.DefaultWorkSheet
		Dim rowCount As Integer = 1

		' Populate the worksheet with data from the DataTable
		For Each row As DataRow In table.Rows
			ws($"A{rowCount}").Value = row(0).ToString()
			ws($"B{rowCount}").Value = row(1).ToString()
			ws($"C{rowCount}").Value = row(2).ToString()
			ws($"D{rowCount}").Value = row(3).ToString()
			ws($"E{rowCount}").Value = row(4).ToString()
			rowCount += 1
		Next row

		' Save the workbook as a CSV file
		wb.SaveAsCsv("D:\Tutorial Project\Save_DataTable_CSV.csv")
	End Sub
End Class
$vbLabelText   $csharpLabel

Wyjaśnienie kodu

  • Metoda GetData() pobiera dane z bazy danych SQL Server i zwraca je jako DataTable.

  • W metodzie Main tworzony jest WorkBook przy użyciu IronXL, a następnie dane są umieszczane w WorkSheet.

  • Pętla foreach iteruje przez wiersze DataTable, wstawiając każdą wartość do nowego wiersza w WorkSheet.

  • Na koniec plik CSV jest zapisywany przy użyciu funkcji SaveAsCsv udostępnianej przez IronXL.

Wynik

Plik CSV wygenerowany przez ten program wygląda następująco:

Jak przekonwertować zbiór danych do formatu CSV w języku C#, rysunek 8: Plik wyjściowy CSV Plik wyjściowy CSV

Widać wyraźnie, że plik CSV został wygenerowany poprawnie i jest zgodny z podanymi danymi wejściowymi.

Podsumowanie

W tym artykułe pokazano, jak utworzyć plik CSV w języku C# na podstawie zbioru danych. Biblioteka może również odczytywać pliki CSV przy użyciu języka C#. Zbiór danych z bazy danych SQL Server jest wypełniany i tworzy plik CSV w trzech krokach:

  1. Pobieranie danych z serwera SQL.
  2. Wprowadź dane do tabeli danych.
  3. Utwórz plik CSV na podstawie tej tabeli danych.

Jak pokazano powyżej, tworzenie plików CSV w .NET 7 za pomocą IronXL jest bardzo proste. Wydajność programu jest wyjątkowa, ponieważ został on napisany w .NET 7 z wykorzystaniem IronXL. IronXL oferuje inne przydatne funkcje, takie jak tworzenie, odczytywanie i edycja plików Excel. Więcej szczegółów można znaleźć w oficjalnej dokumentacji.

Ponadto IronPDF oferuje programistom metody renderowania dokumentów PDF na obrazy oraz wyodrębniania tekstu i treści z plików PDF. Ponadto IronPDF umożliwia również renderowanie wykresów w plikach PDF, dodawanie BARCODE-ów oraz programowe zwiększanie bezpieczeństwa za pomocą haseł.

Bezpłatna wersja IronXL służy do celów programistycznych. Aby wdrożyć aplikację w środowisku produkcyjnym, należy pobrać bezpłatną wersję próbną lub nabyć licencję komercyjną. IronXL jest częścią pakietu Iron Suite, który składa się z pięciu bibliotek:

  1. IronXL, który jest dzisiaj omawiany.
  2. IronPDF do generowania, odczytu i edycji plików PDF
  3. IronOCR do wyodrębniania tekstu z obrazów
  4. IronBarcode do odczytu i generowania kodów kreskowych
  5. IronWebscraper do pozyskiwania danych strukturalnych ze stron internetowych.

Wszystkie te produkty można nabyć w cenie dwóch, jeśli zostaną zakupione razem.

Często Zadawane Pytania

Jak przekonwertować zbiór danych C# na plik CSV?

Za pomocą IronXL można przekonwertować zbiór danych C# na plik CSV. Najpierw należy pobrać dane ze źródła, takiego jak baza danych SQL Server, i umieścić je w tabeli DataTable. Następnie należy użyć IronXL do wyeksportowania tabeli DataTable do pliku CSV.

Czy potrzebuję pakietu Microsoft Office, aby pracować z plikami Excel w środowisku .NET?

Nie, nie potrzebujesz pakietu Microsoft Office do pracy z plikami Excel w środowisku .NET podczas korzystania z IronXL. IronXL działa niezależnie, bez konieczności korzystania z pakietu Office lub interfejsów Interop.

Jaki jest najlepszy sposób na zainstalowanie IronXL for .NET do obsługi arkuszy kalkulacyjnych?

Najlepszym sposobem na zainstalowanie IronXL do obsługi arkuszy kalkulacyjnych jest użycie konsoli NuGet Package Manager w Visual Studio. Użyj polecenia: Install-Package IronXl.Excel.

W jaki sposób IronXL zwiększa wydajność pracy z arkuszami kalkulacyjnymi?

IronXL zwiększa wydajność, umożliwiając programistom szybkie i łatwe odczytywanie, generowanie oraz edycję plików Excel i CSV w aplikacjach .NET, bez konieczności instalowania dodatkowego oprogramowania lub korzystania z zależności.

Czy mogę używać IronXL do generowania plików CSV z dowolnego źródła danych?

Tak, można używać IronXL do generowania plików CSV z dowolnego źródła danych. Artykuł pokazuje to na przykładzie wykorzystania bazy danych SQL Server do wypełnienia tabeli DataTable, która jest następnie eksportowana do formatu CSV za pomocą IronXL.

Czy IronXL jest kompatybilny z najnowszymi wersjami .NET?

Tak, IronXL jest kompatybilny z najnowszymi wersjami .NET, w tym .NET 7, i oferuje zwiększoną wydajność na tych platformach.

Jakie są główne zalety korzystania z IronXL do zadań związanych z arkuszami kalkulacyjnymi?

Główne zalety korzystania z IronXL to możliwość obsługi arkuszy kalkulacyjnych bez pakietu Microsoft Office, obsługa wszystkich wersji .NET oraz prostota i wydajność konwersji zestawów danych do plików CSV.

Czym jest pakiet Iron Suite i co zawiera?

Iron Suite to zbiór bibliotek, który obejmuje IronXL do obsługi plików Excel, IronPDF do obsługi plików PDF, IronOCR do wyodrębniania tekstu z obrazów, IronBarcode do obsługi kodów kreskowych oraz IronWebscraper do wyodrębniania danych z sieci.

Jordi Bardia
Inżynier oprogramowania
Jordi jest najbardziej biegły w Pythonie, C# i C++. Kiedy nie wykorzystuje swoich umiejętności w Iron Software, programuje gry. Dzieląc odpowiedzialność za testowanie produktów, rozwój produktów i badania, Jordi wnosi ogromną wartość do ciągłej poprawy produktów. Różnorodne doświadczenia ...
Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie