0

こんにちは、事前に感謝します。C#Windowsアプリケーションで.csvファイルからdatagridview(3つの列番号、日付、メッセージがあります)にレコードを表示するための次のコードがあります。

 var lines = File.ReadAllLines("E:\\messages.csv").Select(a => a.Split(',')).ToList();
 foreach (string[] s in lines)
 {
    dataGridView1.Rows.Add(s[2], s[5], s[7]);
 }

',' の最初の 7 回の出現に対しては問題なく動作しますが、.csv ファイルには 7 個を超える '' がある他の行があるため、7 の後の ',' の出現は 7 番目のものと結合する必要があります。メッセージとしてのデータグリッドビュー名の3番目の列

.csv ファイルの 1 行の例

sms,deliver,"+919999999999","","","2013.08.01 09:40","","ムンバイの次の賃貸アパート: SHIKHA、SHATRANJ の近く、カーター ロードの外れ、Khar Garden に面した 1500 平方メートルft. 検査のための 2 時間前の通知 -- Rohit J."

4

3 に答える 3

0

単純にコンマで分割して CSV を読み取り/解析するのは悪い考えです。次の表を検討してください。

列 1 列 2 列 3
こんにちは お元気ですか 私は元気です
Hello, world はい、私は元気ですか

CSV は次のようになります。

列 1、列 2、列 3
こんにちは、お元気ですか、元気です
「こんにちは、世界」、元気ですか、はい、私は

コンマで分割すると、2 行目が変更されます。ネストされた引用符と改行は、作業をさらに困難にします。

代わりに、車輪の再発明を気にせず、パーサーを使用してください。いくつかの提案については、この質問またはこの質問への回答を見てください。

于 2013-08-01T17:49:58.607 に答える