CSV .NETを読む:IronXLを使った最もシンプルなC#アプローチ
Read CSV .NET:IronXLを使った最もシンプルなC#アプローチ
.NETアプリケーションでのCSVファイルの読み書きは、適切なライブラリを使えば驚くほど簡単になります。 開発者は、区切り文字、引用符で囲まれたフィールド、さまざまなデータ型を処理するためのカスタム解析ロジックを書く代わりに、単一のメソッド呼び出しでCSVデータをロードし、テーブル形式で構造化されたスプレッドシートデータとしてすぐにアクセスすることができます。
IronXLは、カンマ区切りのファイルをExcelのワークブックとして扱うことで、CSV処理を変換します。 この.NETライブラリは、DataTable変換、セルレベルのアクセス、シームレスなExcel形式出力などの強力な機能を提供しながら、手作業による文字列解析の複雑さを解消します。 このライブラリは、Microsoft Officeのインストールを必要とせず、.NET Framework、.NET Core、および.NET 5+で動作するため、ASP.NET Coreおよび.NET Core Web APIプロジェクトに最適です。
このガイドでは、CSVファイルの読み込み、カスタム区切り文字の処理、レコードのDataTablesへの変換、CSVファイルのExcelフォーマットへの書き込みなど、実用的なテクニックを最小限のコードで紹介します。 各コード例には、システムの動作を理解するための詳細な説明が含まれています。
CSVファイル入門
CSVファイル(Comma Separated Values)は、そのシンプルさと幅広い互換性のおかげで、データ交換やストレージの定番です。 データをデータベースにインポートする場合でも、レポートをエクスポートする場合でも、サードパーティーのシステムと統合する場合でも、CSVファイルは表形式のデータを扱うための軽量で柔軟なフォーマットを提供します。 .NETでは、CSVファイルを扱うことは一般的な作業です。開発者は、ビジネスロジック、レポート作成、データ移行ワークフローの一環として、CSVデータを解析、読み取り、書き込む必要があります。
.NETシステムは、基本的な文字列やファイル操作からCsvHelperのような堅牢なライブラリまで、CSVファイルを処理する方法をいくつか提供しています。 カンマが引用符で囲まれたフィールドの中やデータ自体の一部として現れると、単純なカンマであっても複雑さを引き起こす可能性があるため、適切な構文解析が不可欠です。 適切な.NETツールを活用し、CSV解析のニュアンスを理解することで、開発者はデータの整合性を確保し、アプリケーションのデータ処理を効率化することができます。
.NETでCSVファイルを読む最も簡単な方法は何ですか?
最も簡単な方法は、WorkBook.LoadCSVメソッドを使用して、CSVデータをワークブック構造に直接インポートする方法です。 この単一のメソッドでは、構文解析、区切り文字の検出、およびデータの整理が自動的に行われるため、新しい StreamReader<//code> を作成したり、各文字列行を手動で処理したりする必要はありません。
IronXLはVisual StudioのNuGetパッケージマネージャーコンソールからインストールしてください。 .NET プロジェクトを開いて実行してください:
Install-Package IronXL.Excel
Read CSV .NET:IronXLを使用した最もシンプルなC#アプローチ: イメージ1 - インストール
using IronXL;
using System;
class Program
{
static void Main(string[] args)
{
// Load CSV file into a workbook with one method call
WorkBook workbook = WorkBook.LoadCSV("sales_data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
// Access the default worksheet containing CSV data
WorkSheet sheet = workbook.DefaultWorkSheet;
// Display all rows and CSV columns
foreach (var row in sheet.Rows)
{
foreach (var cell in row)
{
Console.Write(cell.Value + "\t");
}
Console.WriteLine();
}
}
}using IronXL;
using System;
class Program
{
static void Main(string[] args)
{
// Load CSV file into a workbook with one method call
WorkBook workbook = WorkBook.LoadCSV("sales_data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
// Access the default worksheet containing CSV data
WorkSheet sheet = workbook.DefaultWorkSheet;
// Display all rows and CSV columns
foreach (var row in sheet.Rows)
{
foreach (var cell in row)
{
Console.Write(cell.Value + "\t");
}
Console.WriteLine();
}
}
}入力
Read CSV .NET:IronXLを使用した最も簡単なC#のアプローチ:画像2 - CSV入力のサンプル<a href="/staticassets/excelblog/read-csv-net/2 "webp">Read CSV .NET: C#のアプローチ
出力
Read CSV .NET:IronXLを使用した最もシンプルなC#アプローチ:画像3 - コンソール出力Read CSV .NET: C# Approach Using IronXL: Image 3 - Console Output.
また、.NETでCSV操作を処理するためによく使われているCsvHelperライブラリを使用して、CSVファイルを読み込むこともできます。 CsvHelperを使ってCSVファイルを読み込むには、StreamReaderを作成し、新しいCsvReaderインスタンスを作成します:
using (var reader = new StreamReader("sales_data.csv"))
using (var csv = new CsvHelper.CsvReader(reader, System.Globalization.CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<dynamic>().ToList();
// Process records as needed
}using (var reader = new StreamReader("sales_data.csv"))
using (var csv = new CsvHelper.CsvReader(reader, System.Globalization.CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<dynamic>().ToList();
// Process records as needed
}StreamWriterとCsvWriterのインスタンスを作成することで、CsvHelperを使ってCSVファイルに書き込むこともできます。
LoadCSVメソッドは、ファイルパス、内部表現のためのターゲットExcelフォーマット、値を区切る区切り文字の3つのパラメータを受け入れます。 読み込まれたCSVコンテンツは、DefaultWorkSheetプロパティを通してアクセスできるようになります。
ネストされたループ構造は、ワークシート内の各Rowを繰り返し、次にその行内の各Cellを繰り返します。 Valueプロパティはセルの内容をオブジェクトとして返し、タブ文字はコンソール出力で読みやすい列の区切りを作成します。 このパターンは、ソースファイルの行数が10行であっても、数千レコードの大きなCSVファイルをメモリ内で処理しても、同じように機能します。
手動 CSV 構文解析とライブラリの使用はどのように比較されますか?
IronXLが排除する複雑さを理解することは、その価値を理解することにつながります。 手作業によるCSVの解析では、単純に見えてすぐに問題となる複数のエッジケースを、どのようなプロジェクトでも処理する必要があります。
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
// Manual approach - requires extensive code for basic functionality
string path = "data.csv";
string[] lines = File.ReadAllLines(path);
foreach (string line in lines)
{
// This breaks when CSV fields contain commas inside quotes
string[] fields = line.Split(',');
foreach (string field in fields)
{
Console.Write(field.Trim() + "\t");
}
Console.WriteLine();
}
}
}using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
// Manual approach - requires extensive code for basic functionality
string path = "data.csv";
string[] lines = File.ReadAllLines(path);
foreach (string line in lines)
{
// This breaks when CSV fields contain commas inside quotes
string[] fields = line.Split(',');
foreach (string field in fields)
{
Console.Write(field.Trim() + "\t");
}
Console.WriteLine();
}
}
}入力
Read CSV .NET:IronXLを使用した最も簡単なC#アプローチ:画像4 - CSV入力Read CSV .NET: C# Approach Using IronXL: Image 4 - CSV Input.
出力
Read CSV .NET:IronXLを使用した最も簡単なC#のアプローチ: 画像5 - 手動CSVパース出力
CSVフィールドに引用符で囲まれた文字列の中にカンマが埋め込まれている場合、手作業でのアプローチは失敗します。 CSVファイルを適切に読み書きするには、引用符で囲まれたフィールド、エスケープされた引用符、複数行の値、さまざまなエンコーディングを処理する必要があります。 CsvHelper ライブラリや同様の CSV Helper パッケージを使用すると依存関係が追加されますが、独自のパーサーを開発することは、新しい StreamReader<//code> を作成し、<code>var リーダーパターンを実装し、ファイル読み取りプロセス全体を自分で管理することを意味します。
using IronXL;
using System;
class Program
{
static void Main(string[] args)
{
// IronXL approach - handles all edge cases automatically
WorkBook workbook = WorkBook.LoadCSV("data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
var records = workbook.DefaultWorkSheet.Rows;
foreach (var row in records)
{
foreach (var cell in row)
{
Console.Write(cell.Value + "\t");
}
Console.WriteLine();
}
}
}using IronXL;
using System;
class Program
{
static void Main(string[] args)
{
// IronXL approach - handles all edge cases automatically
WorkBook workbook = WorkBook.LoadCSV("data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
var records = workbook.DefaultWorkSheet.Rows;
foreach (var row in records)
{
foreach (var cell in row)
{
Console.Write(cell.Value + "\t");
}
Console.WriteLine();
}
}
}IronXLバージョンは、引用符で囲まれたCSVフィールド、特殊文字、エンコーディングのバリエーションを適切に処理しながら、同じタスクを達成します。 WorkBookクラスは内部で解析の複雑さを管理するため、開発者はデータを抽出するのではなく、データを扱うことに集中できます。 新しいCsvReaderインスタンスやCsvHelperパッケージの設定を必要とするアプローチとは異なり、IronXLは追加の設定を必要としません。
異なる CSV デリミタはどのように扱えますか?
CSVファイルでは、区切り文字としてカンマが使用されるとは限りません。 ヨーロッパのシステムエクスポートでは、10進数でカンマが使用されるため、セミコロンが頻繁に使用され、タブ区切り値(TSV)やパイプ区切りファイルは、さまざまなアプリケーションからのデータエクスポートに定期的に登場します。
using IronXL;
using System;
class Program
{
static void Main(string[] args)
{
// Reading a semicolon-delimited file (common in European exports)
WorkBook euroData = WorkBook.LoadCSV("german_report.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ";");
// Reading a tab-separated file
WorkBook tsvData = WorkBook.LoadCSV("exported_data.tsv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "\t");
// Reading a pipe-delimited file
WorkBook pipeData = WorkBook.LoadCSV("legacy_system.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "|");
// Access data identically regardless of original delimiter
WorkSheet sheet = euroData.DefaultWorkSheet;
int rowsCount = sheet.RowCount;
Console.WriteLine($"Loaded {rowsCount} rows with {sheet.ColumnCount} CSV columns");
}
}using IronXL;
using System;
class Program
{
static void Main(string[] args)
{
// Reading a semicolon-delimited file (common in European exports)
WorkBook euroData = WorkBook.LoadCSV("german_report.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ";");
// Reading a tab-separated file
WorkBook tsvData = WorkBook.LoadCSV("exported_data.tsv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "\t");
// Reading a pipe-delimited file
WorkBook pipeData = WorkBook.LoadCSV("legacy_system.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "|");
// Access data identically regardless of original delimiter
WorkSheet sheet = euroData.DefaultWorkSheet;
int rowsCount = sheet.RowCount;
Console.WriteLine($"Loaded {rowsCount} rows with {sheet.ColumnCount} CSV columns");
}
}LoadCSVのlistDelimiterパラメータは、フィールドの区切り文字として任意の1文字またはエスケープシーケンスを受け入れます。 タブ文字はtエスケープシーケンスを使用します。 ロード後、データ構造は元の形式に関係なく一貫性を保つため、区切り文字が異なる複数のソースからのCSVファイルを簡単に処理できます。 ほとんどのCSVファイルのデフォルト値はカンマですが、この柔軟性により、プロジェクトが遭遇するあらゆるバリエーションに対応できます。
入力
Read CSV .NET:IronXLを使用した最も簡単なC#のアプローチ: イメージ6 - セミコロン区切りのCSVファイル入力
出力
Read CSV .NET:IronXLを使用した最も簡単なC#のアプローチ: イメージ7 - セミコロン区切り出力<a href="/staticassets/excel-blog/read-csv-net/read-csv-net-7 "webp.jp
RowCountとColumnCountクラスのプロパティは、ファイルが正しく読み込まれたことを素早く確認できるため、見慣れないデータソースを扱う場合や、ASP.NET Coreアプリケーションでユーザーのアップロードを検証する場合に特に役立ちます。
CSVをDataTableに変換する最良の方法は何ですか?
CSVデータをDataTableに変換することで、データベース操作、UIアプリケーションでのデータバインディング、LINQクエリとの統合が可能になります。 ToDataTableメソッドは、1回の呼び出しでこの変換を実行します。
using IronXL;
using System;
using System.Data;
class Program
{
static void Main(string[] args)
{
// Load CSV and convert to DataTable
WorkBook workbook = WorkBook.LoadCSV("customers.csv", ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert worksheet to DataTable - true parameter uses CSV file header as column names
DataTable dataTable = sheet.ToDataTable(true);
// DataTable is now ready for database operations, binding, or LINQ queries
Console.WriteLine($"DataTable created with {dataTable.Columns.Count} columns:");
foreach (DataColumn column in dataTable.Columns)
{
// Property names from CSV header become column names
Console.WriteLine($" - {column.ColumnName}");
}
Console.WriteLine($"\nTotal records: {dataTable.Rows.Count}");
// Access data using standard DataTable syntax
foreach (DataRow row in dataTable.Rows)
{
// Access by column index or name attribute
string name = row["Name"].ToString();
string email = row["Email"].ToString();
Console.WriteLine($"Customer: {name}, Email: {email}");
}
}
}using IronXL;
using System;
using System.Data;
class Program
{
static void Main(string[] args)
{
// Load CSV and convert to DataTable
WorkBook workbook = WorkBook.LoadCSV("customers.csv", ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert worksheet to DataTable - true parameter uses CSV file header as column names
DataTable dataTable = sheet.ToDataTable(true);
// DataTable is now ready for database operations, binding, or LINQ queries
Console.WriteLine($"DataTable created with {dataTable.Columns.Count} columns:");
foreach (DataColumn column in dataTable.Columns)
{
// Property names from CSV header become column names
Console.WriteLine($" - {column.ColumnName}");
}
Console.WriteLine($"\nTotal records: {dataTable.Rows.Count}");
// Access data using standard DataTable syntax
foreach (DataRow row in dataTable.Rows)
{
// Access by column index or name attribute
string name = row["Name"].ToString();
string email = row["Email"].ToString();
Console.WriteLine($"Customer: {name}, Email: {email}");
}
}
}ToDataTable の boolean パラメータは、最初の行が列ヘッダ (true) になるか、データ (false) になるかを決定します。 true に設定すると、結果の DataTable のカラムは、CSV ファイルのヘッダー行からのプロパティ名を持ち、row["Name"] のようなカラム名を使用した直感的なデータアクセスが可能になります。
この変換は、SqlBulkCopyを使用したデータベースの一括挿入、WindowsフォームアプリケーションのDataGridViewコントロールへの入力、またはLINQ式を使用した複雑なデータ変換を必要とするシナリオに役立ちます。 DataTableフォーマットは、.NET Core Web APIプロジェクトでEntity Frameworkやその他のORMツールとも自然に統合されます。
CSVファイルをExcel形式に変換できますか?
IronXLの特筆すべき機能の一つは、CSVデータを適切なExcel形式に変換することです。 これは、元々フラットなCSVデータに数式、フォーマット、チャート、複数のワークシートを追加することを可能にします。
using IronXL;
using System;
class Program
{
static void Main(string[] args)
{
// Load CSV data from file path
string path = "quarterly_sales.csv";
WorkBook workbook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ",");
// Save as Excel XLSX format - create new Excel file
workbook.SaveAs("quarterly_sales.xlsx");
// Alternative: Save as legacy XLS format for older Excel versions
workbook.SaveAs("quarterly_sales.xls");
Console.WriteLine("CSV successfully converted to Excel format");
}
}using IronXL;
using System;
class Program
{
static void Main(string[] args)
{
// Load CSV data from file path
string path = "quarterly_sales.csv";
WorkBook workbook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ",");
// Save as Excel XLSX format - create new Excel file
workbook.SaveAs("quarterly_sales.xlsx");
// Alternative: Save as legacy XLS format for older Excel versions
workbook.SaveAs("quarterly_sales.xls");
Console.WriteLine("CSV successfully converted to Excel format");
}
}SaveAsメソッドは、ファイルの拡張子に基づいて出力形式を自動的に決定します。 XLSXは Excel 2007 以降と互換性のある最新の Office Open XML ファイルを作成し、XLSは古いアプリケーション用のレガシー Binary Interchange File Format ドキュメントを作成します。
入力
出力
Read CSV .NET:IronXLを使用した最もシンプルなC#アプローチ:画像9 - Excel出力Read CSV .NET: The Simplest C# Approach Using IronXL: Image 9 - Excel Output.
Read CSV .NET:IronXLを使用した最も簡単なC#のアプローチ:画像10 - CSVからExcelへの出力Read CSV .NET: The Simplest C# Approach Using IronXL: Image 10 - CSV to Excel Output.
このワークフローは、ユーザーに配布する前に、データベースやAPIからのCSVエクスポートを強化する必要がある場合に特に役立ちます。 変換後、IronXLの包括的な編集機能により、Excelファイルに書式や数式を追加したり、他のワークシートと組み合わせたりすることができます。 CSVファイルを書くために新しいStreamWriterインスタンスを持つvarライターを使うアプローチとは異なり、IronXLはファイル変換全体をシームレスに処理します。
CSVデータ内の特定のセルの値にはどのようにアクセスしますか?
IronXLはすべてのレコードを反復処理するだけでなく、使い慣れたExcelスタイルのアドレス指定を使って直接セルにアクセスすることもできます。 これにより、さまざまなデータ型にわたって、的を絞ったデータ抽出と型安全な値の取得が可能になります。
using IronXL;
using System;
// Example class to demonstrate structured data access
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
WorkBook workbook = WorkBook.LoadCSV("inventory.csv", ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Access specific cells using Excel-style addresses by index
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal price = sheet["C2"].DecimalValue;
Console.WriteLine($"Product: {productName}");
Console.WriteLine($"Quantity: {quantity}");
Console.WriteLine($"Price: ${price:F2}");
// Access a range of cells - return records from column A
var productRange = sheet["A2:A10"];
Console.WriteLine("\nAll products:");
foreach (var cell in productRange)
{
Console.WriteLine($" - {cell.StringValue}");
}
}
}using IronXL;
using System;
// Example class to demonstrate structured data access
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
WorkBook workbook = WorkBook.LoadCSV("inventory.csv", ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Access specific cells using Excel-style addresses by index
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal price = sheet["C2"].DecimalValue;
Console.WriteLine($"Product: {productName}");
Console.WriteLine($"Quantity: {quantity}");
Console.WriteLine($"Price: ${price:F2}");
// Access a range of cells - return records from column A
var productRange = sheet["A2:A10"];
Console.WriteLine("\nAll products:");
foreach (var cell in productRange)
{
Console.WriteLine($" - {cell.StringValue}");
}
}
}セルのアドレス指定はExcelの慣例に従い、アルファベットはCSVの列(A、B、C)を表し、数字は行のインデックス位置(1、2、3)を表します。 Cellクラスは、StringValue、IntValue、DecimalValue、BoolValue、DateTimeValueを含む型固有のアクセサを提供します。 これらのアクセサは、解析と変換を自動的に処理するため、手動での型キャストが不要になり、すべてを文字列値として格納する場合と比較してメモリのオーバーヘッドが削減されます。
A2:A10のような記法を使用した範囲選択は、反復、集約関数、一括操作をサポートするRangeオブジェクトを返します。 これは、大きなCSVファイルから特定の列や長方形のデータ領域を抽出する際に役立ちます。 例えば、特定の列から新しい値のリストを作成したり、フィルタリングされたデータを別のファイルに書き込んだりします。
CSVファイル操作におけるエラー処理
.NETアプリケーションでCSVファイルを扱う場合、堅牢なエラー処理が不可欠です。 CSVファイルの読み書きは、ファイルの欠落、不正なデータ、予期しない解析エラーなど、さまざまな問題につながる可能性があります。 これらのシナリオを管理するには、ファイルやデータの操作をtry-catchブロックでラップするのがベストプラクティスです。
結論
.NETでCSVファイルを読むには、適切なアプローチを使用すれば、最小限の労力で済みます。 IronXLのLoadCSVメソッドは複雑な構文解析を自動的に処理し、さまざまな区切り文字をサポートし、使い慣れたスプレッドシートの概念を通して構造化データにすぐにアクセスできるようにします。ASP.NET Coreアプリケーション、.NET Core Web API、またはコンソール・プロジェクトのいずれを構築する場合でも、このライブラリはCSV処理を合理化します。
無料トライアルを開始して、IronXLが.NETプロジェクトのCSVファイルの読み込みをどのように簡素化するかを体験してください。 本番環境への導入については、ライセンスオプションが$799から始まり、永久使用権と1年間のサポートが含まれます。
よくある質問
C#でCSVファイルを読む最も簡単な方法は何ですか?
C#でCSVファイルを読む最も簡単な方法は、CSVデータを扱うための簡単で効率的な方法を提供するXLを使用することです。
IronXLは大きなCSVファイルを効率的に処理できますか?
IronXLは大きなCSVファイルを効率的に処理するように設計されており、パフォーマンス上の問題なく大規模なデータセットを処理するのに適しています。
IronXLは.NETアプリケーションと互換性がありますか?
IronXLは.NETアプリケーションと完全に互換性があり、開発者はCSV読み取り機能をC#プロジェクトに簡単に統合することができます。
IronXLは異なる区切り文字のCSVファイルの読み込みをサポートしていますか?
IronXLは様々なデリミター付きのCSVファイルの読み込みをサポートしており、異なるフォーマットのファイルにも柔軟に対応できます。
IronXLはヘッダー付きのCSVファイルを解析できますか?
はい、IronXLはヘッダー付きのCSVファイルを解析することができます。
IronXLはどのようにCSVデータ操作を簡素化するのですか?
IronXLはC#で直接CSVデータを読み、編集し、書き込む直感的な方法を提供することで、CSVデータ操作を簡素化します。
IronXLでCSVファイルを非同期で読み込むことはできますか?
IronXLは非同期処理をサポートしており、メインアプリケーションのスレッドをブロックすることなくCSVファイルを読み込むことができます。
IronXLはCSVデータをExcel形式に変換できますか?
IronXLはCSVデータをExcel形式に変換し、Excelの高度な機能をデータ分析やプレゼンテーションに活用することができます。
IronXLはCSVファイルを読み込むための依存関係がありますか?
IronXLはCSVファイルを読み込むために外部依存を必要としないスタンドアローン・ライブラリであり、プロジェクトでのセットアップ・プロセスを簡素化します。
IronXLを使ってCSVから他の形式にデータをエクスポートできますか?
IronXLはCSVからExcelを含む様々なフォーマットにデータをエクスポートすることができます。








