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
このパッケージは、.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
WorkBook.LoadCSV メソッドの理解
CODE-43077-@@メソッドはCSVファイルを読み込み、各行が行になり、区切られた値がセルになるワークシートを作成します。 IronXLは区切り文字(カンマ、セミコロン、タブ)を自動的に検出し、値の中にカンマが含まれる引用符付きフィールドを処理します。 標準的なCSVファイルの場合、区切り文字を手動で設定する必要はありません。
CODE-43078--@@、DecimalValue、@@--CODE-43080--@、@@--CODE-43081--@のようなセル値アクセサは型変換を処理するので、@@--CODE-43082--@や@@--CODE-43083--@で手動で解析する必要はありません。 セルが空の場合、または認識されない値が含まれている場合、これらのアクセサーは例外をスローするのではなく、型のデフォルト値を返します。これにより、一括インポート操作中に未処理のエラーが発生するのを防ぎます。
このアプローチにより、カスタム実装で必要となるエラーが発生しやすい手動の文字列解析が不要になります。特に、エスケープされた引用符、Windowsスタイルの改行コード、複数行のセル値といった特殊なケースにおいて有効です。 サポートされているフォーマットと区切り文字オプションの詳細については、 IronXL CSV のドキュメントを参照してください。
ASP Import CSV: A Complete C# Developer's Guide:イメージ 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
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.")
CODE-43085--@@コレクションには、データベース操作、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)
このパターンでは、すべてのセルアクセスを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
エンドポイントとマルチパートフォームの設定
CODE-43088-@@アクションがファイルのアップロードを受け入れるためには、プロジェクトはマルチパートのフォームデータをサポートしなければなりません。 最小限のAPIセットアップのために、@--CODE-43089--@@で、@--CODE-43090--@と@--CODE-43091--@を呼び出したことを確認してください。 エンドポイントは、/api/csv/upload@でアクセスできるようになります。
ブラウザのフォームからテストする場合、フォームのenctype属性をmultipart/form-dataに設定し、ファイル入力要素を使用してください。 PostmanのようなAPIクライアントの場合、リクエストボディで "form-data "を選択し、fileというキーを追加し、CSVファイルを添付します。コントローラは、レコード数とパースされたデータ配列を含むJSONオブジェクトを返します。
ASP Import CSV: A Complete C# Developer's Guide:画像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
このチェックにより、不正な形式のバイナリデータがパーサーに到達するのを防ぎ、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
サービスを依存性注入に組み込む
コントローラがコンストラクタ注入によって要求できるように、CsvImportServiceを@@--CODE-43099--@に登録します:
builder.Services.AddScoped<CsvImportService>();
builder.Services.AddScoped<CsvImportService>();
次に、サービスを受け入れるようにコントローラのコンストラクタを更新し、インラインでリストを構築する代わりにImportProductsAsyncを呼び出します。このように分離することで、コントローラのアクションを細く保ち、データアクセスロジックをテスト可能なサービスクラスに移動させることができます。 Entity Framework Coreは、AddRangeAsync@コールをバッチごとに1つのINSERT@ステートメントにまとめます。
非常に大きなインポート(数万行)については、EF CoreのBulk Extensionsまたは生のSQL BULK INSERT ステートメントを使用して、データベースへのラウンドトリップを減らすことを検討してください。
IronXLを使用してデータをCSV形式にエクスポートするにはどうすればよいですか?
IronXLはCSVファイルの読み込みだけでなく、書き込みも可能です。 CODE-43104--@@ メソッドは、任意のワークシートを 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.")
エクスポートされたファイルは、デフォルトでカンマ区切り文字を使用します。 ヨーロッパのロケールで一般的なセミコロン区切りのファイルについては、SaveAsCsv("export.csv", ";")に明示的な区切り文字を引数として指定してください。 また、MemoryStreamに保存し、File(stream, "text/csv", "export.csv")を使用してAPIエンドポイントからファイルのダウンロードとして結果を返すこともできます。
エクスポートオプションの詳細については、 IronXLの保存およびエクスポートに関するドキュメントを参照してください。
IronXLが手動によるCSV解析よりも優れた選択肢である理由とは?
手動でのCSV解析は一見簡単そうに見えますが、引用符で囲まれたカンマ、セル内に埋め込まれた改行、エスケープされた引用符、UTF-8ファイルの先頭にあるバイトオーダーマークなど、特殊なケースに遭遇すると難しくなります。 カスタムStreamReaderループでこれらすべてを正しく処理するには、かなりのテストと継続的なメンテナンスが必要です。
IronXLはこれらのケースすべてに社内で対応しています。 2つのアプローチを比較すると、明確な利点が明らかになる。
| 能力 | IronXL | マニュアルStreamReader |
|---|---|---|
| 区切り文字の自動検出 | はい | いいえ、手動で設定する必要があります |
| 見積もり現場処理 | 組み込み | カスタムロジックが必要です |
| 型変換(int、decimal、DateTime) | 内蔵アクセサリー | Parse/TryParse呼び出しが必要です |
| 複数行のセル値 | 自動的に処理されます | 正しく実装するのが難しい |
| BOMの取り扱い | 自動翻訳 | StreamReaderの設定が必要です |
| Excel形式(XLSX、XLS)に対応 | 同じAPI | 別途ライブラリが必要です |
| CSVへのエクスポート | SaveAsCsvメソッド | 別途書き込みロジックが必要 |
フォーマット間の一貫性
IronXLの実用的な利点のひとつは、同じWorkBook.Loadとワークシートの反復パターンがXLSX、XLS、ODS、CSVファイルに対して機能することです。 アプリケーションがユーザーから複数のスプレッドシート形式を受け入れる必要がある場合、解析ロジックを変更することなく形式を切り替えることができます。 ファイルストリームをWorkBook.Loadに渡すと、IronXLはファイル署名に基づいて自動的にフォーマットを検出します。
このクロスフォーマットAPIにより、CSVとExcel用に別々の実装を維持する必要がなく、1つのコードパスを記述してテストするだけで済みます。 サポートされているファイル形式の完全なリストについては、 IronXLのサポート対象ファイル形式ページを参照してください。
大容量ファイルに関するパフォーマンス上の考慮事項
100MB以下のCSVファイルであれば、 IronXLはチューニングなしでも十分に機能します。 より大きなファイルの場合は、以下の戦略を検討してください。
- メモリ割り当てを減らすために、ファイルを
MemoryStreamにコピーするのではなく、パスからロードします。 - データベースに挿入する際に、最初の挿入前にすべてのレコードを収集するのではなく、行をバッチ処理する。
- LINQで
ws.Rows.Skip(1)を使用し、ヘッダー行をProductオブジェクトとして実体化しないようにしてください。
IronXLのパフォーマンスガイドでは、並列処理やストリーミングモードなど、大量インポートシナリオ向けの追加の最適化について解説しています。
次のステップは何ですか?
これで、 ASP.NET Coreでの CSV インポートのすべての段階(ライブラリのインストール、ディスクまたはアップロードされたストリームからのファイルの読み込み、行を型付きモデルオブジェクトにマッピング、Entity Framework Core を使用してレコードをデータベースに永続化、必要に応じてデータを CSV にエクスポートする)に対応する動作パターンが揃いました。
この基礎の上にさらに知識を深めるために、以下のリソースをご活用ください。
- IronXL NuGetパッケージ-- パッケージの詳細とバージョン履歴はNuGetで確認できます
- IronXLチュートリアルの概要-- フィルタリング、数式評価、グラフ生成を網羅したガイド付きチュートリアル
- IronXL APIリファレンス-- クラスとメソッドの完全なドキュメント
- IronXL GitHubサンプル-- GitHubからダウンロード可能なサンプル プロジェクト
- IronXLのライセンスオプション- 開発、ステージング、本番環境向けのライセンスティア
- Microsoft CSV解析に関するドキュメント-- IronXLが基づいている.NET IOモデルの背景
- ASP.NET Coreファイルアップロードに関するドキュメント-- IFormFile およびマルチパートアップロード構成に関する公式ガイダンス
- IronXLによるExcelファイルの読み込みとインポートに関するチュートリアル-- XLSXファイルとCSVファイルの読み込みについて解説
- IronXLの作成と書き込みチュートリアル- データの書き込みと複数の形式での保存について説明します
- IronXLのデータソートとフィルタリング- インポート後のデータの操作
IronXLがプロジェクトにあれば、CSVと一緒にXLSXアップロードのサポートを追加してもコードの変更は必要ありません。 その一貫性により、アプリケーションの要件が拡大するにつれて、インポートエンドポイントの機能セットを段階的に拡張することができます。
よくある質問
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 ファイルのインポートを効率的に処理するように設計されており、データ駆動型アプリケーションのパフォーマンスと信頼性を保証します。



