フッターコンテンツにスキップ
IRONXLの使用

C# CSV ファイル リーダー: IronXLで CSV データを解析および処理する

CSV(カンマ区切り値)ファイルは、財務報告書から顧客データのエクスポートまで、ビジネスアプリケーションのあらゆる場面で使用されています。 CSV形式は一見すると非常にシンプルですが、引用符で囲まれたフィールド、複数の区切り文字の種類、埋め込まれた改行、そして生のテキストを厳密に型付けされた.NETオブジェクトに変換する必要性などを考慮すると、本番環境のコードで解析するのはすぐに難しくなります。 IronXLは、エンタープライズレベルのCSV処理機能を提供する.NETライブラリであり、開発者は最小限のコードでCSVデータをExcel、XML、またはその他の形式に変換できます。

このガイドでは、 IronXLがC#のCSVファイルリーダーとしてどのように機能するか、そしてそれを.NET 10アプリケーションに実装する方法について説明します。 無料トライアルライセンスを使ってIronXLを実際に試してみて、CSVファイルやExcelファイルの処理方法を一緒に学んでみましょう。

CSVファイルを読み込むためのIronXLのインストール方法を教えてください

IronXLをプロジェクトに組み込むのはほんの一瞬で済みます。 Visual Studio のNuGetパッケージ マネージャーを使用するか、 .NET CLI または PowerShell のNuGetパッケージ マネージャー コンソールを使用してコマンドラインからインストールできます。 どちらの方法も同じパッケージをインストールし、あらゆるタイプ for .NET 10プロジェクトで動作します。

# .NET CLI
dotnet add package IronXl.Excel

# NuGet Package Manager Console
Install-Package IronXl.Excel
# .NET CLI
dotnet add package IronXl.Excel

# NuGet Package Manager Console
Install-Package IronXl.Excel
SHELL

インストールオプションと設定の詳細については、 IronXLのインストールに関するドキュメントを参照してください。

インストールが完了すれば、最初のCSVファイルを読み込むのに必要なコードは非常に少ない。 以下の例では、 .NET 10 のトップレベルステートメントを使用しています。

using IronXL;

// Load CSV file
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a specific cell
string cellValue = sheet["A1"].StringValue;

// Iterate through all rows and cells
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.WriteLine(cell.StringValue);
    }
}
using IronXL;

// Load CSV file
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a specific cell
string cellValue = sheet["A1"].StringValue;

// Iterate through all rows and cells
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.WriteLine(cell.StringValue);
    }
}
Imports IronXL

' Load CSV file
Dim workbook As WorkBook = WorkBook.LoadCSV("data.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Read a specific cell
Dim cellValue As String = sheet("A1").StringValue

' Iterate through all rows and cells
For Each row In sheet.Rows
    For Each cell In row
        Console.WriteLine(cell.StringValue)
    Next
Next
$vbLabelText   $csharpLabel

WorkBook.LoadCSVメソッドは、ヘッダーの識別、内部データ構造の作成、およびメモリ効率の良い解析処理を行い、コードの最初の行からデータ管理を簡素化します。

C# CSV ファイル リーダー チュートリアル: IronXLを使用して CSV データを解析および変換する: 画像 1 - IronXL NuGet のインストール

カスタム区切り文字を含むCSVファイルを読み込むにはどうすればよいですか?

実際のCSVファイルでは、必ずしもカンマが使われるとは限りません。 国際的なデータセットでは、特にセミコロン、パイプ、タブが一般的な代替品であり、カンマが小数点区切りとして機能しています。 IronXLは、柔軟な読み込みオプションにより、あらゆる区切り文字に対応します。

using IronXL;

// Load CSV with semicolon delimiter (common in European data exports)
WorkBook workbook = WorkBook.LoadCSV("european-data.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listDelimiter: ";");

// Load tab-separated values (TSV)
WorkBook tsvWorkbook = WorkBook.LoadCSV("export_data.tsv",
    fileFormat: ExcelFileFormat.XLSX,
    listDelimiter: "\t");

// Load pipe-delimited file
WorkBook pipeWorkbook = WorkBook.LoadCSV("log_export.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listDelimiter: "|");

// Access data normally after loading
WorkSheet sheet = workbook.DefaultWorkSheet;
decimal totalSales = sheet["B2:B10"].Sum();

Console.WriteLine($"Total sales: {totalSales}");
using IronXL;

// Load CSV with semicolon delimiter (common in European data exports)
WorkBook workbook = WorkBook.LoadCSV("european-data.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listDelimiter: ";");

// Load tab-separated values (TSV)
WorkBook tsvWorkbook = WorkBook.LoadCSV("export_data.tsv",
    fileFormat: ExcelFileFormat.XLSX,
    listDelimiter: "\t");

// Load pipe-delimited file
WorkBook pipeWorkbook = WorkBook.LoadCSV("log_export.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listDelimiter: "|");

// Access data normally after loading
WorkSheet sheet = workbook.DefaultWorkSheet;
decimal totalSales = sheet["B2:B10"].Sum();

Console.WriteLine($"Total sales: {totalSales}");
Imports IronXL

' Load CSV with semicolon delimiter (common in European data exports)
Dim workbook As WorkBook = WorkBook.LoadCSV("european-data.csv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:=";")

' Load tab-separated values (TSV)
Dim tsvWorkbook As WorkBook = WorkBook.LoadCSV("export_data.tsv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:=vbTab)

' Load pipe-delimited file
Dim pipeWorkbook As WorkBook = WorkBook.LoadCSV("log_export.csv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:="|")

' Access data normally after loading
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
Dim totalSales As Decimal = sheet("B2:B10").Sum()

Console.WriteLine($"Total sales: {totalSales}")
$vbLabelText   $csharpLabel

listDelimiter パラメータは任意の文字列を受け入れるため、解析動作を完全に制御できます。 IronXL は解析時に列の値とデータ型を保持します。数値は数値のまま、日付はオブジェクトのまま、数式は関係性を維持します。

フォーマットが不整合なファイルの場合、IronXLのエラー処理機能は、アプリケーションをクラッシュさせることなく不正な形式の行を処理するため、個々の行に問題があっても、有効なデータは引き続き処理されます。

C# CSV ファイル リーダー チュートリアル: IronXLで CSV データを解析および変換する: 画像 2 - 入門サンプル出力

サポートされているファイル形式と区切り文字

IronXLは、CSVファイルを読み込む際に、以下の区切り文字タイプをサポートしています。

IronXLのLoadCSVメソッドでサポートされている一般的な区切り文字の種類
デリミタ キャラクター 一般的な使用例
コンマ `,` 標準CSV、米国ロケールエクスポート
セミコロン `;` ヨーロッパ地域からのエクスポート(小数点区切り文字はカンマ)
タブ `\t` タブ区切り値(TSV)、データベースエクスポート
パイプ `|` ログファイル、システムエクスポート
カスタム文字列 どれでも 独自のデータ形式、複数文字の区切り文字

CSVデータをC#オブジェクトに解析するにはどうすればよいですか?

CSV行を厳密に型付けされたオブジェクトに変換することで、データ処理が簡素化され、LINQ操作が可能になります。 IronXLは、独自のセルアクセス方法により、このマッピングを容易にします。 以下のコードは、 .NET 10 のトップレベルステートメントを使用して、CSV ファイルを型付きオブジェクトのリストにマッピングする方法を示しています。

using IronXL;

// Define a typed model matching your CSV structure
public record Product(string Name, decimal Price, int Stock, DateTime? LastUpdated);

// Load and parse CSV file
WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

var products = new List<Product>();

// Start from row 2 to skip the header row
for (int row = 2; row <= sheet.RowCount; row++)
{
    products.Add(new Product(
        Name: sheet[$"A{row}"].StringValue,
        Price: sheet[$"B{row}"].DecimalValue,
        Stock: sheet[$"C{row}"].IntValue,
        LastUpdated: sheet[$"D{row}"].DateTimeValue
    ));
}

// Use LINQ for analysis after loading
var lowStock = products.Where(p => p.Stock < 10).ToList();
var highValue = products.Where(p => p.Price > 100m).OrderByDescending(p => p.Price).ToList();

Console.WriteLine($"Products with low stock: {lowStock.Count}");
Console.WriteLine($"High-value products: {highValue.Count}");
using IronXL;

// Define a typed model matching your CSV structure
public record Product(string Name, decimal Price, int Stock, DateTime? LastUpdated);

// Load and parse CSV file
WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

var products = new List<Product>();

// Start from row 2 to skip the header row
for (int row = 2; row <= sheet.RowCount; row++)
{
    products.Add(new Product(
        Name: sheet[$"A{row}"].StringValue,
        Price: sheet[$"B{row}"].DecimalValue,
        Stock: sheet[$"C{row}"].IntValue,
        LastUpdated: sheet[$"D{row}"].DateTimeValue
    ));
}

// Use LINQ for analysis after loading
var lowStock = products.Where(p => p.Stock < 10).ToList();
var highValue = products.Where(p => p.Price > 100m).OrderByDescending(p => p.Price).ToList();

Console.WriteLine($"Products with low stock: {lowStock.Count}");
Console.WriteLine($"High-value products: {highValue.Count}");
Imports IronXL

' Define a typed model matching your CSV structure
Public Class Product
    Public Property Name As String
    Public Property Price As Decimal
    Public Property Stock As Integer
    Public Property LastUpdated As DateTime?

    Public Sub New(name As String, price As Decimal, stock As Integer, lastUpdated As DateTime?)
        Me.Name = name
        Me.Price = price
        Me.Stock = stock
        Me.LastUpdated = lastUpdated
    End Sub
End Class

' Load and parse CSV file
Dim workbook As WorkBook = WorkBook.LoadCSV("inventory.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

Dim products As New List(Of Product)()

' Start from row 2 to skip the header row
For row As Integer = 2 To sheet.RowCount
    products.Add(New Product(
        Name:=sheet($"A{row}").StringValue,
        Price:=sheet($"B{row}").DecimalValue,
        Stock:=sheet($"C{row}").IntValue,
        LastUpdated:=sheet($"D{row}").DateTimeValue
    ))
Next

' Use LINQ for analysis after loading
Dim lowStock = products.Where(Function(p) p.Stock < 10).ToList()
Dim highValue = products.Where(Function(p) p.Price > 100D).OrderByDescending(Function(p) p.Price).ToList()

Console.WriteLine($"Products with low stock: {lowStock.Count}")
Console.WriteLine($"High-value products: {highValue.Count}")
$vbLabelText   $csharpLabel

IronXL の型付き値プロパティ -- DateTimeValue -- は変換を安全に処理し、無効なデータに対して例外をスローするのではなくデフォルト値を返します。 この防御的なアプローチにより、アプリケーションは不完全なデータでも中断なく処理できるようになります。 これは、C# 9で導入されたC#レコード型と自然に組み合わせることができ、マッピングされたCSV行に対して簡潔で不変なデータモデルを提供します。

IronXLの機能ページでは、セルデータの読み取りに使用できる値アクセサの種類について、詳細な概要が提供されています。

C# CSV ファイル リーダー チュートリアル: IronXLを使用して CSV データを解析および変換する: 画像 3 - 異なる区切り文字を読み取った場合の出力

LINQを使ってCSVデータをフィルタリングおよびクエリするにはどうすればよいですか?

CSV データが WorkSheet に読み込まれたら、範囲セレクタを使用して操作したり、LINQ クエリ用のオブジェクトに変換したりできます。 単純な列操作の場合、範囲ベースのアクセスが最も直接的な方法です。

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("sales-data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read entire columns using range notation
var productNames = sheet["A2:A100"]
    .Select(cell => cell.StringValue)
    .Where(name => !string.IsNullOrEmpty(name))
    .ToList();

// Aggregate numeric columns directly
decimal totalRevenue = sheet["C2:C100"].Sum();
decimal averageOrder = sheet["C2:C100"].Avg();

Console.WriteLine($"Products loaded: {productNames.Count}");
Console.WriteLine($"Total revenue: {totalRevenue:C}");
Console.WriteLine($"Average order value: {averageOrder:C}");
using IronXL;

WorkBook workbook = WorkBook.LoadCSV("sales-data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read entire columns using range notation
var productNames = sheet["A2:A100"]
    .Select(cell => cell.StringValue)
    .Where(name => !string.IsNullOrEmpty(name))
    .ToList();

// Aggregate numeric columns directly
decimal totalRevenue = sheet["C2:C100"].Sum();
decimal averageOrder = sheet["C2:C100"].Avg();

Console.WriteLine($"Products loaded: {productNames.Count}");
Console.WriteLine($"Total revenue: {totalRevenue:C}");
Console.WriteLine($"Average order value: {averageOrder:C}");
Imports IronXL

Dim workbook As WorkBook = WorkBook.LoadCSV("sales-data.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Read entire columns using range notation
Dim productNames = sheet("A2:A100") _
    .Select(Function(cell) cell.StringValue) _
    .Where(Function(name) Not String.IsNullOrEmpty(name)) _
    .ToList()

' Aggregate numeric columns directly
Dim totalRevenue As Decimal = sheet("C2:C100").Sum()
Dim averageOrder As Decimal = sheet("C2:C100").Avg()

Console.WriteLine($"Products loaded: {productNames.Count}")
Console.WriteLine($"Total revenue: {totalRevenue:C}")
Console.WriteLine($"Average order value: {averageOrder:C}")
$vbLabelText   $csharpLabel

この範囲ベースのアプローチは、単純な集計において行ごとの反復処理を回避するため、大きなファイルでのパフォーマンスが向上します。 サポートされている範囲操作の全リストについては、 IronXLのドキュメントを参照してください。

C#でCSVをExcel形式に変換するにはどうすればよいですか?

多くのビジネスワークフローでは、高度な分析、書式設定、または配布のために、Excel形式のCSVデータが必要となります。 IronXLは、データの整合性をすべて維持しながら、この変換を容易にします。

using IronXL;

// Load CSV file
WorkBook csvWorkbook = WorkBook.LoadCSV("monthly-report.csv");
WorkSheet sheet = csvWorkbook.DefaultWorkSheet;

// Apply formatting before saving
sheet["A1:D1"].Style.Font.Bold = true;
sheet["A1:D1"].Style.BackgroundColor = "#4472C4";
sheet["A1:D1"].Style.Font.Color = "#FFFFFF";

// Apply currency format to price column
sheet["B2:B1000"].FormatString = "$#,##0.00";

// Apply date format to date column
sheet["D2:D1000"].FormatString = "yyyy-MM-dd";

// Save as Excel with a single method call
csvWorkbook.SaveAs("monthly-report.xlsx");

Console.WriteLine("Conversion complete: monthly-report.xlsx");
using IronXL;

// Load CSV file
WorkBook csvWorkbook = WorkBook.LoadCSV("monthly-report.csv");
WorkSheet sheet = csvWorkbook.DefaultWorkSheet;

// Apply formatting before saving
sheet["A1:D1"].Style.Font.Bold = true;
sheet["A1:D1"].Style.BackgroundColor = "#4472C4";
sheet["A1:D1"].Style.Font.Color = "#FFFFFF";

// Apply currency format to price column
sheet["B2:B1000"].FormatString = "$#,##0.00";

// Apply date format to date column
sheet["D2:D1000"].FormatString = "yyyy-MM-dd";

// Save as Excel with a single method call
csvWorkbook.SaveAs("monthly-report.xlsx");

Console.WriteLine("Conversion complete: monthly-report.xlsx");
Imports IronXL

' Load CSV file
Dim csvWorkbook As WorkBook = WorkBook.LoadCSV("monthly-report.csv")
Dim sheet As WorkSheet = csvWorkbook.DefaultWorkSheet

' Apply formatting before saving
sheet("A1:D1").Style.Font.Bold = True
sheet("A1:D1").Style.BackgroundColor = "#4472C4"
sheet("A1:D1").Style.Font.Color = "#FFFFFF"

' Apply currency format to price column
sheet("B2:B1000").FormatString = "$#,##0.00"

' Apply date format to date column
sheet("D2:D1000").FormatString = "yyyy-MM-dd"

' Save as Excel with a single method call
csvWorkbook.SaveAs("monthly-report.xlsx")

Console.WriteLine("Conversion complete: monthly-report.xlsx")
$vbLabelText   $csharpLabel

変換は数値の精度、日付フォーマット、特別な文字を保持し、手動変換方法による問題を引き起こすことはありません。 IronXLは、生成されるExcelファイルの構造を自動的に最適化し、大きなデータセットでもすばやく開く効率的なファイルを作成します。

出力形式をより細かく制御するには、エクスポート方法ガイドでXLSX、XLS、CSV、PDFなどのエクスポートオプションについて説明しています。 Excelファイルの書き方や、 Excelファイルをゼロから作成する方法も学ぶことができます。

C# CSV ファイル リーダー チュートリアル: IronXLで CSV データを解析および変換する: 画像 4 - CSV データ出力の解析

データベース操作のためにCSVをDataSetに変換する

CSV データを DataSet にロードしてさらに処理したりデータベースに挿入したりする必要がある場合、 IronXL は直接変換をサポートします。 Excelからデータセットへの変換ガイドでは、この点について詳しく説明されています。

using IronXL;
using System.Data;

WorkBook workbook = WorkBook.LoadCSV("customer-export.csv");

// Convert entire workbook to DataSet
DataSet dataSet = workbook.ToDataSet();

// The first sheet becomes the first DataTable
DataTable customerTable = dataSet.Tables[0];

Console.WriteLine($"Rows loaded: {customerTable.Rows.Count}");
Console.WriteLine($"Columns: {customerTable.Columns.Count}");

// Process with standard ADO.NET
foreach (DataRow row in customerTable.Rows)
{
    string name = row["Name"]?.ToString() ?? string.Empty;
    string email = row["Email"]?.ToString() ?? string.Empty;
    Console.WriteLine($"Customer: {name} <{email}>");
}
using IronXL;
using System.Data;

WorkBook workbook = WorkBook.LoadCSV("customer-export.csv");

// Convert entire workbook to DataSet
DataSet dataSet = workbook.ToDataSet();

// The first sheet becomes the first DataTable
DataTable customerTable = dataSet.Tables[0];

Console.WriteLine($"Rows loaded: {customerTable.Rows.Count}");
Console.WriteLine($"Columns: {customerTable.Columns.Count}");

// Process with standard ADO.NET
foreach (DataRow row in customerTable.Rows)
{
    string name = row["Name"]?.ToString() ?? string.Empty;
    string email = row["Email"]?.ToString() ?? string.Empty;
    Console.WriteLine($"Customer: {name} <{email}>");
}
Imports IronXL
Imports System.Data

Dim workbook As WorkBook = WorkBook.LoadCSV("customer-export.csv")

' Convert entire workbook to DataSet
Dim dataSet As DataSet = workbook.ToDataSet()

' The first sheet becomes the first DataTable
Dim customerTable As DataTable = dataSet.Tables(0)

Console.WriteLine($"Rows loaded: {customerTable.Rows.Count}")
Console.WriteLine($"Columns: {customerTable.Columns.Count}")

' Process with standard ADO.NET
For Each row As DataRow In customerTable.Rows
    Dim name As String = If(row("Name")?.ToString(), String.Empty)
    Dim email As String = If(row("Email")?.ToString(), String.Empty)
    Console.WriteLine($"Customer: {name} <{email}>")
Next
$vbLabelText   $csharpLabel

このアプローチは.NETワークフローと直接統合されており、標準データアダプタを介してCSVデータをSQL Server、SQLite、またはその他のリレーショナルデータベースにプッシュする場合に役立ちます。 DataSetDataTable はコア.NET型であるため、このパスではIronXL自体以外に追加の依存関係は必要ありません。

大容量のCSVファイルをどのように処理し、パフォーマンスを最適化していますか?

数万行以上の大規模なCSVファイルを処理するには、データのアクセス方法とメモリ管理方法に注意を払う必要があります。 IronXLには、大容量ファイルを扱う際に役立つ機能が含まれています。

パフォーマンス向上のための範囲演算の使用

大規模データセットで最適なパフォーマンスを得るには、個々のセルに1つずつアクセスするのではなく、範囲演算を使用してください。範囲演算は、IronXLの内部エンジンによってより効率的に処理されます。

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("large-dataset.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;

Console.WriteLine($"Dataset dimensions: {rowCount} rows x {colCount} columns");

// Efficient: read entire range at once
var allData = sheet[$"A1:{GetColumnLetter(colCount)}{rowCount}"]
    .Select(cell => cell.StringValue)
    .ToList();

// Efficient: aggregate a column without row-by-row iteration
decimal columnSum = sheet[$"B2:B{rowCount}"].Sum();

Console.WriteLine($"Column B total: {columnSum}");

static string GetColumnLetter(int col)
{
    string result = string.Empty;
    while (col > 0)
    {
        col--;
        result = (char)('A' + col % 26) + result;
        col /= 26;
    }
    return result;
}
using IronXL;

WorkBook workbook = WorkBook.LoadCSV("large-dataset.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;

Console.WriteLine($"Dataset dimensions: {rowCount} rows x {colCount} columns");

// Efficient: read entire range at once
var allData = sheet[$"A1:{GetColumnLetter(colCount)}{rowCount}"]
    .Select(cell => cell.StringValue)
    .ToList();

// Efficient: aggregate a column without row-by-row iteration
decimal columnSum = sheet[$"B2:B{rowCount}"].Sum();

Console.WriteLine($"Column B total: {columnSum}");

static string GetColumnLetter(int col)
{
    string result = string.Empty;
    while (col > 0)
    {
        col--;
        result = (char)('A' + col % 26) + result;
        col /= 26;
    }
    return result;
}
Imports IronXL

Dim workbook As WorkBook = WorkBook.LoadCSV("large-dataset.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

Dim rowCount As Integer = sheet.RowCount
Dim colCount As Integer = sheet.ColumnCount

Console.WriteLine($"Dataset dimensions: {rowCount} rows x {colCount} columns")

' Efficient: read entire range at once
Dim allData = sheet($"A1:{GetColumnLetter(colCount)}{rowCount}") _
    .Select(Function(cell) cell.StringValue) _
    .ToList()

' Efficient: aggregate a column without row-by-row iteration
Dim columnSum As Decimal = sheet($"B2:B{rowCount}").Sum()

Console.WriteLine($"Column B total: {columnSum}")

Private Shared Function GetColumnLetter(col As Integer) As String
    Dim result As String = String.Empty
    While col > 0
        col -= 1
        result = ChrW(AscW("A"c) + col Mod 26) & result
        col \= 26
    End While
    Return result
End Function
$vbLabelText   $csharpLabel

IronXLは、CSVファイルを読み込む際にテキストエンコーディングのバリエーション( UTF-8、UTF-16、ASCII )を自動的に処理し、追加の設定なしに列の値に含まれる国際文字が正しく表示されるようにします。 これは、UTF-8 BOMや代替エンコーディングが一般的な地域にあるシステムからエクスポートされたファイルにとって特に重要です。

信頼できないCSVソースのエラー処理

信頼できないソースや可変ソースからのCSVファイルを処理する場合、操作をtry-catchブロックで囲むことで、追加の安全層が確保されます。

using IronXL;

string filePath = "user-uploaded-data.csv";

try
{
    WorkBook workbook = WorkBook.LoadCSV(filePath);
    WorkSheet sheet = workbook.DefaultWorkSheet;

    Console.WriteLine($"Loaded {sheet.RowCount} rows from {filePath}");

    for (int row = 2; row <= sheet.RowCount; row++)
    {
        string value = sheet[$"A{row}"].StringValue;
        if (!string.IsNullOrWhiteSpace(value))
        {
            Console.WriteLine(value);
        }
    }
}
catch (IronXl.Exceptions.IronXLException ex)
{
    Console.WriteLine($"IronXL error reading {filePath}: {ex.Message}");
}
catch (IOException ex)
{
    Console.WriteLine($"File access error: {ex.Message}");
}
using IronXL;

string filePath = "user-uploaded-data.csv";

try
{
    WorkBook workbook = WorkBook.LoadCSV(filePath);
    WorkSheet sheet = workbook.DefaultWorkSheet;

    Console.WriteLine($"Loaded {sheet.RowCount} rows from {filePath}");

    for (int row = 2; row <= sheet.RowCount; row++)
    {
        string value = sheet[$"A{row}"].StringValue;
        if (!string.IsNullOrWhiteSpace(value))
        {
            Console.WriteLine(value);
        }
    }
}
catch (IronXl.Exceptions.IronXLException ex)
{
    Console.WriteLine($"IronXL error reading {filePath}: {ex.Message}");
}
catch (IOException ex)
{
    Console.WriteLine($"File access error: {ex.Message}");
}
Imports IronXL

Dim filePath As String = "user-uploaded-data.csv"

Try
    Dim workbook As WorkBook = WorkBook.LoadCSV(filePath)
    Dim sheet As WorkSheet = workbook.DefaultWorkSheet

    Console.WriteLine($"Loaded {sheet.RowCount} rows from {filePath}")

    For row As Integer = 2 To sheet.RowCount
        Dim value As String = sheet($"A{row}").StringValue
        If Not String.IsNullOrWhiteSpace(value) Then
            Console.WriteLine(value)
        End If
    Next
Catch ex As IronXl.Exceptions.IronXLException
    Console.WriteLine($"IronXL error reading {filePath}: {ex.Message}")
Catch ex As IOException
    Console.WriteLine($"File access error: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

IronXLの操作ガイドでは、ファイル、ストリーム、バイト配列など、さまざまなソースのデータインポートパターンについて解説しています。

C# CSV ファイル リーダー チュートリアル: IronXLで CSV データを解析および変換する: 画像 5 - CSV を Excel 形式に変換する

クロスプラットフォームデプロイメント

IronXLはMicrosoft Officeとは独立して動作するため、サーバー環境やクラウド環境への導入に適しています。 IronXLは、Windows、Linux、macOS、Dockerコンテナ、AzureやAWS上のクラウド機能など、どのプラットフォームにデプロイする場合でも、設定変更なしで一貫した結果を提供します。

このクロスプラットフォーム機能は、軽量コンテナがデータ処理タスクを処理するマイクロサービスアーキテクチャにとって非常に価値があります。 IronXLの機能概要には、サポートされている環境とランタイムターゲットの全リストが記載されています。

IronXLのライセンスはどのように取得できますか?

IronXLを本番環境で使用するには、ライセンスキーが必要です。 評価用の無料トライアルライセンスが利用可能で、個人開発者、チーム、組織向けの商用ライセンスも用意されています。

IronXLを呼び出す前に、アプリケーションにライセンスキーを適用してください。

using IronXL;

// Apply license key at application startup
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

// Verify the license is active
if (IronXl.License.IsValidLicense("YOUR-LICENSE-KEY-HERE"))
{
    Console.WriteLine("IronXL license is active.");
}

// Now use IronXL normally
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
Console.WriteLine($"Loaded {sheet.RowCount} rows.");
using IronXL;

// Apply license key at application startup
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

// Verify the license is active
if (IronXl.License.IsValidLicense("YOUR-LICENSE-KEY-HERE"))
{
    Console.WriteLine("IronXL license is active.");
}

// Now use IronXL normally
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
Console.WriteLine($"Loaded {sheet.RowCount} rows.");
Imports IronXL

' Apply license key at application startup
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"

' Verify the license is active
If IronXl.License.IsValidLicense("YOUR-LICENSE-KEY-HERE") Then
    Console.WriteLine("IronXL license is active.")
End If

' Now use IronXL normally
Dim workbook As WorkBook = WorkBook.LoadCSV("data.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
Console.WriteLine($"Loaded {sheet.RowCount} rows.")
$vbLabelText   $csharpLabel

試用版およびライセンスオプションについては、 IronXLのライセンスページをご覧ください。

IronXLがCSV処理に最適な選択肢である理由とは?

IronXLは、C#におけるCSVファイルの読み込みを、面倒な解析作業から簡単な操作へと変えます。 このライブラリは、手動解析では誤ってしまう一般的なエッジケース(埋め込みカンマ、引用符で囲まれたフィールド内の改行、一貫性のない区切り文字、エンコードのバリエーション、不正な形式の行など)を、各シナリオごとにカスタムコードを作成することなく処理します。 一度限りの迅速なデータインポートが必要な場合でも、1日に数千ものファイルを処理する本番環境のパイプラインが必要な場合でも、同じAPIがどちらの状況でも機能します。

string.Split または StreamReader を使用した手動の CSV 解析は、引用符で囲まれたフィールドに区切り文字が含まれている場合、またはフィールド値内に改行がある場合にすぐに失敗します。 IronXLは、引用符付きフィールドの処理とエスケープシーケンスに関するCSV仕様に従い、これらのケースをデフォルトで正しく処理します。

IronXLが.NET 10でのCSV処理において他社製品と一線を画す主な利点は以下のとおりです。

  • Officeへの依存なし:サーバーおよびクラウド展開は、Microsoft OfficeやCOM相互運用ツールをインストールしなくても動作します。 -カスタム区切り文字: listDelimiter パラメータを介して、任意の区切り文字または文字列がサポートされます。 -型安全なセルアクセス: IntValue、および DateTimeValue アクセサは、不正なデータに対して例外をスローする代わりに、安全なデフォルト値を返します。 -範囲操作:行ごとの反復処理なしに、範囲をまたいでデータを集計およびクエリします。 -フォーマット変換:CSVファイルを読み込み、XLSX、XLS、PDFなどの形式で保存するワークフローを1つにまとめます。
  • DataSet 統合: 読み込まれたワークブックを ADO .NETおよびデータベース操作用に DataSet / DataTable に変換します -クロスプラットフォーム:Windows、Linux、macOS、Docker、クラウド環境で変更なしで動作します

IronXLのドキュメントセル書式設定ガイドには、書式設定、数式サポート、および高度なワークブック操作に関する詳細情報が記載されています。

CSVファイルを自信を持って扱う準備はできていますか? 無料トライアルで始めて、 IronXLの全機能を体験してください。

よくある質問

CSV ファイルとは何ですか? また、なぜよく使用されるのですか?

CSVファイル(カンマ区切り値ファイル)は、表形式のデータを格納するためのシンプルなテキスト形式です。そのシンプルさと使いやすさから、ビジネスアプリケーションでは、異なるシステム間でのデータのエクスポートとインポートに広く使用されています。

IronXL はC# での CSV ファイル解析をどのように支援しますか?

IronXL は、さまざまな列区切り、引用符で囲まれたフィールド、データ型の変換など、複雑な CSV 構造を処理するための強力なツールを提供することで、C# での CSV ファイル解析を簡素化します。

IronXL はCSV データを他の形式に変換できますか?

はい、 IronXL を使用すると、開発者は CSV データを XML や Excel などのさまざまな形式に変換できるため、さまざまなデータ処理ニーズに柔軟に対応できます。

CSV ファイルの解析における一般的な課題は何ですか?

よくある課題としては、異なる列区切り文字の扱い、引用符で囲まれたフィールドの管理、正確なデータ型変換の実行などが挙げられます。IronXLは、高度な解析機能によりこれらの問題を軽減します。

IronXL はエンタープライズ レベルの CSV 処理に適していますか?

はい、 IronXLはエンタープライズ対応として設計されており、 .NETアプリケーション向けの堅牢でスケーラブルな CSV ファイル処理ソリューションを提供します。

IronXL は大きな CSV ファイルの効率的な処理をサポートしていますか?

IronXLはパフォーマンスが最適化されており、速度や精度を損なうことなく、大きな CSV ファイルを効率的に処理できます。

IronXL はカスタム区切り文字付きの CSV ファイルを処理できますか?

はい、 IronXL はカスタム区切り文字を使用した CSV ファイルをサポートしており、開発者は非標準の CSV 形式を柔軟に扱うことができます。

IronXLはCSVファイル内の引用符付きフィールドをどのように扱いますか?

IronXL はCSV ファイル内の引用符で囲まれたフィールドを正確に解析し、読み取りプロセス中のデータの整合性と適切な変換を保証します。

IronXLで CSV 解析に使用できるプログラミング言語は何ですか?

IronXLは.NETライブラリなので、C# や VB .NETなど、 .NET Frameworkでサポートされている言語で使用できます。

IronXL をCSV ファイルで使用するためのコード例はありますか?

はい、 IronXLドキュメントには、C# アプリケーションで CSV ファイルを読み取り、解析、処理するための完全なコード例が記載されています。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね