Przejdź do treści stopki
KORZYSTANIE Z IRONXL
Jak przekonwertowac plik CSV na liste w C# | IronXL

Jak przekonwertować plik CSV na listę w języku C#

Samouczek dla początkujących, w którym zobaczymy, jak odczytać pliki CSV do listy w C# przy użyciu biblioteki IronXL. Cóż, to jest jedna z najbardziej podstawowych rzeczy, które musisz znać w każdym języku programowania, ponieważ pliki CSV są bardzo powszechnym sposobem przechowywania i przesyłania danych z jednego systemu lub aplikacji do drugiego. Omówimy wszystko, od konfigurowania projektu po skuteczne parsowanie plików CSV.

How to Convert CSV File into List in C

  1. Utwórz projekt konsolowy C# w Visual Studio.
  2. Zainstaluj bibliotekę CSV C# za pomocą Menedżera pakietów NuGet.
  3. Zaladuj plik CSV uzywajac metody WorkBook.LoadCSV.
  4. Odczytaj wartości danych z pliku i wypełnij listę.
  5. Wydrukuj listę na konsoli.

Konfiguracja projektu

Krok 1: Tworzenie nowego projektu C

  1. Otwórz Visual Studio: Uruchom Visual Studio na swoim komputerze.
  2. Utwórz nowy projekt: Kliknij "Utwórz nowy projekt". Otworzy się okno, gdzie możesz wybrać typ projektu.
  3. Wybierz typ projektu: Wybierz "Console App (.NET Core)" jako twój typ projektu dla prostoty.
  4. Nazwij swój projekt: Nazwij swój projekt CSVFileReader.
  5. Wybierz lokalizację: Wybierz odpowiednie miejsce na urządzeniu, aby zapisać ten projekt.
  6. Generuj projekt: Kliknij "Utwórz", aby zainicjować nowy projekt C#.

Krok 2: Instalacja biblioteki IronXL

  1. Otwórz Menedżera pakietów NuGet: W Visual Studio przejdź do menu "Narzędzia", następnie wybierz "Menedżer pakietów NuGet" i wybierz "Zarządzaj pakietami NuGet dla rozwiązania...".
  2. Przeglądaj za IronXL: Kliknij na kartę "Przeglądaj" i wyszukaj "IronXL.Excel."

    Jak przekonwertowac plik CSV na liste w C#: Rysunek 1 - IronXL

  3. Zainstaluj IronXL: Znajdź paczkę IronXL w wynikach wyszukiwania, wybierz ją i kliknij "Zainstaluj". Upewnij się, że zgadzasz się na wszelkie umowy licencyjne i przejrzyj zmiany.
  4. Weryfikacja instalacji: Po instalacji powinieneś zobaczyć IronXL w odniesieniach do projektu.

Teraz twój projekt CSVFileReader jest skonfigurowany z biblioteką IronXL i jest gotowy do rozpoczęcia odczytu i przetwarzania plików CSV w C#. Ta konfiguracja tworzy podstawę do zadań związanych z odczytem CSV, które podejmiemy w kolejnych sekcjach tego samouczka.

Parsing and Processing CSV Files in C

Po skonfigurowaniu projektu i zainstalowaniu biblioteki IronXL, skupmy się na parsowaniu i przetwarzaniu plików CSV. Bedziemy pracowac w pliku Program.cs, ktory jest automatycznie generowany w Twoim projekcie CSVFileReader.

Krok 1: Określenie ścieżki pliku

Zanim będziemy mogli odczytać jakiekolwiek dane, musimy wiedzieć, gdzie znajduje się nasz plik CSV. Zdefiniuj zmienna w metodzie Main, aby przechowac sciezke pliku.

string filename = "csvfile.csv"; // Replace with your actual file path
string filename = "csvfile.csv"; // Replace with your actual file path
Dim filename As String = "csvfile.csv" ' Replace with your actual file path
$vbLabelText   $csharpLabel

Krok 2: Ładowanie pliku CSV

IronXL ulatwia zaladowanie pliku CSV. Uzyj metody WorkBook.LoadCSV, aby odczytac plik CSV do obiektu WorkBook.

var csv = WorkBook.LoadCSV(filename);
var csv = WorkBook.LoadCSV(filename);
Dim csv = WorkBook.LoadCSV(filename)
$vbLabelText   $csharpLabel

Krok 3: Definiowanie struktury danych

Utworz klase reprezentujaca strukture danych w pliku CSV. Na przyklad, jesli Twoj CSV zawiera informacje o ludziach, zdefiniuj klase Person w ten sposob:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class
$vbLabelText   $csharpLabel

Krok 4: Parsowanie danych CSV

W tym kroku przetworzymy plik CSV i wprowadzimy dane do List<Person>. Używamy IronXL do obsługi odczytu CSV, a kluczowe jest właściwe przetwarzanie każdego wiersza lub linii CSV, uwzględniając nagłówki i potencjalne puste wiersze. Oto szczegółowy podział kodu:

List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets[0].Rows)
{
    if (isFirstRow)
    {
        isFirstRow = false; // Set the flag to false after skipping the first row
        continue;
    }
    if (row.IsEmpty) continue; // Skip empty rows
    var cells = row.ToArray();
    var person = new Person()
    {
        Name = cells[0].StringValue,
        Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
    };
    people.Add(person);
}
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets[0].Rows)
{
    if (isFirstRow)
    {
        isFirstRow = false; // Set the flag to false after skipping the first row
        continue;
    }
    if (row.IsEmpty) continue; // Skip empty rows
    var cells = row.ToArray();
    var person = new Person()
    {
        Name = cells[0].StringValue,
        Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
    };
    people.Add(person);
}
Dim people As New List(Of Person)()
Dim isFirstRow As Boolean = True ' Add a flag to check for the first row
For Each row In csv.WorkSheets(0).Rows
	If isFirstRow Then
		isFirstRow = False ' Set the flag to false after skipping the first row
		Continue For
	End If
	If row.IsEmpty Then
		Continue For ' Skip empty rows
	End If
	Dim cells = row.ToArray()
	Dim person As New Person() With {
		.Name = cells(0).StringValue,
		.Age = Integer.Parse(cells(1).StringValue)
	}
	people.Add(person)
Next row
$vbLabelText   $csharpLabel

W tym procesie parsowania najpierw inicjalizujemy List<Person>, aby przechowac przetworzone dane, i uzywamy flagi boolowskiej isFirstRow, aby pominac wiersz naglowka pliku CSV. Petla foreach iteruje przez kazdy wiersz pliku CSV. Podczas pierwszej iteracji identyfikowany i pomijany jest wiersz naglowka, zapewniajac przetwarzanie tylko wierszy danych. Nastepnie sprawdzamy kazdy wiersz, aby upewnic sie, ze nie jest pusty, uzywajac row.IsEmpty. Ten krok jest kluczowy, aby uniknąć błędów parsowania dla pustych linii.

Dla kazdego wiersza danych, konwertujemy wiersz na tablice komorek (row.ToArray()) i nastepnie tworzymy obiekt Person z tymi danymi. Konieczne jest prawidłowe analizowanie i konwertowanie typów danych, takie jak przekształcenie ciągu 'Wiek' na liczbę całkowitą. Przetworzony obiekt Person zostaje dodany do naszej listy people. To podejscie zapewnia, ze tylko poprawne wiersze danych sa przetwarzane i magazynowane, skutecznie radzac sobie z potencjalnymi problemami, jak nie-numeryczne lancuchy w kolumnach liczbowych czy nieoczekiwanie puste wiersze.

Krok 5: Wyświetlanie danych

Po przetworzeniu danych CSV do naszej List<Person>, nastepnym waznym krokiem jest wyswietlenie i weryfikacja danych. To nie tylko pomaga upewnić się, że nasze parsowanie było udane, ale także pozwala obserwować wyjście i przeprowadzić szybką kontrolę jakości danych. Oto jak możesz to zaimplementować:

foreach (var person in people)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
foreach (var person in people)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
For Each person In people
	Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")
Next person
$vbLabelText   $csharpLabel

Oto kompletny kod Program.cs:

using IronXL;
using System;
using System.Collections.Generic;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
{
    string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
    var csv = WorkBook.LoadCSV(filename);
    List<Person> people = new List<Person>();
    bool isFirstRow = true; // Add a flag to check for the first row
    foreach (var row in csv.WorkSheets[0].Rows)
    {
        if (isFirstRow)
        {
            isFirstRow = false; // Set the flag to false after skipping the first row
            continue;
        }
        if (row.IsEmpty) continue; // Skip empty rows
        var cells = row.ToArray();
        var person = new Person()
        {
            Name = cells[0].StringValue,
            Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
        };
        people.Add(person);
    }
    foreach (var person in people)
    {
        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}
using IronXL;
using System;
using System.Collections.Generic;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
{
    string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
    var csv = WorkBook.LoadCSV(filename);
    List<Person> people = new List<Person>();
    bool isFirstRow = true; // Add a flag to check for the first row
    foreach (var row in csv.WorkSheets[0].Rows)
    {
        if (isFirstRow)
        {
            isFirstRow = false; // Set the flag to false after skipping the first row
            continue;
        }
        if (row.IsEmpty) continue; // Skip empty rows
        var cells = row.ToArray();
        var person = new Person()
        {
            Name = cells[0].StringValue,
            Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
        };
        people.Add(person);
    }
    foreach (var person in people)
    {
        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}
Imports IronXL
Imports System
Imports System.Collections.Generic

Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class

Friend Class Program
	Shared Sub Main(ByVal args() As String)
	Dim filename As String = "C:\Users\tayya\Downloads\sample_data.csv" ' Replace with your actual file path
	Dim csv = WorkBook.LoadCSV(filename)
	Dim people As New List(Of Person)()
	Dim isFirstRow As Boolean = True ' Add a flag to check for the first row
	For Each row In csv.WorkSheets(0).Rows
		If isFirstRow Then
			isFirstRow = False ' Set the flag to false after skipping the first row
			Continue For
		End If
		If row.IsEmpty Then
			Continue For ' Skip empty rows
		End If
		Dim cells = row.ToArray()
		Dim person As New Person() With {
			.Name = cells(0).StringValue,
			.Age = Integer.Parse(cells(1).StringValue)
		}
		people.Add(person)
	Next row
	For Each person In people
		Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")
	Next person
	End Sub
$vbLabelText   $csharpLabel

Wynik działania kodu

Po uruchomieniu pliku, dane listy zostaną wyświetlone w konsoli:

Jak przekonwertowac plik CSV na liste w C#: Rysunek 2 - Wynik listy

Obsługa różnych typów danych

Podczas obsługi różnych typów danych w pliku CSV, ważne jest dostosowanie logiki parsowania do konkretnego typu każdej kolumny danych. W przykladzie klasy Person, podczas gdy Name jest lancuchem i moze zostac bezposrednio przypisany uzywajac StringValue, pola liczbowe, jak Age, wymagaja konwersji z lancucha na calkowita liczbe uzywajac Int32.Parse lub Convert.ToInt32. To jest kluczowe, aby uniknąć błędów niezgodności typów.

Dla bardziej zlozonych typow danych, takich jak daty, uzyj DateTime.Parse, aby przekonwertowac tekstowe reprezentacje dat na obiekty DateTime. Ważne jest, aby być świadomym formatu daty używanego w twoim pliku CSV i upewnić się, że odpowiada on oczekiwanemu formatowi w twoim kodzie. Niespójne formaty dat mogą prowadzić do błędów parsowania lub nieprawidłowej interpretacji danych.

Wnioski

Właśnie nauczyłeś się, jak czytać, parsować i wyświetlać dane pliku CSV za pomocą IronXL w C#. To podejście można zastosować na różnych typach struktur danych i formatach plików. Jest to zatem ogólnie przydatna umiejętność dla każdego dewelopera wybierającego C# jako główny język programowania.

IronXL oferuje bezpłatny okres próbny dla użytkowników do zapoznania się z jego funkcjami. Po zakonczeniu okresu probnego, licencjonowanie dla IronXL zaczyna sie od ceny poczatkowej $999.

Pamiętaj, że wyjątki i sytuacje brzegowe muszą być obsłużone dla napisania bardziej odpornego kodu, szczególnie podczas zarządzania różnymi typami danych i przy używaniu dużych plików. Eksperymentuj dalej i odkrywaj więcej funkcji IronXL w celu ulepszenia przetwarzania danych w C#. Miłego kodowania!

Często Zadawane Pytania

Jak wczytać pliki CSV do listy w języku C#?

Pliki CSV można wczytać do listy w języku C# za pomocą biblioteki IronXL. Najpierw należy utworzyć projekt konsoli C# w programie Visual Studio i zainstalować bibliotekę IronXL za pomocą menedżera pakietów NuGet. Następnie należy użyć metody WorkBook.LoadCSV, aby wczytać plik CSV i przeanalizować dane, tworząc listę.

Jakiej metody użyć do załadowania pliku CSV w języku C#?

Aby załadować plik CSV w języku C#, należy użyć metody WorkBook.LoadCSV biblioteki IronXL, która przyjmuje ścieżkę do pliku jako parametr.

Jak zdefiniować strukturę danych, aby dopasować ją do zawartości pliku CSV?

Zdefiniuj klasę, na przykład klasę „Person”, z właściwościami odpowiadającymi kolumnom w pliku CSV. Pomaga to w uporządkowaniu danych pobranych z pliku CSV w formacie obiektowym.

Jakiej techniki można użyć, aby pominąć wiersz nagłówkowy w pliku CSV?

Aby pominąć wiersz nagłówka, należy zaimplementować flagę logiczną, która sprawdzi, czy wiersz jest pierwszym, i pominie jego przetwarzanie, przechodząc do następnej iteracji.

Jak mogę obsłużyć puste wiersze podczas analizowania pliku CSV w języku C#?

Użyj właściwości wierszy biblioteki IronXL, takich jak IsEmpty, aby sprawdzić, czy wiersze są puste, i pominąć je podczas procesu parsowania.

Jakie znaczenie ma obsługa różnych typów danych podczas przetwarzania plików CSV?

Prawidłowe obchodzenie się z różnymi typami danych gwarantuje ich dokładne przetwarzanie i zapobiega błędom niedopasowania typów, zwłaszcza w przypadku pól numerycznych lub datowych.

Jakie są typowe wyzwania związane z przetwarzaniem plików CSV?

Typowe wyzwania obejmują obsługę różnych typów danych, pomijanie pustych lub nieprawidłowych wierszy oraz zapewnienie dokładnego parsowania i przetwarzania danych bez błędów.

Jakie są zalety korzystania z biblioteki do przetwarzania plików CSV w języku C#?

Wykorzystanie biblioteki IronXL do przetwarzania plików CSV w języku C# upraszcza ładowanie i analizowanie plików CSV dzięki intuicyjnym metodom, umożliwiając programistom wydajną obsługę danych.

Jakie kroki należy wykonać, aby skonfigurować projekt C# do odczytu plików CSV?

Zacznij od utworzenia projektu konsoli C# w Visual Studio, zainstaluj bibliotekę IronXL za pomocą menedżera pakietów NuGet i użyj metody WorkBook.LoadCSV do załadowania i przeanalizowania plików CSV do listy.

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