IRONXLの使用

C#でCSVをデータテーブルにインポートする方法

公開済み 2024年1月27日
共有:

イントロダクション

初心者向けのCSVインポートチュートリアルへようこそ (カンマ区切り値) ファイルを... データテーブル C# を使用して IronXL. このガイドでは、C#に初めて触れる方でも、このプロセスを簡単に進められるように、わかりやすいアプローチをご紹介します。 環境の設定からソースコードの記述まで、すべてのステップをカバーします。 このチュートリアルの終わりまでに、CSVデータをデータテーブルに変換する方法、データテーブルの列を管理する方法、および C# で var リーダーと接続文字列を使用して CSV ドキュメントのさまざまな側面を処理する方法について明確に理解できるようになります。

前提条件

始める前に、以下をご確認ください:

  • C#の基本知識
  • ローカルマシンにインストールされたVisual Studio
  • NuGetパッケージマネージャーを通じて入手可能なIronXLライブラリ

基本を理解する

CSVファイルとは何ですか?

CSVファイル (カンマ区切り値ファイル) は、特定の構造化を使用して表形式データを整理するプレーンテキストファイルの一種です。 CSVはシンプルでコンパクトなため、さまざまなプラットフォームで動作するため、データ交換の一般的なフォーマットです。 CSVファイルでは、データはカンマで区切られており、各新しい行は新しい行を意味し、列ヘッダーは通常最初の行に存在します。

C#でのDataTablesの理解

DataTableはC#のADO.NETライブラリの一部であり、メモリ内データの単一のテーブルを表しています。 行と列で構成されており、各列は異なるデータ型を持つことができます。 DataTablesは非常に柔軟で、構造化された形式でデータを表現できるため、CSVファイルデータの取り扱いに理想的です。

プロジェクトの設定

ステップ1:新しいC#プロジェクトを作成する

  1. Visual Studioを開きます。

  2. ファイル > 新規 > プロジェクト を選択します。

  3. C# コンソールまたは Windows Forms アプリケーションを選択し、適切な名前を付けてください。

ステップ2:IronXLをインストール

IronXLは、強力なライブラリであり、ユーザーが Excelを操作する C#でCSVファイル 使用するには、NuGetパッケージマネージャーを介してインストールする必要があります。 Visual Studio で:

  1. ツール > NuGet パッケージ マネージャー > ソリューションの NuGet パッケージの管理 に移動します。

  2. IronXL.Excelを検索する。

    C#でCSVをデータテーブルにインポートする方法: 図1 - IronXL

  3. パッケージをプロジェクトにインストールします。

IronXLを使用してCSVファイルをDataTableに読み込む方法

ステップ 1: 環境を設定する

using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
VB   C#

これらの using ステートメントには、私たちのタスクに必要な名前空間が含まれています。

ステップ2: CSVをインポートするメソッドを作成する

クラス CsvToDataTable を定義し、静的メソッド ImportCsvToDataTable を実装してください。 このメソッドは DataTable へのCSVファイルの変換を担当します。

public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Code snippet to import CSV will be placed here
    }
}
public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Code snippet to import CSV will be placed here
    }
}
Public Class CsvToDataTable
	Public Shared Function ImportCsvToDataTable(ByVal filePath As String) As DataTable
		' Code snippet to import CSV will be placed here
	End Function
End Class
VB   C#

ステップ3: CSVファイルを読み込む

ImportCsvToDataTable メソッド内で、まずCSVファイルを読み込みます。IronXLはこれを行うための簡単な方法を提供します。

// 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)
VB   C#

WorkBook.LoadCSVは、CSVファイルを読み込むためのIronXLのメソッドです。 ここで、filePath はあなたの CSV ファイルへのパスです。

ステップ 4: CSVをDataTableに変換する

読み込んだCSVデータをDataTableに変換します。 このステップは主要なステップであり、データをC#アプリケーション内で簡単に操作および表示できる形式に変換します。

// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable dt
DataTable dataTable = sheet.ToDataTable();
return dataTable;
// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable dt
DataTable dataTable = sheet.ToDataTable();
return dataTable;
' Get the first worksheet
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert CSV worksheet to DataTable dt
Dim dataTable As DataTable = sheet.ToDataTable()
Return dataTable
VB   C#

このスニペットは、CSVデータをDataTableに変換します。 DefaultWorkSheet は、ワークブックから最初のワークシートを取得します。CSVファイルの場合、これはCSVデータ全体に相当します。ToDataTable メソッドは、最初の行に列の文字列ヘッダー行がある場合、それも含めて、CSVデータを効率的に DataTable 構造にマップするIronXLの強力な機能です。

ステップ5: アプリケーションでメソッドを利用する

以下の内容を日本語に翻訳してください:

次に、アプリケーションで ImportCsvToDataTable メソッドを使用します。 例えば、アプリケーションの起動時やユーザーが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)
VB   C#

このコードスニペットは、ImportCsvToDataTableメソッドを呼び出す方法を示しています。 "csvfile.csv" を実際のCSVファイルのファイルパスに置き換えます。

手順6:出力データテーブルの操作

DataTableを取得したら、ユーザーインターフェースにデータを表示したり、フィルタリングを行ったり、データを処理するなどの様々な操作を実行することができます。 以下はいくつかの例です:

コンソールアプリケーションでデータを表示する

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
VB   C#

このコードは DataTable の各行および列を反復処理し、コンソールにデータを出力します。

データのフィルタリング

LINQを使用してDataTableのデータをフィルタリングできます。 例えば、特定の列が条件を満たす行を選択したい場合:

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")
VB   C#

"ColumnName""SomeValue"を、フィルタリングする列名と値に置き換えてください。

完全なコードスニペット

ここにあなたのプロジェクトで使用できる完全なソースコードがあります:

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, listDelimiter: ";");
        // 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 strfilepath = "sample_data.csv"; // CSV file path
            DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(strfilepath);
            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, listDelimiter: ";");
        // 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 strfilepath = "sample_data.csv"; // CSV file path
            DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(strfilepath);
            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, listDelimiter:= ";")
		' 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 strfilepath As String = "sample_data.csv" ' CSV file path
			Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(strfilepath)
			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
VB   C#

以下のコードを Program.cs ファイルに使用できます。 運用環境で作業している場合は、IronXL のライセンスを追加することを忘れないでください。

コードの出力

コードを実行すると、CSVファイルが読み込まれ、そのデータがDataTableにインポートされます。 その後、コンソールにデータテーブルの列の内容が表示されます。 データが正しくDataTableにインポートされていることを確認するのに役立ちます。

C#でCSVをデータテーブルにインポートする方法:図2 - 出力

異なるシナリオの処理

現実のシナリオでは、CSVファイルの形式や構造が大きく異なることがあります。 これらのバリエーションを処理することは、アプリケーションが堅牢で多用途であることを確保するために重要です。IronXLを使用してCSVデータをDataTableにインポートする際のさまざまなシナリオの管理方法について詳しく説明しましょう。

異なる区切り文字の処理

CSVファイルにおけるデリミタのデフォルト値はコンマです。 しかし、CSVファイルは必ずしも値を区切るためにコンマを使用しているとは限りません。 セミコロン、タブ、その他の文字が区切り文字として使用されることがあります。 IronXL でこれに対処するには:

カスタム区切り文字の指定: CSVファイルを読み込む前に、ファイルの区切り文字を指定できます。 例として、あなたのファイルがセミコロンを使用している場合 ()以下のように設定できます:

WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath, listDelimiter:= ";")
VB   C#

動的デリミタ検出: 代わりに、デリミタを動的に検出する関数を作成することもできます。 これは、ファイルの最初の数行を分析し、一番頻繁に出現する特殊文字を決定することで実行できます。

大規模なCSVファイルの処理

大規模なCSVファイルを扱う際には、メモリ使用量とパフォーマンスを考慮することが重要です。 IronXLは、ファイル全体を一度にメモリに読み込むことなく、大きなファイルを効率的に処理する方法を提供します。 ファイルをチャンクとして読み込むか、IronXLが提供するストリーミングAPIを活用してメモリ使用量を効率的に管理することができます。

結論

C#でIronXLを使用してCSVデータをDataTableにインポートするのは簡単です。 それはアプリケーションのデータ操作機能を強化し、CSVファイルを効率的に処理することができます。 このチュートリアルで説明されている手順に従うことで、初心者でも容易にこの機能を自身のC#プロジェクトに統合することができます。

IronXLは、ユーザーがその機能を試すための無料トライアルを提供しています。 より高度な機能とサポートを求める方には、ライセンスオプションは $Lite License から始まります。

< 以前
VB .NETでExcelファイルをSQLデータベースにインポートする方法
次へ >
CSVファイルをC#でリストに変換する方法