【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出力を効率的に行いましょう!