Przejdź do treści stopki
KORZYSTANIE Z IRONXL
Jak zaimportować plik CSV do tabeli danych w języku C# | IronXL

Jak zaimportować plik CSV do tabeli danych w języku C#

Welcome to this beginner's tutorial on importing CSV (comma-separated values) files into a DataTable in C# using IronXL. This guide will provide you with an easy-to-follow approach, ensuring that even if you are new to C#, you'll find this process straightforward. We'll cover every step, from setting up the environment to writing the source code. By the end of this tutorial, you'll have a clear understanding of how to convert CSV data into a DataTable, manage DataTable columns, and handle various aspects of CSV documents in C# using a file reader and IronXL.

Wymagania wstępne

Before we dive in, ensure you have:

  • Basic knowledge of C#
  • Visual Studio installed on your local machine
  • The IronXL library, which can be obtained through the NuGet Package Manager

Understanding the Basics

What is a CSV File?

A CSV file (Comma Separated Values file) is a type of plain text file that uses specific structuring to arrange tabular data. It's a common format for data interchange as CSV is simple, compact, and works with numerous platforms. In a CSV file, data is separated by commas, and each new line signifies a new row, with the column headers often present in the first row.

Understanding DataTables in C

A DataTable is part of the ADO.NET library in C# and represents a single table of in-memory data. It comprises rows and columns, and each column can be of a different data type. DataTables are highly flexible and can represent data in a structured format, making them ideal for handling CSV file data.

Setting Up Your Project

Krok 1: Utwórz nowy projekt w języku C

  1. Otwórz program Visual Studio.
  2. Wybierz Plik > Nowy > Projekt.
  3. Wybierz aplikację konsolową C# lub aplikację Windows Forms i nadaj jej odpowiednią nazwę.

Krok 2: Zainstaluj IronXL

IronXL to potężna biblioteka, która pozwala na pracę z plikami Excel i CSV w języku C#. Aby z niego korzystać, należy zainstalować go za pomocą menedżera pakietów NuGet. W programie Visual Studio:

  1. Przejdź do Narzędzia > Menedżer pakietów NuGet > Zarządzaj pakietami NuGet dla rozwiązania.
  2. Wyszukaj IronXl.Excel.

    How to Import CSV To Datatable in C#: Figure 1 - IronXL

  3. Zainstaluj pakiet w swoim projekcie.

Wczytywanie plików CSV do tabel danych za pomocą IronXL

Krok 1: Skonfiguruj swoje środowisko

using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
$vbLabelText   $csharpLabel

Te instrukcje using zawierają przestrzenie nazw niezbędne do wykonania naszego zadania.

Krok 2: Utwórz metodę importowania plików CSV

Zdefiniuj klasę CsvToDataTable z metodą statyczną ImportCsvToDataTable. Ta metoda będzie odpowiedziąlna za konwersję pliku CSV do tabeli danych (DataTable).

public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Code snippet to import CSV will be placed here
        return null; // Placeholder return statement
    }
}
public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Code snippet to import CSV will be placed here
        return null; // Placeholder return statement
    }
}
Public Class CsvToDataTable
	Public Shared Function ImportCsvToDataTable(ByVal filePath As String) As DataTable
		' Code snippet to import CSV will be placed here
		Return Nothing ' Placeholder return statement
	End Function
End Class
$vbLabelText   $csharpLabel

Krok 3: Załaduj plik CSV

W metodzie ImportCsvToDataTable zacznij od załadowania pliku CSV. IronXL zapewnia prosty sposób na wykonanie tej czynności:

// Load the CSV file
WorkBook workbook = WorkBook.LoadCSV(filePath);
// Load the CSV file
WorkBook workbook = WorkBook.LoadCSV(filePath);
' Load the CSV file
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath)
$vbLabelText   $csharpLabel

WorkBook.LoadCSV to metoda w bibliotece IronXL służąca do ładowania plików CSV. W tym przypadku filePath to ścieżka do pliku CSV.

Krok 4: Konwersja pliku CSV do tabeli danych

Przekonwertuj załadowane dane CSV do tabeli DataTable. Ten krok ma kluczowe znaczenie, ponieważ przekształca dane do formatu, który można łatwo przetwarzać i wyświetlać w aplikacji napisanej w języku C#.

// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable
DataTable dataTable = sheet.ToDataTable();
return dataTable;
// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable
DataTable dataTable = sheet.ToDataTable();
return dataTable;
' Get the first worksheet
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert CSV worksheet to DataTable
Dim dataTable As DataTable = sheet.ToDataTable()
Return dataTable
$vbLabelText   $csharpLabel

Ten fragment kodu konwertuje dane CSV na tabelę danych (DataTable). DefaultWorkSheet pobiera pierwszy arkusz z skoroszytu, co w przypadku pliku CSV odpowiada całości danych CSV. Metoda ToDataTable to potężna funkcja IronXL, która skutecznie mapuje dane CSV na strukturę DataTable, w tym wiersz nagłówków kolumn, jeśli występuje on w pierwszym wierszu pliku CSV.

Krok 5: Wykorzystaj tę metodę w swojej aplikacji

Teraz użyj metody ImportCsvToDataTable w swojej aplikacji. Na przykład możesz wywołać tę metodę podczas uruchamiania aplikacji lub gdy użytkownik prześle plik CSV.

// Usage
string csvFilePath = "csvfile.csv";
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath);
// Usage
string csvFilePath = "csvfile.csv";
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath);
' Usage
Dim csvFilePath As String = "csvfile.csv"
Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath)
$vbLabelText   $csharpLabel

Ten fragment kodu pokazuje, jak wywołać metodę ImportCsvToDataTable. Zastąp "csvfile.csv" rzeczywistą ścieżką do pliku CSV.

Krok 6: Praca z tabelą wyników DataTable

Po uzyskaniu tabeli DataTable można wykonywać różne operacje, takie jak wyświetlanie danych w interfejsie użytkownika, filtrowanie lub przetwarzanie danych. Oto kilka przykładów:

Wyświetlanie danych w aplikacji konsolowej

foreach (DataRow row in dataTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item} ");
    }
    Console.WriteLine();
}
foreach (DataRow row in dataTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item} ");
    }
    Console.WriteLine();
}
For Each row As DataRow In dataTable.Rows
	For Each item In row.ItemArray
		Console.Write($"{item} ")
	Next item
	Console.WriteLine()
Next row
$vbLabelText   $csharpLabel

Ten kod iteruje przez każdy wiersz i kolumnę w tabeli DataTable i PRINTuje dane w konsoli.

Filtrowanie danych

Możesz użyć LINQ do filtrowania danych w tabeli DataTable. Na przykład, jeśli chcesz wybrać wiersze, w których określona kolumna spełnia warunek:

var filteredRows = dataTable.AsEnumerable()
                            .Where(row => row.Field<string>("ColumnName") == "SomeValue");
var filteredRows = dataTable.AsEnumerable()
                            .Where(row => row.Field<string>("ColumnName") == "SomeValue");
Dim filteredRows = dataTable.AsEnumerable().Where(Function(row) row.Field(Of String)("ColumnName") = "SomeValue")
$vbLabelText   $csharpLabel

Zastąp "ColumnName" i "SomeValue" nazwą kolumny i wartością, według której filtrujesz.

Pełny fragment kodu

Oto pełny kod źródłowy, który możesz wykorzystać w swoim projekcie:

using IronXL;
using System;
using System.Data;
using System.IO;

public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Check if the file exists
        if (!File.Exists(filePath))
        {
            throw new FileNotFoundException($"The file at {filePath} was not found.");
        }

        // Load the CSV file
        WorkBook workbook = WorkBook.LoadCSV(filePath);
        // Get the first worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Convert the worksheet to DataTable
        DataTable dataTable = sheet.ToDataTable();
        return dataTable;
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Usage
        try
        {
            string filePath = "sample_data.csv"; // CSV file path
            DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(filePath);
            foreach (DataRow row in dataTable.Rows)
            {
                foreach (var item in row.ItemArray)
                {
                    Console.Write($"{item} ");
                }
                Console.WriteLine();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}
using IronXL;
using System;
using System.Data;
using System.IO;

public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Check if the file exists
        if (!File.Exists(filePath))
        {
            throw new FileNotFoundException($"The file at {filePath} was not found.");
        }

        // Load the CSV file
        WorkBook workbook = WorkBook.LoadCSV(filePath);
        // Get the first worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Convert the worksheet to DataTable
        DataTable dataTable = sheet.ToDataTable();
        return dataTable;
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Usage
        try
        {
            string filePath = "sample_data.csv"; // CSV file path
            DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(filePath);
            foreach (DataRow row in dataTable.Rows)
            {
                foreach (var item in row.ItemArray)
                {
                    Console.Write($"{item} ");
                }
                Console.WriteLine();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}
Imports IronXL
Imports System
Imports System.Data
Imports System.IO

Public Class CsvToDataTable
	Public Shared Function ImportCsvToDataTable(ByVal filePath As String) As DataTable
		' Check if the file exists
		If Not File.Exists(filePath) Then
			Throw New FileNotFoundException($"The file at {filePath} was not found.")
		End If

		' Load the CSV file
		Dim workbook As WorkBook = WorkBook.LoadCSV(filePath)
		' Get the first worksheet
		Dim sheet As WorkSheet = workbook.DefaultWorkSheet
		' Convert the worksheet to DataTable
		Dim dataTable As DataTable = sheet.ToDataTable()
		Return dataTable
	End Function
End Class

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Usage
		Try
			Dim filePath As String = "sample_data.csv" ' CSV file path
			Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(filePath)
			For Each row As DataRow In dataTable.Rows
				For Each item In row.ItemArray
					Console.Write($"{item} ")
				Next item
				Console.WriteLine()
			Next row
		Catch ex As Exception
			Console.WriteLine($"An error occurred: {ex.Message}")
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

You can use this code in the Program.cs file. Don't forget to add the license of the IronXL if you are working in the production environment.

Wynik kodu

Po uruchomieniu kodu zostanie załadowany plik CSV, a jego dane zostaną zaimportowane do tabeli DataTable. Następnie wyświetli zawartość kolumn tabeli DataTable w konsoli. Pomaga to zweryfikować, czy dane zostały poprawnie zaimportowane do tabeli DataTable.

How to Import CSV To Datatable in C#: Figure 2 - Output

Postępowanie w różnych sytuacjach

W rzeczywistych sytuacjach pliki CSV mogą znacznie różnić się pod względem formatu i struktury. Ważne jest, aby uwzględnić te różnice, aby zapewnić solidność i wszechstronność aplikacji. Przyjrzyjmy się bliżej, jak radzić sobie z różnymi scenariuszami podczas importowania danych CSV do tabeli DataTable przy użyciu IronXL.

Obsługa innego separatora

Przecinki są domyślnym separatorem w plikach CSV. Jednak pliki CSV nie zawsze używają przecinków do oddzielania wartości. Czasami jako separatory używane są średniki, tabulatory lub inne znaki. Aby to zrobić w IronXL:

Określanie niestandardowego separatora: Przed załadowaniem pliku CSV można określić separator pliku. Na przykład, jeśli plik zawiera średnik (;), można ustawić to w następujący sposób:

WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath, listDelimiter:= ";")
$vbLabelText   $csharpLabel

Obsługa dużych plików CSV

W przypadku pracy z dużymi plikami CSV należy wziąć pod uwagę zużycie pamięci i wydajność. IronXL zapewnia wydajne sposoby obsługi dużych plików bez konieczności ładowania całego pliku do pamięci naraz. Plik można odczytywać fragmentami lub korzystać z interfejsów API strumieniowania udostępnianych przez IronXL w celu efektywnego zarządzania wykorzystaniem pamięci.

Wnioski

Importowanie danych CSV do tabeli DataTable przy użyciu IronXL w języku C# jest proste. Zwiększa możliwości aplikacji w zakresie przetwarzania danych, umożliwiając wydajną obsługę plików CSV. Dzięki krokom opisanym w tym samouczku początkujący mogą z łatwością zintegrować tę funkcjonalność ze swoimi projektami w języku C#.

IronXL oferuje bezpłatną wersję próbną, dzięki której użytkownicy mogą zapoznać się z jego funkcjami. Dla osób poszukujących bardziej zaawansowanych funkcji i wsparcia dostępne są opcje licencyjne.

Często Zadawane Pytania

Jak zaimportować dane CSV do tabeli DataTable w języku C#?

Dane CSV można zaimportować do tabeli danych (DataTable) w języku C#, używając metody WorkBook.LoadCSV biblioteki IronXL do załadowania pliku CSV, a następnie konwertując go do tabeli danych za pomocą metody ToDataTable.

Jakie kroki należy wykonać, aby skonfigurować projekt Visual Studio do korzystania z IronXL?

Aby skonfigurować projekt Visual Studio do korzystania z IronXL, zainstaluj pakiet IronXL za pomocą menedżera pakietów NuGet, przechodząc do menu Narzędzia > Menedżer pakietów NuGet > Zarządzaj pakietami NuGet dla rozwiązania i wyszukując IronXl.Excel. Następnie dodaj go do swojego projektu.

Czy IronXL obsługuje pliki CSV z różnymi separatorami?

Tak, IronXL może obsługiwać pliki CSV z różnymi separatorami poprzez określenie niestandardowego separatora za pomocą parametru listDelimiter w metodzie WorkBook.LoadCSV.

Co należy zrobić, jeśli podczas ładowania pliku CSV pojawi się błąd „nie znaleziono pliku”?

Jeśli pojawi się błąd „nie znaleziono pliku”, upewnij się, że ścieżka do pliku jest poprawna. Użyj File.Exists(filePath), aby sprawdzić, czy plik istnieje, i zapobiec takim błędom.

Jak efektywnie zarządzać dużymi plikami CSV w języku C#?

Aby efektywnie zarządzać dużymi plikami CSV, IronXL oferuje funkcje takie jak odczyt plików w fragmentach lub korzystanie z interfejsów API strumieniowych, które pomagają zoptymalizować wykorzystanie pamięci i wydajność.

Jakie są zalety konwersji danych CSV do tabeli danych (DataTable)?

Konwersja danych CSV do tabeli DataTable pozwala na manipulowanie danymi ustrukturyzowanymi, ułatwiając obsługę, filtrowanie i wyświetlanie danych w aplikacji napisanej w języku C#.

Jak wyświetlić zawartość tabeli DataTable w aplikacji konsolowej C#?

Aby wyświetlić zawartość tabeli DataTable w aplikacji konsolowej C#, należy przejrzeć każdy wiersz DataRow i wyświetlić każdy element za pomocą pętli zagnieżdżonej, aby pokazać dane w konsoli.

Czym jest plik CSV i dlaczego jest przydatny?

Plik CSV, czyli plik z wartościami rozdzielonymi przecinkami, to plik tekstowy, w którym dane są rozdzielone przecinkami. Jest on szeroko stosowany do wymiany danych ze względu na swoją prostotę i kompatybilność z wieloma aplikacjami.

Jakie warunki muszę spełnić, aby skorzystać z samouczka dotyczącego importowania plików CSV do DataTable?

Aby skorzystać z samouczka, potrzebna jest podstawowa znajomość języka C#, zainstalowane na komputerze oprogramowanie Visual Studio oraz biblioteka IronXL, którą można pobrać za pośrednictwem menedżera pakietów NuGet.

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