CSVファイル読込をてテキストファイルとして、読み込むプログラムを作成すると、「文字列でスペースやカンマがあった場合」、データ分割できずに、困ってしまいました。
そこで、何か手段ないか調べたところ、TextFieldParserをつかうとうまくできました。
手順は、以下の通りです。
① VisualStudioで、[ソリューションエクスプローラ] => [参照の追加] を選択し、
プロジェクトにMicrosoft.VisualBasicアセンブリの参照を追加する。
②以下のようなコードを作成する
(サンプルコードは、タブ区切りファイルの例です。CSVの時は、SetDelimitersで","を設定してください)
using (TextFieldParser parser = new TextFieldParser("test.csv", System.Text.Encoding.GetEncoding("Shift_JIS")))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters("\t"); // 区切り文字はタブ
while (!parser.EndOfData)
{
nLine++;
string[] dataArray = parser.ReadFields(); // 1行読み込み
if (dataArray.Length < 0)
{
Console.WriteLine("データが不正です [{0}行]", nLine);
continue;
}
int nRes = 0;
bool bCheck = int.TryParse(dataArray[0], out nRes);
if (bCheck == false)
{
continue; // 変換エラーなので、次の行に移行
}
nRecCount++;
// 処理
DoIt(dataArray);
}
}
【参考URL】
https://www.ipentec.com/document/document.aspx?page=csharp-read-csv-file-by-textfieldparser
EXCELファイル自体の読み込みは、次のURL参考にするといいかもしれません
http://qiita.com/_meki/items/b1f4afcb96f9548d2b81
http://qiita.com/midori44/items/acab9106e6dad9653e73
0 件のコメント:
コメントを投稿