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.
Okno startowe programu Visual Studio
Kliknij Utwórz nowy projekt. Pojawi się nowe okno, jak pokazano poniżej.
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.
Skonfiguruj nowo utworzony projekt
Nadaj nazwę projektowi, wybierz jego lokalizację i naciśnij przycisk Dalej. Pojawi się nowe okno, jak pokazano poniżej.
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.
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.
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:
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
Wyjaśnienie kodu
-
Metoda
GetData()pobiera dane z bazy danych SQL Server i zwraca je jakoDataTable. -
W metodzie
Maintworzony jestWorkBookprzy użyciu IronXL, a następnie dane są umieszczane wWorkSheet. -
Pętla
foreachiteruje przez wierszeDataTable, wstawiając każdą wartość do nowego wiersza wWorkSheet. - Na koniec plik CSV jest zapisywany przy użyciu funkcji
SaveAsCsvudostępnianej przez IronXL.
Wynik
Plik CSV wygenerowany przez ten program wygląda następująco:
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:
- Pobieranie danych z serwera SQL.
- Wprowadź dane do tabeli danych.
- 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:
- IronXL, który jest dzisiaj omawiany.
- IronPDF do generowania, odczytu i edycji plików PDF
- IronOCR do wyodrębniania tekstu z obrazów
- IronBarcode do odczytu i generowania kodów kreskowych
- 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.




