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

わんくま同盟

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

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


■86284 / )  Re[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 アプリならこれを使うのが無難
そうな気がします。

返信 編集キー/


管理者用

- Child Tree -