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

IronXLを使用してC#でCSVにデータを保存する方法

CSVファイルの管理は、ビジネスレポートの生成からデータベースレコードのエクスポートまで、現代のC#アプリケーションにおいて基本的な要件です。 .NETは基本的なファイル書き込み機能を提供しますが、特殊文字や複数のデータ型、巨大なデータセットを扱う際に、CSVファイルを効率的に処理するには、より堅牢なソリューションが必要です。 IronXLは、このプロセス全体を簡素化し、C#のCSV保存を含むCSV操作を処理する包括的なAPIを提供し、完全なExcel互換を実現します。

このチュートリアルでは、C#アプリケーションでCSVファイルを作成、保存、および管理するためのIronXLの強力な機能を活用する方法を示します。 シンプルなコレクションから複雑なDataTablesまで、様々なデータソースを扱いながら、クリーンでメンテナブルなコードを維持するための実用的な技術を学びます。

C#でデータをCSVに保存する方法:画像1 - IronXL

IronXLの始め方

CSV操作に進む前に、プロジェクトにIronXLをインストールする必要があります。 このライブラリは.NET Framework 4.6.2+および.NET Core 2+をサポートしているため、従来のアプリケーションおよび最新のアプリケーションの両方に互換性があります。 IronXLはまた優れたクロスプラットフォームサポートを提供し、Windows、Linux、macOS環境でシームレスに動作します。

C#でデータをCSVに保存する方法:画像2 - クロスプラットフォーム

Visual Studioを開き、パッケージマネージャコンソールに移動し、次のコマンドを入力します:

Install-Package IronXL.Excel

C#でデータをCSVに保存する方法:画像3 - インストール

.NET CLIを通じて:

dotnet add package IronXL.Excel
dotnet add package IronXL.Excel
SHELL

インストール後、C#ファイルにIronXL名前空間を追加して、データ書き込みなどのすべてのCSV管理機能にアクセスします:

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

このシンプルなセットアップにより強力なスプレッドシート操作機能に即時アクセスできます。 Excel Interopや複雑なCSV解析ロジックを必要とする従来のアプローチとは異なり、IronXLは裏側の複雑さを処理する直感的なAPIを提供します。 このライブラリはMicrosoft Officeのインストールを必要とせずに独立して動作し、サーバーデプロイメントやコンテナ化されたアプリケーションに最適です。

ライブラリのインストールや初期化中にエラーが発生した場合、プロジェクトがサポートされている.NETバージョンをターゲットにしているか、およびすべての依存関係が正しく復元されていることを確認してください。

新しいCSVファイルにデータを保存および書き込む方法は?

IronXLを使用してゼロからCSVファイルを作成または書き込むことは直感的なパターンに従います。 ワークブックを作成し、すべてのデータをセルに追加し、CSV形式で保存します。 このアプローチは、基本的な文字列連結方法よりもはるかに多くの制御を提供します。

メインのCSV作成ロジックに進む前に、パブリック クラス student構造を使用した簡単なモデル定義があります。 このモデルは、後でCSVにエクスポートできる構造化データを表します。

// Define a Student class to model your data
public class Student
{
    public string? Name { get; set; } // public string firstname, public string lastname
    public int Age { get; set; }
    public string? Grade { get; set; }
}
// Define a Student class to model your data
public class Student
{
    public string? Name { get; set; } // public string firstname, public string lastname
    public int Age { get; set; }
    public string? Grade { get; set; }
}
Option Strict On



Public Class Student
    Public Property Name As String
    Public Property Age As Integer
    Public Property Grade As String
End Class
$vbLabelText   $csharpLabel

学生オブジェクトのリストを埋めてから、IronXLを使用してそれらを効率的にCSVファイルにエクスポートできます。この例では、クラスのプロパティをワークシート セルにマッピングする方法を示しています:

using System;
using System.Collections.Generic;
using IronXL;
class Program
{
    static void Main(string[] args)
    {
        // Create sample data using the student class
        List<Student> students = new List<Student>()
        {
            new Student { Name = "Alice Johnson", Age = 20, Grade = "A" },
            new Student { Name = "Brian Smith", Age = 22, Grade = "B+" },
            new Student { Name = "Chloe Brown", Age = 19, Grade = "A-" },
            new Student { Name = "David Clark", Age = 21, Grade = "B" }
        };
        // Create a new workbook and worksheet
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet sheet = workbook.CreateWorkSheet("Students");
        // Add headers
        sheet["A1"].Value = "Name";
        sheet["B1"].Value = "Age";
        sheet["C1"].Value = "Grade";
        // Add student data to the worksheet
        for (int i = 0; i < students.Count; i++)
        {
            sheet[$"A{i + 2}"].Value = students[i].Name;
            sheet[$"B{i + 2}"].IntValue = students[i].Age;
            sheet[$"C{i + 2}"].Value = students[i].Grade;
        }
        // Save as CSV file
        workbook.SaveAsCsv("students.csv");
        Console.WriteLine("students.csv file has been created successfully!");
    }
}
using System;
using System.Collections.Generic;
using IronXL;
class Program
{
    static void Main(string[] args)
    {
        // Create sample data using the student class
        List<Student> students = new List<Student>()
        {
            new Student { Name = "Alice Johnson", Age = 20, Grade = "A" },
            new Student { Name = "Brian Smith", Age = 22, Grade = "B+" },
            new Student { Name = "Chloe Brown", Age = 19, Grade = "A-" },
            new Student { Name = "David Clark", Age = 21, Grade = "B" }
        };
        // Create a new workbook and worksheet
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet sheet = workbook.CreateWorkSheet("Students");
        // Add headers
        sheet["A1"].Value = "Name";
        sheet["B1"].Value = "Age";
        sheet["C1"].Value = "Grade";
        // Add student data to the worksheet
        for (int i = 0; i < students.Count; i++)
        {
            sheet[$"A{i + 2}"].Value = students[i].Name;
            sheet[$"B{i + 2}"].IntValue = students[i].Age;
            sheet[$"C{i + 2}"].Value = students[i].Grade;
        }
        // Save as CSV file
        workbook.SaveAsCsv("students.csv");
        Console.WriteLine("students.csv file has been created successfully!");
    }
}
Imports System
Imports System.Collections.Generic
Imports IronXL

Class Program
    Shared Sub Main(ByVal args As String())
        ' Create sample data using the student class
        Dim students As New List(Of Student)() From {
            New Student With {.Name = "Alice Johnson", .Age = 20, .Grade = "A"},
            New Student With {.Name = "Brian Smith", .Age = 22, .Grade = "B+"},
            New Student With {.Name = "Chloe Brown", .Age = 19, .Grade = "A-"},
            New Student With {.Name = "David Clark", .Age = 21, .Grade = "B"}
        }

        ' Create a new workbook and worksheet
        Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
        Dim sheet As WorkSheet = workbook.CreateWorkSheet("Students")

        ' Add headers
        sheet("A1").Value = "Name"
        sheet("B1").Value = "Age"
        sheet("C1").Value = "Grade"

        ' Add student data to the worksheet
        For i As Integer = 0 To students.Count - 1
            sheet($"A{i + 2}").Value = students(i).Name
            sheet($"B{i + 2}").IntValue = students(i).Age
            sheet($"C{i + 2}").Value = students(i).Grade
        Next

        ' Save as CSV file
        workbook.SaveAsCsv("students.csv")
        Console.WriteLine("students.csv file has been created successfully!")
    End Sub
End Class

Class Student
    Public Property Name As String
    Public Property Age As Integer
    Public Property Grade As String
End Class
$vbLabelText   $csharpLabel

説明:

  1. パブリック クラス studentはデータモデルのスキーマを定義します。
  2. サンプルデータで学生オブジェクトのリストが作成されます。
  3. IronXLのWorkBookおよびWorkSheet APIを使用して、メモリ内に構造化スプレッドシートを作成します。
  4. 読みやすさを確保するために、CSV出力に手動でヘッダーを追加します。
  5. 学生データは行ごとにワークシートに書き込まれます。
  6. 最後に、SaveAsCsv()を使用してCSVファイルとしてデータを保存します。

出力

C#でデータをCSVに保存する方法:図4 - コンソール出力

C#でデータをCSVに保存する方法:図5 - Excel出力

このパターンはスケーラブルです; このため、より大きなデータセットに簡単に適応させたり、データベースやAPIから学生データを取得するアプリケーションに統合したりできます。

例えば、ファイルへの書き込み中にエラーが発生した場合(例えば、ファイルがロックされている、パスが無効)、それを優雅に処理することができます:

try
{
    workbook.SaveAsCsv("students.csv");
}
catch (Exception ex)
{
    Console.WriteLine($"Error occurred while saving CSV: {ex.Message}");
}
try
{
    workbook.SaveAsCsv("students.csv");
}
catch (Exception ex)
{
    Console.WriteLine($"Error occurred while saving CSV: {ex.Message}");
}
Try
    workbook.SaveAsCsv("students.csv")
Catch ex As Exception
    Console.WriteLine($"Error occurred while saving CSV: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

これにより、ファイルI/Oの問題が発生してもアプリケーションは頑強で情報豊かであることが保証されます。

基本的なCSVファイルを作成するためのサンプルコードは次のとおりです。

static void Main(string[] args)
{
 // Create a new workbook
 var writer = WorkBook.Create(ExcelFileFormat.XLSX);
 WorkSheet sheet = writer.CreateWorkSheet("Sales Data");
 // Add headers
 sheet["A1"].Value = "Product";
 sheet["B1"].Value = "Quantity";
 sheet["C1"].Value = "Price";
 sheet["D1"].Value = "Total";
 // Add data rows
 sheet["A2"].Value = "Widget A";
 sheet["B2"].IntValue = 100;
 sheet["C2"].DecimalValue = 29.99m;
 sheet["D2"].Formula = "=B2*C2";
 sheet["A3"].Value = "Widget B";
 sheet["B3"].IntValue = 50;
 sheet["C3"].DecimalValue = 49.99m;
 sheet["D3"].Formula = "=B3*C3";
 // Save as new CSV file
 writer.SaveAsCsv("sales_report.csv");
}
static void Main(string[] args)
{
 // Create a new workbook
 var writer = WorkBook.Create(ExcelFileFormat.XLSX);
 WorkSheet sheet = writer.CreateWorkSheet("Sales Data");
 // Add headers
 sheet["A1"].Value = "Product";
 sheet["B1"].Value = "Quantity";
 sheet["C1"].Value = "Price";
 sheet["D1"].Value = "Total";
 // Add data rows
 sheet["A2"].Value = "Widget A";
 sheet["B2"].IntValue = 100;
 sheet["C2"].DecimalValue = 29.99m;
 sheet["D2"].Formula = "=B2*C2";
 sheet["A3"].Value = "Widget B";
 sheet["B3"].IntValue = 50;
 sheet["C3"].DecimalValue = 49.99m;
 sheet["D3"].Formula = "=B3*C3";
 // Save as new CSV file
 writer.SaveAsCsv("sales_report.csv");
}
$vbLabelText   $csharpLabel

このコードは、ヘッダーとデータを持つ構造化ワークブックを作成し、それをCSV形式にエクスポートします。 WorkBook.Create() メソッドは、メモリ内に新しいスプレッドシートを初期化します。 各セルには、文字列、整数、小数点、さらには数式など、異なるデータ型を保持できます。 SaveAsCsv() を呼び出すと、IronXLが変換を自動的に処理し、特殊文字を正しくエスケープし、データの整合性を維持します。

このアプローチの美しさは、その柔軟性にあります。 エクスポート前にデータをスプレッドシートとして操作し、数式、フォーマット、または検証ルールを適用することができます。 IronXLはエクスポートプロセス中に数式を自動で評価し、CSVには数式のテキストではなく計算された値が含まれます。

出力

C#でデータをCSVに保存する方法:図6 - CSV出力

カスタム区切り文字の要件については、IronXLは標準のカンマへの代替案を指定できるようにします:

// Save with semicolon delimiter for European locale compatibility
workbook.SaveAsCsv("sales_report.csv", ";");
// Save with tab delimiter
workbook.SaveAsCsv("sales_report.tsv", "\t");
// Save with semicolon delimiter for European locale compatibility
workbook.SaveAsCsv("sales_report.csv", ";");
// Save with tab delimiter
workbook.SaveAsCsv("sales_report.tsv", "\t");
$vbLabelText   $csharpLabel

この柔軟性により、さまざまな地域設定およびアプリケーション要件への互換性が保証されます。 ライブラリはエンコードの問題を自動で処理し、異なるシステムやロケールでの文字表示を正しく保証します。

C#でデータをCSVに保存する方法:図7 - 特徴

DataTableをCSVにエクスポートする方法?

DataTablesは、データベースやビジネスロジックからの表形式データを保存するために.NETアプリケーションで広く使われています。 IronXLはシームレスなDataTableからCSVへの変換を提供し、その過程で列名やデータ型を保持します。

// Create a sample DataTable (simulating database results) to store data
DataTable customerOrders = new DataTable("CustomerOrders");
customerOrders.Columns.Add("OrderID", typeof(int));
customerOrders.Columns.Add("CustomerName", typeof(string));
customerOrders.Columns.Add("OrderDate", typeof(DateTime));
customerOrders.Columns.Add("Amount", typeof(decimal));
// Add sample data
customerOrders.Rows.Add(1001, "Acme Corp", new DateTime(2024, 1, 15), 1250.50m);
customerOrders.Rows.Add(1002, "TechStart Inc", new DateTime(2024, 1, 16), 3500.00m);
customerOrders.Rows.Add(1003, "Global Systems", new DateTime(2024, 1, 17), 875.25m);
// Convert DataTable to CSV using IronXL
WorkBook workbook = WorkBook.Create();
WorkSheet sheet = workbook.CreateWorkSheet("Orders");
// Add headers from DataTable columns
for (int i = 0; i < customerOrders.Columns.Count; i++)
{
    sheet.SetCellValue(0, i, customerOrders.Columns[i].ColumnName);
}
// Add data rows
for (int row = 0; row < customerOrders.Rows.Count; row++)
{
    for (int col = 0; col < customerOrders.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, customerOrders.Rows[row][col]);
    }
}
// Export to CSV
workbook.SaveAsCsv("customer_orders.csv");
// Create a sample DataTable (simulating database results) to store data
DataTable customerOrders = new DataTable("CustomerOrders");
customerOrders.Columns.Add("OrderID", typeof(int));
customerOrders.Columns.Add("CustomerName", typeof(string));
customerOrders.Columns.Add("OrderDate", typeof(DateTime));
customerOrders.Columns.Add("Amount", typeof(decimal));
// Add sample data
customerOrders.Rows.Add(1001, "Acme Corp", new DateTime(2024, 1, 15), 1250.50m);
customerOrders.Rows.Add(1002, "TechStart Inc", new DateTime(2024, 1, 16), 3500.00m);
customerOrders.Rows.Add(1003, "Global Systems", new DateTime(2024, 1, 17), 875.25m);
// Convert DataTable to CSV using IronXL
WorkBook workbook = WorkBook.Create();
WorkSheet sheet = workbook.CreateWorkSheet("Orders");
// Add headers from DataTable columns
for (int i = 0; i < customerOrders.Columns.Count; i++)
{
    sheet.SetCellValue(0, i, customerOrders.Columns[i].ColumnName);
}
// Add data rows
for (int row = 0; row < customerOrders.Rows.Count; row++)
{
    for (int col = 0; col < customerOrders.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, customerOrders.Rows[row][col]);
    }
}
// Export to CSV
workbook.SaveAsCsv("customer_orders.csv");
Imports System
Imports System.Data
Imports IronXL

' Create a sample DataTable (simulating database results) to store data
Dim customerOrders As New DataTable("CustomerOrders")
customerOrders.Columns.Add("OrderID", GetType(Integer))
customerOrders.Columns.Add("CustomerName", GetType(String))
customerOrders.Columns.Add("OrderDate", GetType(DateTime))
customerOrders.Columns.Add("Amount", GetType(Decimal))
' Add sample data
customerOrders.Rows.Add(1001, "Acme Corp", New DateTime(2024, 1, 15), 1250.5D)
customerOrders.Rows.Add(1002, "TechStart Inc", New DateTime(2024, 1, 16), 3500.0D)
customerOrders.Rows.Add(1003, "Global Systems", New DateTime(2024, 1, 17), 875.25D)
' Convert DataTable to CSV using IronXL
Dim workbook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Orders")
' Add headers from DataTable columns
For i As Integer = 0 To customerOrders.Columns.Count - 1
    sheet.SetCellValue(0, i, customerOrders.Columns(i).ColumnName)
Next
' Add data rows
For row As Integer = 0 To customerOrders.Rows.Count - 1
    For col As Integer = 0 To customerOrders.Columns.Count - 1
        sheet.SetCellValue(row + 1, col, customerOrders.Rows(row)(col))
    Next
Next
' Export to CSV
workbook.SaveAsCsv("customer_orders.csv")
$vbLabelText   $csharpLabel

この例は、データベースからの注文データをレポーティングや統合の目的でエクスポートする必要がある現実のシナリオを示しています。 コードは、DataTable構造を列ヘッダーと行データを保持するように繰り返します。 IronXLは、日付、小数点、文字列などの異なるデータ型の変換を適切に処理し、生成されるCSVファイルではきちんとフォーマットされます。

出力

C#でデータをCSVに保存する方法:図8 - DataTableからCSV出力

複数の関連テーブルや高度なデータ変換を含むより複雑なシナリオについては、IronXLのセル参照と数式機能を活用できる:

// Add summary row with formulas
int lastRow = customerOrders.Rows.Count + 1;
sheet[$"A{lastRow + 1}"].Value = "Total:";
sheet[$"D{lastRow + 1}"].Formula = $"=SUM(D2:D{lastRow})";
// Calculate and save
workbook.SaveAsCsv("customer_orders_with_total.csv");
// Add summary row with formulas
int lastRow = customerOrders.Rows.Count + 1;
sheet[$"A{lastRow + 1}"].Value = "Total:";
sheet[$"D{lastRow + 1}"].Formula = $"=SUM(D2:D{lastRow})";
// Calculate and save
workbook.SaveAsCsv("customer_orders_with_total.csv");
' Add summary row with formulas
Dim lastRow As Integer = customerOrders.Rows.Count + 1
sheet($"A{lastRow + 1}").Value = "Total:"
sheet($"D{lastRow + 1}").Formula = $"=SUM(D2:D{lastRow})"
' Calculate and save
workbook.SaveAsCsv("customer_orders_with_total.csv")
$vbLabelText   $csharpLabel

このアプローチは、従来のDataTableエクスポートメソッドよりもはるかに多くの制御を提供します。 計算フィールドを追加したり、条件付きフォーマットロジックを適用したり、最終エクスポート前に列を再配置したりできます。 IronXLのドキュメントには、高度なDataTable操作シナリオのための包括的な例が提供されています。

ExcelファイルをCSVに変換する方法?

IronXLの最も強力な特徴の一つは、既存のExcelファイルとシームレスに連携し、データの整合性を保ったままCSV形式に変換する能力です。 これは、Excelレポートを生成するシステムと統合するが、ダウンストリーム処理にはCSVが必要な場合に特に役立ちます。

// Load an existing Excel file
WorkBook existingWorkbook = WorkBook.Load("Budget.xlsx");
// Access the first worksheet
WorkSheet sheet = existingWorkbook.WorkSheets[0];
// Save as CSV - single sheet
sheet.SaveAsCsv("Budget.csv");
// Or save entire workbook (creates multiple CSV files for multiple sheets)
existingWorkbook.SaveAsCsv("BudgetReport.csv");
// Load an existing Excel file
WorkBook existingWorkbook = WorkBook.Load("Budget.xlsx");
// Access the first worksheet
WorkSheet sheet = existingWorkbook.WorkSheets[0];
// Save as CSV - single sheet
sheet.SaveAsCsv("Budget.csv");
// Or save entire workbook (creates multiple CSV files for multiple sheets)
existingWorkbook.SaveAsCsv("BudgetReport.csv");
' Load an existing Excel file
Dim existingWorkbook As WorkBook = WorkBook.Load("Budget.xlsx")
' Access the first worksheet
Dim sheet As WorkSheet = existingWorkbook.WorkSheets(0)
' Save as CSV - single sheet
sheet.SaveAsCsv("Budget.csv")
' Or save entire workbook (creates multiple CSV files for multiple sheets)
existingWorkbook.SaveAsCsv("BudgetReport.csv")
$vbLabelText   $csharpLabel

Excelファイルを読み込むとき、IronXLは数式によって計算された値も含めたすべてのセル値を保持します。 ライブラリは変換プロセス中にExcelの数式を評価し、CSVには実際の計算された値が含まれます。 これにより、CSVエクスポートで数式テキストが表示されるという一般的な問題が解消されます。

入力

C#でデータをCSVに保存する方法:図9 - サンプル入力

出力

C#でデータをCSVに保存する方法:図10 - ExcelからCSV出力

複数のシートが含まれるワークブックの場合、IronXLは各シートをインテリジェントに処理します:

// Process multiple sheets
WorkBook multiSheetWorkbook = WorkBook.Load("annual_data.xlsx");
foreach (WorkSheet sheet in multiSheetWorkbook.WorkSheets)
{
    string fileName = $"export_{sheet.Name}.csv";
    sheet.SaveAsCsv(fileName);
    Console.WriteLine($"Exported {sheet.Name} to {fileName}");
}
// Process multiple sheets
WorkBook multiSheetWorkbook = WorkBook.Load("annual_data.xlsx");
foreach (WorkSheet sheet in multiSheetWorkbook.WorkSheets)
{
    string fileName = $"export_{sheet.Name}.csv";
    sheet.SaveAsCsv(fileName);
    Console.WriteLine($"Exported {sheet.Name} to {fileName}");
}
Imports System

' Process multiple sheets
Dim multiSheetWorkbook As WorkBook = WorkBook.Load("annual_data.xlsx")
For Each sheet As WorkSheet In multiSheetWorkbook.WorkSheets
    Dim fileName As String = $"export_{sheet.Name}.csv"
    sheet.SaveAsCsv(fileName)
    Console.WriteLine($"Exported {sheet.Name} to {fileName}")
Next
$vbLabelText   $csharpLabel

このコードは、Excelファイル内のすべてのワークシートを繰り返し処理し、各シートのために別々のCSVファイルを作成します。 シート名はファイル命名に保持されるため、各CSVファイルの出所を簡単に特定できます。 IronXLは様々なExcelフォーマット(XLSX、XLS、XLSM、XLTXなど)をサポートしており、さまざまなExcelバージョンやユースケースと幅広い互換性を提供します。 ドキュメントでは形式間の変換についてさらに学べます。

高度なCSV管理テクニック

基本的なCSV作成を超えて、IronXLは本番環境で頻繁に発生する複雑なシナリオを処理するための高度な機能を提供します。 これらの能力は、単純なファイル書き込みアプローチとは一線を画します。

特殊文字を扱う際、IronXLは自動的にエスケープとエンコードを処理します:

WorkBook workbook = WorkBook.Create();
WorkSheet sheet = workbook.CreateWorkSheet("Data");
// Data with special characters
sheet["A1"].Value = "Company \"ABC\", Inc.";  // Quotes
sheet["B1"].Value = "Line 1\nLine 2";         // Newlines
sheet["C1"].Value = "Price: €50,00";          // Unicode characters
workbook.SaveAsCsv("special_chars.csv");
WorkBook workbook = WorkBook.Create();
WorkSheet sheet = workbook.CreateWorkSheet("Data");
// Data with special characters
sheet["A1"].Value = "Company \"ABC\", Inc.";  // Quotes
sheet["B1"].Value = "Line 1\nLine 2";         // Newlines
sheet["C1"].Value = "Price: €50,00";          // Unicode characters
workbook.SaveAsCsv("special_chars.csv");
Dim workbook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Data")
' Data with special characters
sheet("A1").Value = "Company ""ABC"", Inc."  ' Quotes
sheet("B1").Value = "Line 1" & vbLf & "Line 2"  ' Newlines
sheet("C1").Value = "Price: €50,00"  ' Unicode characters
workbook.SaveAsCsv("special_chars.csv")
$vbLabelText   $csharpLabel

IronXLは引用符を適切にエスケープし、複数の行のコンテンツを処理し、Unicode文字を保持します。 この自動処理により、手動の文字列操作アプローチによくあるCSV解析エラーを防ぎます。

出力

C#でデータをCSVに保存する方法:図11 - 特殊文字出力

バッチ処理シナリオの場合、複数のファイルを効率的に処理できます:

string[] sourceFiles = Directory.GetFiles("input_folder", "*.xlsx");
foreach (string file in sourceFiles)
{
    WorkBook wb = WorkBook.Load(file);
    var csv = Path.ChangeExtension(file, ".csv");
    wb.SaveAsCsv(csv);
}
string[] sourceFiles = Directory.GetFiles("input_folder", "*.xlsx");
foreach (string file in sourceFiles)
{
    WorkBook wb = WorkBook.Load(file);
    var csv = Path.ChangeExtension(file, ".csv");
    wb.SaveAsCsv(csv);
}
Imports System.IO

Dim sourceFiles As String() = Directory.GetFiles("input_folder", "*.xlsx")
For Each file As String In sourceFiles
    Dim wb As WorkBook = WorkBook.Load(file)
    Dim csv = Path.ChangeExtension(file, ".csv")
    wb.SaveAsCsv(csv)
Next
$vbLabelText   $csharpLabel

大規模なデータセットを処理する際にはメモリー効率が非常に重要です。 IronXLは内部でメモリー使用量を最適化しますが、データをチャンクで処理することでパフォーマンスをさらに向上させ、リソースを適切に破棄することができます:

WorkBook largeWorkbook = WorkBook.Create();
WorkSheet sheet = largeWorkbook.CreateWorkSheet("LargeData");
// Process in batches
const int batchSize = 1000;
for (int batch = 0; batch < 10; batch++)
{
 for (int row = 0; row < batchSize; row++)
 {
  int actualRow = (batch * batchSize) + row;
  sheet.SetCellValue(actualRow, 0, $"Row {actualRow}");
  // Add more data...
  sheet.SetCellValue(actualRow, 1, DateTime.Now);
  sheet.SetCellValue(actualRow, 2, $"Batch {batch + 1}");
 }
}
largeWorkbook.SaveAsCsv("large_dataset.csv");
WorkBook largeWorkbook = WorkBook.Create();
WorkSheet sheet = largeWorkbook.CreateWorkSheet("LargeData");
// Process in batches
const int batchSize = 1000;
for (int batch = 0; batch < 10; batch++)
{
 for (int row = 0; row < batchSize; row++)
 {
  int actualRow = (batch * batchSize) + row;
  sheet.SetCellValue(actualRow, 0, $"Row {actualRow}");
  // Add more data...
  sheet.SetCellValue(actualRow, 1, DateTime.Now);
  sheet.SetCellValue(actualRow, 2, $"Batch {batch + 1}");
 }
}
largeWorkbook.SaveAsCsv("large_dataset.csv");
Dim largeWorkbook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = largeWorkbook.CreateWorkSheet("LargeData")
' Process in batches
Const batchSize As Integer = 1000
For batch As Integer = 0 To 9
    For row As Integer = 0 To batchSize - 1
        Dim actualRow As Integer = (batch * batchSize) + row
        sheet.SetCellValue(actualRow, 0, $"Row {actualRow}")
        ' Add more data...
        sheet.SetCellValue(actualRow, 1, DateTime.Now)
        sheet.SetCellValue(actualRow, 2, $"Batch {batch + 1}")
    Next
Next
largeWorkbook.SaveAsCsv("large_dataset.csv")
$vbLabelText   $csharpLabel

出力

C#でデータをCSVに保存する方法:図12 - 大規模データセット出力

結論

IronXLは、C#におけるCSVファイル管理を煩わしいタスクから直接的なプロセスに変えます。 CSVとExcelの両方の操作のための統一APIを提供することで、複数のライブラリや複雑な解析ロジックの必要性を排除します。 ライブラリの特殊文字、データ型、およびエンコード問題の自動処理により、異なるシステムやロケールでの信頼性のあるデータエクスポートが保証されます。

レポートシステム、データ統合パイプライン、または単純なエクスポート機能を構築する場合でも、IronXL は効率的なCSV管理のために必要なツールを提供します。 既存のExcelファイルやDataTable構造との互換性により、既存のアプリケーションに大きなリファクタリングなしで簡単に統合できます。 CSVファイルが生成されたら、それを直接Excelで開いたり、いずれかのテキストエディタでRAW形式を確認してすばやく検証やトラブルシューティングを行うことができます。

CSV操作を効率化する準備はできましたか? 無料トライアルから始め、プロフェッショナルなサポートやアップデートを含みます。

C#でデータをCSVに保存する方法:図13 - ライセンス

よくある質問

C#でデータをCSVに保存するためにIronXLを使用する利点は何ですか?

IronXLは、データをCSVに保存することを含むCSV操作を簡素化する包括的なAPIを提供し、Excelとの完全な互換性も提供し、特殊文字、複数のデータ型、大規模なデータセットを簡単に管理できるようにします。

IronXLはCSVファイル内の特殊文字をどのように扱いますか?

IronXLは、ファイル操作中にデータの整合性を維持しながら、強力な解析および書き込み機能を提供することでCSVファイル内の特殊文字を効率的に管理します。

IronXLはCSVに保存する際に大規模なデータセットを管理できますか?

はい、IronXLは大規模なデータセットを効率的に処理するように設計されており、速度や信頼性を犠牲にすることなくCSVファイルにデータを保存するためのパフォーマンスに最適化されたアプローチを提供します。

IronXLはCSV操作で複数のデータ型をサポートしていますか?

IronXLは複数のデータ型をサポートしており、開発者がデータ型の互換性の問題に遭遇することなく、複雑なデータセットをCSV形式にシームレスにエクスポートできるよう支援します。

IronXLはCSVファイルを扱う際、Excelと互換性がありますか?

IronXLは完全なExcel互換性を提供しており、CSVファイルをExcel操作と一緒に扱うことができるため、スプレッドシートデータを扱う開発者にとって便利なツールです。

IronXLがC#におけるCSVファイル管理のための堅牢なソリューションとなる理由は何ですか?

IronXLのCSVファイル管理に関する堅牢なソリューションは、複雑なCSV操作を簡素化し、Excel互換性や大規模データセットのサポートなどの追加機能を提供する包括的なAPIに基づいています。

IronXLはC#でCSVに保存するプロセスをどのように簡素化していますか?

IronXLは、CSVファイル管理に関連する複雑さを抽象化し、開発者に簡潔な方法でデータを効率的にCSVに保存する手段を提供することでプロセスを簡素化します。

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

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

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