【C#】CSV出力の方法

【C#】CSV出力の方法

CSVとは?

CSV(Comma-Separated Values)は、データをカンマ区切りで記述するファイル形式です。Excelやデータベースとの連携にも広く使用されます。

基本的なCSV出力

C#でCSVを出力する基本的な方法は、StreamWriter を使用することです。

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string filePath = "output.csv";
        using (StreamWriter writer = new StreamWriter(filePath))
        {
            writer.WriteLine("ID,Name,Age");
            writer.WriteLine("1,Alice,30");
            writer.WriteLine("2,Bob,25");
        }
        Console.WriteLine("CSVファイルを出力しました。");
    }
}

このコードを実行すると、output.csv にデータが書き込まれます。

リストからCSVを出力する

リストをCSVに書き出す方法を見てみましょう。

using System;
using System.Collections.Generic;
using System.IO;

class Program
{
    static void Main()
    {
        string filePath = "list_output.csv";
        List<Person> people = new List<Person>
        {
            new Person { ID = 1, Name = "Alice", Age = 30 },
            new Person { ID = 2, Name = "Bob", Age = 25 }
        };

        using (StreamWriter writer = new StreamWriter(filePath))
        {
            writer.WriteLine("ID,Name,Age");
            foreach (var person in people)
            {
                writer.WriteLine($"{person.ID},{person.Name},{person.Age}");
            }
        }
        Console.WriteLine("リストのデータをCSVに出力しました。");
    }
}

class Person
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

DataTableからCSVを出力する

DataTable のデータをCSVに書き出す場合も考えられます。

using System;
using System.Data;
using System.IO;

class Program
{
    static void Main()
    {
        DataTable table = new DataTable();
        table.Columns.Add("ID");
        table.Columns.Add("Name");
        table.Columns.Add("Age");
        
        table.Rows.Add("1", "Alice", "30");
        table.Rows.Add("2", "Bob", "25");
        
        string filePath = "datatable_output.csv";
        using (StreamWriter writer = new StreamWriter(filePath))
        {
            foreach (DataColumn column in table.Columns)
            {
                writer.Write(column.ColumnName + ",");
            }
            writer.WriteLine();
            
            foreach (DataRow row in table.Rows)
            {
                foreach (var item in row.ItemArray)
                {
                    writer.Write(item.ToString() + ",");
                }
                writer.WriteLine();
            }
        }
        Console.WriteLine("DataTableのデータをCSVに出力しました。");
    }
}

エンコーディングの考慮

日本語を含むCSVを出力する場合、エンコーディングに注意が必要です。

using (StreamWriter writer = new StreamWriter("utf8_output.csv", false, System.Text.Encoding.UTF8))
{
    writer.WriteLine("ID,Name,Age");
    writer.WriteLine("1,佐藤,30");
}

Excelで開く場合は、BOM付きUTF-8にすると文字化けを防げます。

using (StreamWriter writer = new StreamWriter("utf8_bom_output.csv", false, new System.Text.UTF8Encoding(true)))
{
    writer.WriteLine("ID,Name,Age");
    writer.WriteLine("1,田中,40");
}

まとめ

  • C#ではStreamWriterを使用してCSVを簡単に出力できる。
  • リストやDataTableからCSVを作成する方法もある。
  • エンコーディングの設定に注意が必要。

この知識を活かして、C#でのCSV出力を効率的に行いましょう!

コメントは受け付けていません。