CSV の読み書きは CsvIO(unvell.ReoGrid.Core.IO)で行います。RFC 4180 に準拠します。
読み書き
// 読み込み — 開始位置と区切り文字を指定できる
CsvIO.Read(ws, File.ReadAllText("data.csv"));
CsvIO.Read(ws, File.ReadAllText("tsv.txt"), startRow: 0, startCol: 0, delimiter: '\t');
// 書き出し — 使用範囲が対象
File.WriteAllText("out.csv", CsvIO.Write(ws));
Read は既存のシートに書き込みます。ワークブックを新規に作るわけではありません。
startRow / startCol で書き込み位置をずらせるため、複数の CSV を 1 枚のシートに
並べることもできます。
Write は使用範囲を対象にします。空のシートでは空文字列が返ります。
区切り文字
delimiter にタブを渡せば TSV として扱えます。既定はカンマです。
値の解釈
読み込んだ各フィールドは、セルの編集 と同じ規則で解釈されます。
| 入力 | 結果 |
|---|---|
1234 | 数値 |
TRUE / FALSE | 真偽値 |
2026/07/28 | 日付 |
=SUM(A1:A2) | 数式 |
| それ以外 | 文字列 |
数式として解釈されると困る場合(= で始まるテキストを扱う場合)は、
読み込み後に該当セルを書き換えてください。
引用符とエスケープ
RFC 4180 に従います。
- フィールドに区切り文字・改行・引用符が含まれる場合は
"で囲む - フィールド内の
"は""と二重にする
書き出し時も同じ規則でエスケープされます。
保存されないもの
CSV は値だけの形式です。スタイル・数式の書式・結合・罫線・セル型は保存されません。
Write は表示文字列ではなく入力値を書き出します(数式のセルは数式が出ます)。
エンコーディング
CsvIO は文字列を受け渡すため、エンコーディングの扱いは呼び出し側の責任です。
Excel で開くことを想定する場合は UTF-8 BOM 付きで書き出してください。
File.WriteAllText("out.csv", CsvIO.Write(ws), new UTF8Encoding(true));
クリップボードとの違い
貼り付け用の TSV は RangeClipboard.BuildTsv(...) です。範囲を指定でき、
スタイルを保持する HTML と組で使われます(クリップボード)。