C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■86284 / 1階層)  C# csvファイル読み込みの質問です
□投稿者/ WebSurfer (1413回)-(2018/01/13(Sat) 12:53:16)
No86281 (普通のサラリーマン さん) に返信

問題の原因や解決策の提案はすでに魔界の仮面弁士さんが No86283 でされていますの
で、直接の回答ではないですが、別の案(CSV パーサーの利用)を提案させてください。

そんな提案は不要ということでしたら以下はスルーでお願いします。

質問者さんが最初の質問でアップされたコードでは、ファイルを読んで文字列を作り、
String.Split メソッドでその文字列を区切るといった方法を取られてます。

でも、改行コードやデリミタ(コンマのような区切り文字)がフィールド値の中に
あったり、改行コードが異なったり(例: Windows は CR + LF、Unix は LF)する
CSV ファイルの場合そのような単純な方法は使えません。

詳しくは以下の記事の最初のセクション「CSV形式とは?」を見てください。

CSV形式のファイルをDataTableや配列等として取得する
http://dobon.net/vb/dotnet/file/readcsvfile.html

改行コードやデリミタがフィールド値の中にある場合、フィールド値をダブルクォー
ト (") で囲むと言った約束を設けて対応しますが、そのような CSV ファイルの処置
が可能なパーサーを自力で作るのは簡単ではありません。

なので、TextFieldParser などの既存のパーサーを使うのがよさそうです。上に紹介
した記事にコード例がありますので見てください。

TextFieldParser は Microsoft が提供している Visual Basic .NET 用のクラスライ
ブラリです。C# でも Microsoft.VisualBasic.dll を参照に追加してやれば使えます。

何といっても Microsoft のライブラリなので、.NET アプリならこれを使うのが無難
そうな気がします。

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←C# csvファイル読み込みの質問です /普通のサラリーマン →Re[2]: C# csvファイル読み込みの質問です /魔界の仮面弁士
 
上記関連ツリー

C# csvファイル読み込みの質問です / 普通のサラリーマン (18/01/12(Fri) 20:00) #86281
Re[1]: C# csvファイル読み込みの質問です / 魔界の仮面弁士 (18/01/12(Fri) 22:06) #86283
C# csvファイル読み込みの質問です / WebSurfer (18/01/13(Sat) 12:53) #86284 ←Now
│└ Re[2]: C# csvファイル読み込みの質問です / 魔界の仮面弁士 (18/01/13(Sat) 15:47) #86286
Re[1]: C# csvファイル読み込みの質問です / 魔界の仮面弁士 (18/01/13(Sat) 17:03) #86287

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信