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

C# で CSV をインポートする | ASP.NET Coreチュートリアル | IronXL

ASP.NET Coreで C# から CSV ファイルをインポートする場合、ファイル ストリームを読み込み、区切り文字で区切られた行を解析し、各レコードを型付きオブジェクトにマッピングする必要があります。これらはすべて、データを使って何らかの有用な処理を行う前に実行する必要がある処理です。 IronXLは、CSV、XLSX、TSVファイルすべてに同様に機能する単一のAPIを通じてすべてのステップを処理するため、文字列分割の特殊なケースに時間を費やすのではなく、アプリケーションロジックの開発に集中できます。

無料トライアルを開始して、これらのコード例を自分の環境で試してみましょう。

.NETプロジェクトにIronXLをインストールするにはどうすればよいですか?

解析コードを記述する前に、プロジェクトにIronXLを追加してください。 Visual Studio のパッケージ マネージャー コンソール、またはプロジェクト ディレクトリのターミナルを開き、次のいずれかのコマンドを実行します。

Install-Package IronXl.Excel
dotnet add package IronXl.Excel
Install-Package IronXl.Excel
dotnet add package IronXl.Excel
SHELL

このパッケージは、.NET 10、 .NET 6以降、 .NET Framework 4.6.2以降、および.NET Standard 2.0を対象としているため、あらゆる種類の最新プロジェクトに対応できます。 サーバーにMicrosoft Officeをインストールする必要はありません。 パッケージが復元されたら、ライブラリを呼び出すすべてのファイルの先頭に using IronXL; を追加してください。

グローバルツールのインストールやCI/CDパイプラインの設定など、詳細なセットアップオプションについては、 IronXLのインストールガイドを参照してください。

ASP.NET CoreでCSVファイルをインポートするにはどうすればよいですか?

ASP.NET CoreでCSVファイルをインポートするには、サーバーからファイルストリームを読み込み、各行を解析し、値をモデルクラスにマッピングする必要があります。 一部の開発者は手動での実装やサードパーティのパッケージを利用しますが、 IronXL は追加の設定なしで CSV ファイルと Excel フォーマットの両方を処理できる単一のメソッドを提供します。

以下のコードは、IronXLのWorkBook.LoadCSVメソッドを使用してCSVファイルを読み込む方法を示しています。

using IronXL;

// Load the CSV file directly using the full file path
var csv = WorkBook.LoadCSV("products.csv");
WorkSheet worksheet = csv.DefaultWorkSheet;

// Access CSV data by iterating through rows
foreach (var row in worksheet.Rows)
{
    string productName = row.Columns[1].StringValue;
    decimal price = row.Columns[2].DecimalValue;
    Console.WriteLine($"Product: {productName}, Price: {price}");
}
using IronXL;

// Load the CSV file directly using the full file path
var csv = WorkBook.LoadCSV("products.csv");
WorkSheet worksheet = csv.DefaultWorkSheet;

// Access CSV data by iterating through rows
foreach (var row in worksheet.Rows)
{
    string productName = row.Columns[1].StringValue;
    decimal price = row.Columns[2].DecimalValue;
    Console.WriteLine($"Product: {productName}, Price: {price}");
}
Imports IronXL

' Load the CSV file directly using the full file path
Dim csv = WorkBook.LoadCSV("products.csv")
Dim worksheet As WorkSheet = csv.DefaultWorkSheet

' Access CSV data by iterating through rows
For Each row In worksheet.Rows
    Dim productName As String = row.Columns(1).StringValue
    Dim price As Decimal = row.Columns(2).DecimalValue
    Console.WriteLine($"Product: {productName}, Price: {price}")
Next
$vbLabelText   $csharpLabel

WorkBook.LoadCSV メソッドの理解

WorkBook.LoadCSV メソッドは CSV ファイルを読み込み、各行が行になり、各区切り値がセルになるワークシートを作成します。 IronXLは区切り文字(カンマ、セミコロン、タブ)を自動的に検出し、値の中にカンマが含まれる引用符付きフィールドを処理します。 標準的なCSVファイルの場合、区切り文字を手動で設定する必要はありません。

decimal.Parseを使用した手動解析を回避できます。 セルが空の場合、または認識されない値が含まれている場合、これらのアクセサーは例外をスローするのではなく、型のデフォルト値を返します。これにより、一括インポート操作中に未処理のエラーが発生するのを防ぎます。

このアプローチにより、カスタム実装で必要となるエラーが発生しやすい手動の文字列解析が不要になります。特に、エスケープされた引用符、Windowsスタイルの改行コード、複数行のセル値といった特殊なケースにおいて有効です。 サポートされているフォーマットと区切り文字オ​​プションの詳細については、 IronXL CSV のドキュメントを参照してください。

ASP による CSV のインポート: 完全な C# 開発者ガイド: 画像 1 - シンプルな CSV ファイルをインポートしてコンソールで出力を読み取る

CSVデータ用のモデルクラスを作成するにはどうすればよいですか?

CSVデータを厳密に型指定されたオブジェクトにマッピングするには、ファイル構造を反映したモデルクラスが必要です。 生の文字列データを、整数、小数、日時値などの特定の型に変換します。 製品在庫データについては、各CSV列に対応するプロパティを持つクラスを作成します。

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; } = string.Empty;
    public decimal Price { get; set; }
    public int Quantity { get; set; }
}
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; } = string.Empty;
    public decimal Price { get; set; }
    public int Quantity { get; set; }
}
Public Class Product
    Public Property Id As Integer
    Public Property Name As String = String.Empty
    Public Property Price As Decimal
    Public Property Quantity As Integer
End Class
$vbLabelText   $csharpLabel

CSV行を型付きコレクションに解析する

モデルクラスを定義することで、CSVレコードを型付きコレクションに解析できます。 次の例では、ループインデックスを使用してヘッダー行をスキップし、後続の各行を Product オブジェクトにマッピングします。

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
WorkSheet ws = workbook.DefaultWorkSheet;
var records = new List<Product>();

// Skip header row (index 0), iterate through data rows
for (int i = 1; i < ws.Rows.Count(); i++)
{
    var row = ws.Rows[i];
    var product = new Product
    {
        Id = row.Columns[0].IntValue,
        Name = row.Columns[1].StringValue,
        Price = row.Columns[2].DecimalValue,
        Quantity = row.Columns[3].IntValue
    };
    records.Add(product);
}

Console.WriteLine($"Loaded {records.Count} products.");
using IronXL;

WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
WorkSheet ws = workbook.DefaultWorkSheet;
var records = new List<Product>();

// Skip header row (index 0), iterate through data rows
for (int i = 1; i < ws.Rows.Count(); i++)
{
    var row = ws.Rows[i];
    var product = new Product
    {
        Id = row.Columns[0].IntValue,
        Name = row.Columns[1].StringValue,
        Price = row.Columns[2].DecimalValue,
        Quantity = row.Columns[3].IntValue
    };
    records.Add(product);
}

Console.WriteLine($"Loaded {records.Count} products.");
Imports IronXL

Dim workbook As WorkBook = WorkBook.LoadCSV("inventory.csv")
Dim ws As WorkSheet = workbook.DefaultWorkSheet
Dim records As New List(Of Product)()

' Skip header row (index 0), iterate through data rows
For i As Integer = 1 To ws.Rows.Count() - 1
    Dim row = ws.Rows(i)
    Dim product As New Product With {
        .Id = row.Columns(0).IntValue,
        .Name = row.Columns(1).StringValue,
        .Price = row.Columns(2).DecimalValue,
        .Quantity = row.Columns(3).IntValue
    }
    records.Add(product)
Next

Console.WriteLine($"Loaded {records.Count} products.")
$vbLabelText   $csharpLabel

records コレクションには、データベース操作、JSON シリアル化、またはさらなるビジネスロジックに使用できる型付きオブジェクト Product が含まれています。 IronXLのセル値アクセサーは、型変換を自動的に処理します。これには、オプションフィールドのnull値処理も含まれます。

オプションフィールドとnull許容フィールドの扱い方

実際のCSVファイルには、空のセルやオプションの列が含まれていることがよくあります。 IronXL の値アクセサーは、セルが空白の場合、例外ではなくデフォルト値を返します。 null許容型の場合は、条件チェックを使用できます。

// Reading an optional DateTime field
DateTime? lastUpdated = string.IsNullOrEmpty(row.Columns[4].StringValue)
    ? null
    : row.Columns[4].DateTimeValue;
// Reading an optional DateTime field
DateTime? lastUpdated = string.IsNullOrEmpty(row.Columns[4].StringValue)
    ? null
    : row.Columns[4].DateTimeValue;
' Reading an optional DateTime field
Dim lastUpdated As DateTime? = If(String.IsNullOrEmpty(row.Columns(4).StringValue), Nothing, row.Columns(4).DateTimeValue)
$vbLabelText   $csharpLabel

このパターンでは、すべてのセルアクセスをtry-catchブロックで囲むことなく、インポートコードの防御性を維持できます。 複雑なデータ型や大容量ファイルの取り扱いに関するガイダンスについては、 IronXL WorkSheet のドキュメントを参照してください。

Web APIでCSVファイルのアップロードを処理するにはどうすればよいでしょうか?

ブラウザからCSVファイルのアップロードを受け入れるAPIエンドポイントを構築するには、 ASP.NET CoreのIFormFileとIronXLの解析機能を組み合わせる必要があります。 以下のコードは、アップロードされたファイルを解析し、JSONレスポンスを返すコントローラーの完全な実装例を示しています。

using IronXL;
using Microsoft.AspNetCore.Mvc;

[Route("api/[controller]")]
[ApiController]
public class CsvController : ControllerBase
{
    [HttpPost("upload")]
    public async Task<IActionResult> UploadCsv(IFormFile file)
    {
        if (file == null || file.Length == 0)
            return BadRequest("Please upload a valid CSV file.");

        try
        {
            using var stream = new MemoryStream();
            await file.CopyToAsync(stream);
            stream.Position = 0;

            WorkBook workbook = WorkBook.Load(stream, "csv");
            WorkSheet ws = workbook.DefaultWorkSheet;
            var records = new List<Product>();

            // Skip header row, iterate through data rows
            for (int i = 1; i < ws.Rows.Count(); i++)
            {
                var row = ws.Rows[i];
                records.Add(new Product
                {
                    Id = row.Columns[0].IntValue,
                    Name = row.Columns[1].StringValue,
                    Price = row.Columns[2].DecimalValue,
                    Quantity = row.Columns[3].IntValue
                });
            }

            return Ok(new
            {
                message = "Import successful",
                count = records.Count,
                data = records
            });
        }
        catch (Exception ex)
        {
            return BadRequest($"Error processing file: {ex.Message}");
        }
    }
}
using IronXL;
using Microsoft.AspNetCore.Mvc;

[Route("api/[controller]")]
[ApiController]
public class CsvController : ControllerBase
{
    [HttpPost("upload")]
    public async Task<IActionResult> UploadCsv(IFormFile file)
    {
        if (file == null || file.Length == 0)
            return BadRequest("Please upload a valid CSV file.");

        try
        {
            using var stream = new MemoryStream();
            await file.CopyToAsync(stream);
            stream.Position = 0;

            WorkBook workbook = WorkBook.Load(stream, "csv");
            WorkSheet ws = workbook.DefaultWorkSheet;
            var records = new List<Product>();

            // Skip header row, iterate through data rows
            for (int i = 1; i < ws.Rows.Count(); i++)
            {
                var row = ws.Rows[i];
                records.Add(new Product
                {
                    Id = row.Columns[0].IntValue,
                    Name = row.Columns[1].StringValue,
                    Price = row.Columns[2].DecimalValue,
                    Quantity = row.Columns[3].IntValue
                });
            }

            return Ok(new
            {
                message = "Import successful",
                count = records.Count,
                data = records
            });
        }
        catch (Exception ex)
        {
            return BadRequest($"Error processing file: {ex.Message}");
        }
    }
}
Imports IronXL
Imports Microsoft.AspNetCore.Mvc
Imports System.IO
Imports System.Threading.Tasks

<Route("api/[controller]")>
<ApiController>
Public Class CsvController
    Inherits ControllerBase

    <HttpPost("upload")>
    Public Async Function UploadCsv(file As IFormFile) As Task(Of IActionResult)
        If file Is Nothing OrElse file.Length = 0 Then
            Return BadRequest("Please upload a valid CSV file.")
        End If

        Try
            Using stream As New MemoryStream()
                Await file.CopyToAsync(stream)
                stream.Position = 0

                Dim workbook As WorkBook = WorkBook.Load(stream, "csv")
                Dim ws As WorkSheet = workbook.DefaultWorkSheet
                Dim records As New List(Of Product)()

                ' Skip header row, iterate through data rows
                For i As Integer = 1 To ws.Rows.Count() - 1
                    Dim row = ws.Rows(i)
                    records.Add(New Product With {
                        .Id = row.Columns(0).IntValue,
                        .Name = row.Columns(1).StringValue,
                        .Price = row.Columns(2).DecimalValue,
                        .Quantity = row.Columns(3).IntValue
                    })
                Next

                Return Ok(New With {
                    .message = "Import successful",
                    .count = records.Count,
                    .data = records
                })
            End Using
        Catch ex As Exception
            Return BadRequest($"Error processing file: {ex.Message}")
        End Try
    End Function
End Class
$vbLabelText   $csharpLabel

エンドポイントとマルチパートフォームの設定

[HttpPost("upload")] アクションがファイルアップロードを受け付けるには、プロジェクトがマルチパートフォームデータをサポートしている必要があります。 Program.cs で最小限の API 設定を行うには、builder.Services.AddControllers()app.MapControllers() が呼び出されていることを確認してください。 エンドポイントは /api/csv/upload でアクセス可能になります。

ブラウザフォームからテストする場合は、フォームの enctype 属性を multipart/form-data に設定し、ファイル入力要素を使用します。 PostmanなどのAPIクライアントを使用する場合は、リクエストボディで"form-data"を選択し、fileという名前のキーを追加して、CSVファイルを添付してください。コントローラーは、レコード数と解析済みのデータ配列を含むJSONオブジェクトを返します。このオブジェクトは、クライアント側のJavaScriptですぐに利用できます。

ASP インポート CSV: 完全 C# 開発者ガイド: 画像 2 - インポートされた CSV ファイルから読み取られたデータによる正常な出力

解析前にファイルタイプを検証する

IronXLにストリームを渡す前に、ファイル拡張子を検証して、CSV以外のファイルのアップロードを拒否します。

var extension = Path.GetExtension(file.FileName).ToLowerInvariant();
if (extension != ".csv" && extension != ".txt")
    return BadRequest("Only CSV files are accepted.");
var extension = Path.GetExtension(file.FileName).ToLowerInvariant();
if (extension != ".csv" && extension != ".txt")
    return BadRequest("Only CSV files are accepted.");
Dim extension As String = Path.GetExtension(file.FileName).ToLowerInvariant()
If extension <> ".csv" AndAlso extension <> ".txt" Then
    Return BadRequest("Only CSV files are accepted.")
End If
$vbLabelText   $csharpLabel

このチェックにより、不正な形式のバイナリデータがパーサーに到達するのを防ぎ、API利用者に対して明確なエラーメッセージを提供します。 より厳格な適用を行うには、file.ContentType を使用して MIME タイプをチェックするようにこの検証を拡張できます。

CSVデータをデータベースに保存するにはどうすればよいですか?

CSVファイルを型付きオブジェクトに解析した後、通常はそのレコードをデータベースに保存します。 次の例は、Entity Framework Core の AddRangeAsync を使用して一括挿入を行うことで、サービス レイヤー パターンを拡張します。

using IronXL;

public class CsvImportService
{
    private readonly AppDbContext _context;

    public CsvImportService(AppDbContext context)
    {
        _context = context;
    }

    public async Task<int> ImportProductsAsync(Stream csvStream)
    {
        WorkBook workbook = WorkBook.LoadCSV(csvStream);
        WorkSheet ws = workbook.DefaultWorkSheet;
        var products = new List<Product>();

        foreach (var row in ws.Rows.Skip(1))
        {
            products.Add(new Product
            {
                Id = row.Columns[0].IntValue,
                Name = row.Columns[1].StringValue,
                Price = row.Columns[2].DecimalValue,
                Quantity = row.Columns[3].IntValue
            });
        }

        await _context.Products.AddRangeAsync(products);
        return await _context.SaveChangesAsync();
    }
}
using IronXL;

public class CsvImportService
{
    private readonly AppDbContext _context;

    public CsvImportService(AppDbContext context)
    {
        _context = context;
    }

    public async Task<int> ImportProductsAsync(Stream csvStream)
    {
        WorkBook workbook = WorkBook.LoadCSV(csvStream);
        WorkSheet ws = workbook.DefaultWorkSheet;
        var products = new List<Product>();

        foreach (var row in ws.Rows.Skip(1))
        {
            products.Add(new Product
            {
                Id = row.Columns[0].IntValue,
                Name = row.Columns[1].StringValue,
                Price = row.Columns[2].DecimalValue,
                Quantity = row.Columns[3].IntValue
            });
        }

        await _context.Products.AddRangeAsync(products);
        return await _context.SaveChangesAsync();
    }
}
Imports IronXL

Public Class CsvImportService
    Private ReadOnly _context As AppDbContext

    Public Sub New(context As AppDbContext)
        _context = context
    End Sub

    Public Async Function ImportProductsAsync(csvStream As Stream) As Task(Of Integer)
        Dim workbook As WorkBook = WorkBook.LoadCSV(csvStream)
        Dim ws As WorkSheet = workbook.DefaultWorkSheet
        Dim products As New List(Of Product)()

        For Each row In ws.Rows.Skip(1)
            products.Add(New Product With {
                .Id = row.Columns(0).IntValue,
                .Name = row.Columns(1).StringValue,
                .Price = row.Columns(2).DecimalValue,
                .Quantity = row.Columns(3).IntValue
            })
        Next

        Await _context.Products.AddRangeAsync(products)
        Return Await _context.SaveChangesAsync()
    End Function
End Class
$vbLabelText   $csharpLabel

サービスを依存性注入に組み込む

CsvImportServiceProgram.cs に登録して、コントローラがコンストラクタインジェクションを通じてそれを要求できるようにします。

builder.Services.AddScoped<CsvImportService>();
builder.Services.AddScoped<CsvImportService>();
$vbLabelText   $csharpLabel

次に、コントローラのコンストラクタを更新してサービスを受け入れ、リストをインラインで構築する代わりに ImportProductsAsync を呼び出すようにします。この分離により、コントローラのアクションが簡素化され、データアクセスロジックがテスト可能なサービス クラスに移動します。 Entity Framework Core は AddRangeAsync 呼び出しをバッチごとに単一の INSERT ステートメントにバッチ処理するため、数千行を含む CSV ファイルでも優れたパフォーマンスを発揮します。

非常に大規模なインポート (数万行) の場合は、 EF Core の Bulk Extensionsまたは生の SQL BULK INSERT ステートメントを使用して、データベースへのラウンドトリップを減らすことを検討してください。

IronXLを使用してデータをCSV形式にエクスポートするにはどうすればよいですか?

IronXLはCSVファイルの読み込みだけでなく、書き込みも可能です。 SaveAsCsv メソッドは、任意のワークシートを CSV ファイルにエクスポートします。これは、レポートの生成や下流システムへのデータ送信に役立ちます。

using IronXL;

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLS);
WorkSheet ws = workbook.DefaultWorkSheet;

// Write headers
ws["A1"].Value = "Id";
ws["B1"].Value = "Name";
ws["C1"].Value = "Price";

// Write data rows
ws["A2"].Value = 1;
ws["B2"].Value = "Widget A";
ws["C2"].Value = 9.99;

ws["A3"].Value = 2;
ws["B3"].Value = "Widget B";
ws["C3"].Value = 14.49;

// Save as CSV
workbook.SaveAsCsv("export.csv");
Console.WriteLine("CSV export complete.");
using IronXL;

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLS);
WorkSheet ws = workbook.DefaultWorkSheet;

// Write headers
ws["A1"].Value = "Id";
ws["B1"].Value = "Name";
ws["C1"].Value = "Price";

// Write data rows
ws["A2"].Value = 1;
ws["B2"].Value = "Widget A";
ws["C2"].Value = 9.99;

ws["A3"].Value = 2;
ws["B3"].Value = "Widget B";
ws["C3"].Value = 14.49;

// Save as CSV
workbook.SaveAsCsv("export.csv");
Console.WriteLine("CSV export complete.");
Imports IronXL

Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
Dim ws As WorkSheet = workbook.DefaultWorkSheet

' Write headers
ws("A1").Value = "Id"
ws("B1").Value = "Name"
ws("C1").Value = "Price"

' Write data rows
ws("A2").Value = 1
ws("B2").Value = "Widget A"
ws("C2").Value = 9.99

ws("A3").Value = 2
ws("B3").Value = "Widget B"
ws("C3").Value = 14.49

' Save as CSV
workbook.SaveAsCsv("export.csv")
Console.WriteLine("CSV export complete.")
$vbLabelText   $csharpLabel

エクスポートされたファイルは、デフォルトでカンマ区切り文字を使用します。 ヨーロッパの地域でよく使われるセミコロン区切りのファイルの場合は、明示的な区切り文字引数を指定して SaveAsCsv("export.csv", ";") を呼び出します。 また、MemoryStream に保存し、File(stream, "text/csv", "export.csv") を使用して API エンドポイントからファイルダウンロードとして結果を返すこともできます。

エクスポートオプションの詳細については、 IronXLの保存およびエクスポートに関するドキュメントを参照してください。

IronXLが手動によるCSV解析よりも優れた選択肢である理由とは?

手動でのCSV解析は一見簡単そうに見えますが、引用符で囲まれたカンマ、セル内に埋め込まれた改行、エスケープされた引用符、UTF-8ファイルの先頭にあるバイトオーダーマークなど、特殊なケースに遭遇すると難しくなります。 これらすべてをカスタムの StreamReader ループで正しく処理するには、かなりのテストと継続的なメンテナンスが必要です。

IronXLはこれらのケースすべてに社内で対応しています。 2つのアプローチを比較すると、明確な利点が明らかになる。

C#におけるCSV解析のためのIronXLと手動StreamReaderの比較
能力 IronXL マニュアルStreamReader
区切り文字の自動検出 はい いいえ、手動で設定する必要があります
見積もり現場処理 組み込み カスタムロジックが必要です
型変換(int、decimal、DateTime) 内蔵アクセサリー Parse/TryParse呼び出しが必要です
複数行のセル値 自動的に処理されます 正しく実装するのが難しい
BOMの取り扱い 自動翻訳 StreamReaderの設定が必要です
Excel形式(XLSX、XLS)に対応 同じAPI 別途ライブラリが必要です
CSVへのエクスポート SaveAsCsvメソッド 別途書き込みロジックが必要

フォーマット間の一貫性

IronXL の実用的な利点の 1 つは、同じ WorkBook.Load とワークシートの反復パターンが XLSX、XLS、ODS、および CSV ファイルで機能することです。 アプリケーションがユーザーから複数のスプレッドシート形式を受け入れる必要がある場合、解析ロジックを変更することなく形式を切り替えることができます。 ファイルストリームを WorkBook.Load に渡すと、 IronXL はファイル署名に基づいてフォーマットを自動的に検出します。

このクロスフォーマットAPIにより、CSVとExcel用に別々の実装を維持する必要がなく、1つのコードパスを記述してテストするだけで済みます。 サポートされているファイル形式の完全なリストについては、 IronXLのサポート対象ファイル形式ページを参照してください。

大容量ファイルに関するパフォーマンス上の考慮事項

100MB以下のCSVファイルであれば、 IronXLはチューニングなしでも十分に機能します。 より大きなファイルの場合は、以下の戦略を検討してください。

  • メモリ割り当てを削減するために、ファイルをコピーするのではなく、パスからファイルを読み込みます。
  • データベースに挿入する際に、最初の挿入前にすべてのレコードを収集するのではなく、行をバッチ処理する。
  • LINQ で ws.Rows.Skip(1) を使用して、ヘッダー行を Product オブジェクトとして具体化しないようにします。

IronXLのパフォーマンスガイドでは、並列処理やストリーミングモードなど、大量インポートシナリオ向けの追加の最適化について解説しています。

次のステップは何ですか?

これで、 ASP.NET Coreでの CSV インポートのすべての段階(ライブラリのインストール、ディスクまたはアップロードされたストリームからのファイルの読み込み、行を型付きモデルオブジェクトにマッピング、Entity Framework Core を使用してレコードをデータベースに永続化、必要に応じてデータを CSV にエクスポートする)に対応する動作パターンが揃いました。

この基礎の上にさらに知識を深めるために、以下のリソースをご活用ください。

プロジェクトにIronXL を導入すると、CSV に加えて XLSX アップロードのサポートを追加しても追加のコード変更は不要です。同じ WorkBook.Load 呼び出しで両方を処理できます。 その一貫性により、アプリケーションの要件が拡大するにつれて、インポートエンドポイントの機能セットを段階的に拡張することができます。

よくある質問

ASP.NET Coreアプリケーションに CSV ファイルをインポートするにはどうすればよいですか?

IronXLを使用して、ファイルのアップロード、CSVデータの解析、モデルクラスオブジェクトへのマッピングを行うことで、 ASP.NET CoreアプリケーションにCSVファイルをインポートできます。IronXLは、これらのタスクを効率的に実行するためのAPIを提供しています。

C# での CSV インポートにIronXLを使用する利点は何ですか?

IronXLは、CSVファイルのインポートプロセスを簡素化するAPIを提供しています。データの解析、モデルへのマッピング、レコードのJSONへの変換が簡単に行えるため、データ駆動型アプリケーションに最適です。

IronXL はCSV データをモデル クラス オブジェクトに解析できますか?

はい、 IronXL はCSV データをモデル クラス オブジェクトに解析できるため、 .NETアプリケーション内で構造化データを効率的に操作できます。

IronXL は、CSV ファイルのインポート時にデータベース統合にどのように役立ちますか?

IronXL は、CSV データを解析し、データベースに簡単に挿入または更新できるモデル オブジェクトにマップできるようにすることで、データベース統合を支援します。

IronXLを使用して CSV レコードを JSON として返すことは可能ですか?

はい、 IronXLを使用すると、CSV レコードを JSON 形式に変換できます。これは、Web API の作成やフロントエンド アプリケーションとの統合に役立ちます。

IronXL はCSV 以外にどのようなファイル形式を処理できますか?

IronXL はCSV に加えて、XLSX、XLS などのさまざまな Excel ファイル形式を処理できるため、さまざまなスプレッドシートのニーズに柔軟に対応できます。

IronXL は大きな CSV ファイルのインポートをサポートしていますか?

IronXL は、大規模な CSV ファイルのインポートを効率的に処理するように設計されており、データ駆動型アプリケーションのパフォーマンスと信頼性を保証します。

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

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

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

アイアンサポートチーム

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