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#

Witamy w tym tutorialu dla początkujących na temat importowania plików CSV (wartości oddzielone przecinkami) do DataTable w C# przy użyciu IronXL. Ten przewodnik zapewni ci podejście, które jest łatwe do śledzenia, gwarantując, że nawet jeżeli jesteś nowicjuszem w C#, znajdziesz ten proces prosty. Omówimy każdy krok, od ustawienia środowiska do napisania kodu źródłowego. Po ukończeniu tego tutorialu będziesz miał jasne rozumienie, jak konwertować dane CSV na DataTable, zarządzać kolumnami DataTable i obsługiwać różne aspekty dokumentów CSV w C# za pomocą czytnika plików oraz IronXL.

Wymagania wstępne

Zanim zaczniemy, upewnij się, że masz:

  • Podstawową wiedzę na temat C#
  • Zainstalowany Visual Studio na swoim komputerze lokalnym
  • Bibliotekę IronXL, którą można uzyskać za pośrednictwem menedżera pakietów NuGet

Zrozumienie podstaw

Czym jest plik CSV?

Plik CSV (plik wartości oddzielonych przecinkami) to rodzaj pliku tekstowego, który wykorzystuje określoną strukturę do układania danych tabelarycznych. Jest to powszechny format do wymiany danych, ponieważ CSV jest prosty, zwarty i działa na wielu platformach. W pliku CSV dane są oddzielone przecinkami, a każda nowa linia oznacza nowy wiersz, z nagłówkami kolumn często obecnymi w pierwszym wierszu.

Understanding DataTables in C

DataTable jest częścią biblioteki ADO.NET w C# i reprezentuje pojedynczą tabelę danych w pamięci. Składa się z wierszy i kolumn, a każda kolumna może być innego typu danych. DataTable są bardzo elastyczne i mogą reprezentować dane w ustrukturyzowanym formacie, co czyni je idealnymi do obsługi danych z plików CSV.

Konfiguracja Projektu

Krok 1: Stwórz nowy projekt 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.

    Jak zaimportować CSV do DataTable w C#: Rysunek 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 odpowiedzialna 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

Możesz użyć tego kodu w pliku Program.cs. Pamiętaj, aby dodać licencję IronXL, jeśli pracujesz w środowisku produkcyjnym.

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.

Jak zaimportować CSV do DataTable w C#: Rysunek 2 - Wynik

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.

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

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie