CSV フォーマット
ReoGrid では、CSV フォーマットのファイルあるいはストリームから、その内容をワークシートにインポートしたり、 CSV フォーマットとしてエクスポートしたりすることができます。
インポート
ワークシートの Load
または LoadCSV
メソッドを利用すると CSV ファイルやストリームからデータをインポートできます。
- Workbook.Load
- Worksheet.Load
- Worksheet.LoadCSV
ワークブックの Load
メソッドは既存のワークシートが全て上書きされます。
ワークシートの Load
メソッドを利用する場合そのワークシートのみが上書きされます。また、LoadCSV
メソッドを利用する場合、対象範囲を渡すと、ワークシートを上書きせず指定位置に格納することもできます。
ワークブックに読み込む
ワークブックの Load メソッドを利用すると CSV を新規ワークブックに読み込みます。既存のワークシートは全て削除され、新しいワークシートが作成されます。ファイルから読み込む場合、新しいワークシートの名前がファイル名となります。ストリームから読み込む場合、FileFormat
を指定する必要があります。
void Load(Stream s, FileFormat format);
void Load(string path, FileFormat format = FileFormat.CSV)
ワークシートに読み込む
指定したワークシートに CSV を読み込むには、ワークシートの Load
または LoadCSV
メソッドを利用します。ストリームから読み込む場合、FileFormat
の指定が必要です。
// ファイルから読み込む
void Load(string path);
// ストリームから読み込む
void Load(Stream s, FileFormat format);
LoadCSV
メソッドは CSV を読み込むためのメソッドです。より多くのパラメータを渡すことができます。
// ファイルから読み込む
void LoadCSV(string path);
// ストリームから読み込む
void LoadCSV(Stream s);
文字コードを指定して読み込む:
// 文字コードを指定してファイルから読み込む
void LoadCSV(string path, Encoding encoding);
// 文字コードを指定してストリームから読み込む
void LoadCSV(Stream s, Encoding encoding);
パラメータを渡して読み込む:
// カスタマイズパラメータを渡してストリームから読み込む
void LoadCSV(Stream s, bool autoSpread, int bufferLines, Encoding encoding);
LoadCSV メソッドのパラメータ
自動拡張(AutoSpread)
指定したワークシートの行列数が足りない場合、ReoGrid は自動的に行列を増やしてデータを格納します。autoSpread を false に設定すると自動拡張を禁止できます。この機能を禁止した場合、ワークシートの行列数が足りなくなるとエクセプションが発生します。
バッファー行数(BufferLines)
CSV を読み込みしながら解析する場合、性能を向上するため解析したデータを一旦メモリの中に格納します。このパラメータはバッファの行数を設定できます。行数を増やすと性能がアップしますがメモリがより多く消費されます。
文字コード(encoding)
CSV ファイルは平文の文字列のフォーマットです。文字列を正しく認識するために、保存時の文字コードを使用して読み込む必要があります。そのため文字コードを指定する場合があります。
同じ環境で保存した CSV を読み込む場合、通常文字コードの指定が必要ありません。しかし他の環境で正しくファイルを読み込むために、保存時の文字コードを指定した方がよいでしょう。
例えば日本語の文字コード SHIFT-JIS を指定するソースコードは以下の通りです。
worksheet.LoadCSV(@"G:\\ReoGrid\\Samples\\13TOKYO.CSV", Encoding.GetEncoding("shift-jis"));
エクスポート
CSV フォーマット自体はマルチワークシートに対応していないため、複数のワークシートを一つの CSV にエクスポートすることができません。
指定したワークシートから CSV を作成するには、ワークシートの ExportAsCSV
メソッドを利用します。
// 全てのデータをファイルにエクスポート
void ExportAsCSV(string filepath);
// 全てのデータをストリームにエクスポート
void ExportAsCSV(Stream steam);
// 指定した範囲のデータをファイルにエクスポート
void ExportAsCSV(string path, string addressOrName, Encoding encoding = null);
// 指定した範囲のデータをストリームにエクスポート
void ExportAsCSV(Stream s, RangePosition range, Encoding encoding = null);