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

C#(コード例チュートリアル)を使用してCSVファイルを読み取る

このチュートリアルでは、追加のInteropなしでIronXL C#ライブラリを使用してCSVファイルを読む方法を、非常に効率的かつ効果的に示しています。

C#でCSVファイルを読む方法

MVC、ASP.NET、または.NET CoreでCSVファイルを読む前に、まずIronXLをインストールする必要があります。 こちらがプロセスの基本的な概要です。

Visual Studioでプロジェクトメニューを選択し、NuGetパッケージの管理を選択し、IronXL.Excelを検索してインストールします。

C#を使用してCSVファイルを読む(コード例チュートリアル)、図1: NuGetパッケージマネージャでIronXLパッケージをインストール NuGetパッケージマネージャでIronXLパッケージをインストール

C#でCSVファイルを読む必要があるときにIronXLは優れたツールです。 以下のコード例は、カンマや他の区切り文字を使用してCSVファイルを読むことができることを示しています。

// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Get the default worksheet from the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("Csv_To_Excel.xlsx");
// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Get the default worksheet from the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("Csv_To_Excel.xlsx");
' Load a CSV file into a WorkBook object specifying file format and delimiters
Dim workbook As WorkBook = WorkBook.LoadCSV("Weather.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")

' Get the default worksheet from the workbook
Dim ws As WorkSheet = workbook.DefaultWorkSheet

' Save the workbook as an Excel file
workbook.SaveAs("Csv_To_Excel.xlsx")
$vbLabelText   $csharpLabel

C#を使用してCSVファイルを読む(コード例チュートリアル)、図2: このチュートリアルのためのCSVデータ このチュートリアルのためのCSVデータ

WorkBookオブジェクトが作成されます。 WorkBookオブジェクトのLoadCSVメソッドは、読み取るCSVファイルの名前、形式、および使用される区切り文字を示すために使用され、それらは文字列配列として保存されます。 このシナリオでは、カンマが区切り文字として使用されます。

その後、WorkSheetオブジェクトが作成されます; ここにCSVファイルの内容が保存されます。 ファイルは新しい形式に名前を変更して保存されます。 CSVファイルデータは、ワークシートに表形式で配置されます。 出力は次のようになります:

C#を使用してCSVファイルを読む(コード例チュートリアル)、図3: データがExcelファイルに変換されました データがExcelファイルに変換されました

C# .NETでCSVを解析する

CSVには、フィールドでの改行の扱い方や、フィールドが引用符で囲まれるかどうかに関するいくつかの問題があります。これにより、単純な文字列分割技術(Split("'"))が機能しません。 代わりに、IronXLは、LoadCSVメソッドのオプションパラメーターを使用して区切り文字をカスタマイズすることを提供します。詳細はLoadCSVのAPIドキュメントを確認してください。

C#レコード—CSVデータを読む

以下の例では、foreachループを使用してCSVファイルの行を反復処理し、コンソールを使用してデータをレコードに書き込みます。

// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Get the default worksheet from the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Convert the worksheet data into a DataTable
DataTable dt = ws.ToDataTable(true); // The argument true indicates the first row is header

// Iterate through each row in the DataTable
foreach (DataRow row in dt.Rows)
{
    // Iterate through each column in the current row
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        // Output each cell value to the console
        Console.Write(row[i] + "  ");
    }
    // New line after each row
    Console.WriteLine();
}
// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Get the default worksheet from the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Convert the worksheet data into a DataTable
DataTable dt = ws.ToDataTable(true); // The argument true indicates the first row is header

// Iterate through each row in the DataTable
foreach (DataRow row in dt.Rows)
{
    // Iterate through each column in the current row
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        // Output each cell value to the console
        Console.Write(row[i] + "  ");
    }
    // New line after each row
    Console.WriteLine();
}
' Load a CSV file into a WorkBook object specifying file format and delimiters
Dim workbook As WorkBook = WorkBook.LoadCSV("Weather.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")

' Get the default worksheet from the workbook
Dim ws As WorkSheet = workbook.DefaultWorkSheet

' Convert the worksheet data into a DataTable
Dim dt As DataTable = ws.ToDataTable(True) ' The argument true indicates the first row is header

' Iterate through each row in the DataTable
For Each row As DataRow In dt.Rows
	' Iterate through each column in the current row
	For i As Integer = 0 To dt.Columns.Count - 1
		' Output each cell value to the console
		Console.Write(row(i) & "  ")
	Next i
	' New line after each row
	Console.WriteLine()
Next row
$vbLabelText   $csharpLabel

C#を使用してCSVファイルを読む(コード例チュートリアル)、図4: CSVファイルからデータをアクセスし、コンソールに表示 CSVファイルからデータをアクセスし、コンソールに表示

CSVファイルの文字列行をExcel形式に変換

手順は簡単です:CSVファイルを読み込み、Excelファイルとして保存します。

// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Get the default worksheet from the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Get the default worksheet from the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
' Load a CSV file into a WorkBook object specifying file format and delimiters
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")

' Get the default worksheet from the workbook
Dim ws As WorkSheet = workbook.DefaultWorkSheet

' Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx")
$vbLabelText   $csharpLabel

IronXLを使用して変換されたCSVファイルを読み取り、操作

IronXL WorkBookクラスはExcelシートを表し、このクラスを使用してC#でExcelファイルを開きます。 以下のコード例では、選択したExcelファイルをWorkBookオブジェクトにロードします:

// Load WorkBook from a .xlsx file
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
// Load WorkBook from a .xlsx file
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
' Load WorkBook from a .xlsx file
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")
$vbLabelText   $csharpLabel

WorkSheetオブジェクトは多くのWorkBooksに存在します。 これらはExcelドキュメントのワークシートです。 ワークブックにワークシートがある場合、次のようにして名前で取得できます:

// Open a specific worksheet for reading by its name
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open a specific worksheet for reading by its name
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
' Open a specific worksheet for reading by its name
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
$vbLabelText   $csharpLabel

セル値を読み取るためのコード:

// Read and output values from a range of cells elegantly
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read and output values from a range of cells elegantly
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
' Read and output values from a range of cells elegantly
For Each cell In worksheet("A2:A10")
	Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
$vbLabelText   $csharpLabel

以下のコードサンプルは、ワークブックとワークシートを読み込んだ後に数式を更新または特定のセルに適用できます。 以下のコードです:

// Set formulas for specific cells
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";

// Force recalculate all formula values in all sheets
workbook.EvaluateAll();
// Set formulas for specific cells
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";

// Force recalculate all formula values in all sheets
workbook.EvaluateAll();
' Set formulas for specific cells
worksheet("A1").Formula = "Sum(B8:C12)"
worksheet("B8").Formula = "=C9/C11"
worksheet("G30").Formula = "Max(C3:C7)"

' Force recalculate all formula values in all sheets
workbook.EvaluateAll()
$vbLabelText   $csharpLabel

結論とIronXL特別オファー

IronXLはCSVをExcelにわずか2行のコードで変換します。C#でのCSV処理も可能です。

Interopの必要なしに、IronXLのExcel APIを使用するのは簡単です。 さらに、IronXLは、Excelワークブック、ワークシートおよびセルレベルで相互作用するための幅広い機能を提供しています。たとえば、人気のある形式間の変換セルデータのフォーマットセルの結合数学関数の挿入、およびチャートの管理や画像の追加など。

IronXL試用ライセンスキーを使用して透かしなしで起動できます。

ライセンスは$799から始まり、1年間の無料サポートとアップデートが含まれます。

IronPDF、IronXL、IronOCR、IronBarcode、およびIronWebscraperはIron Softwareのスイートの一部です。 Iron Softwareは、その全パッケージを割引価格で購入することを可能にします。それらのツールすべてを2つ分の価格で使用できます。

これは探る価値があります。

よくある質問

C#でCSVファイルを読み取るにはどうすればよいですか?

IronXLライブラリを使用して、LoadCSVメソッドを利用することにより、CSVデータをWorkBookオブジェクトに読み込んでさらに操作が可能です。

C#でCSVデータをExcel形式に変換する最良の方法は何ですか?

C#でCSVデータをExcel形式に変換する最良の方法は、IronXLを使用することです。CSVをWorkBookオブジェクトにロードし、SaveAsメソッドを使用してExcelファイルとして保存します。

C#ライブラリを使ってカスタムデリミタを持つCSVファイルをどのように処理しますか?

IronXLを使用すると、LoadCSVメソッドでデリミタをオプションのパラメータとして指定することで、カスタムデリミタを持つCSVファイルを処理できます。

C#でCSVデータをデータベース形式に直接変換できますか?

はい、IronXLを利用してToDataTableメソッドを使うことで、CSVデータをデータベース形式に変換し、データベース操作に適したDataTableオブジェクトに変換できます。

C#で存在しないCSVファイルをチェックするための利用可能なメソッドは何ですか?

{"S":"C#\u3067\u306f\u3001IronXL\u306eExists\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001CSV\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3001\u975e\u5b58\u5728\u30d5\u30a1\u30a4\u30eb\u306b\u95a2\u9023\u3059\u308b\u30a8\u30e9\u30fc\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002\u201c"}

C#でCSVから変換した後にExcelデータをどのように操作しますか?

C#でCSVをExcelに変換した後、IronXLの機能を使用して書式設定、セルの結合、数式の挿入、グラフまたは画像の追加など、データを操作できます。

IronXLがC#でCSVファイルの読み取りと変換に提供するメリットは何ですか?

IronXLは、簡単なインストール、追加のインターロップが不要、カスタムデリミタのサポート、Excel内でCSVデータを変換および操作するための強力なメソッドを提供するといったメリットがあります。

C#でCSVデータの特殊文字をどのように処理しますか?

IronXLを使用することで、CSVファイルをロードする際にファイルのエンコーディングやデリミタを指定して、データの整合性と正確性を確保します。

IronXLユーザーにはどのようなサポートがありますか?

IronXLライセンスには1年間の無料サポートと更新が含まれており、支援を提供し、最新の機能と修正を確実に取得できます。

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

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

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