DataTable から CSV への変換でデータを 1 つのセルに結合する問題を解決します
DataTable を CSV ファイルにエクスポートすると、データが適切に分離されず、すべての値が各行の最初のセルに表示されるという問題が発生する可能性があります。この問題を解決するには、コードを調べて根本的な原因を特定しましょう。
コードは最初に StringBuilder オブジェクトを作成し、DataTable の列を反復処理して、カンマで区切られた列名を持つヘッダー行を生成します。次に、DataTable の行を反復処理して各列の値を取得し、それを StringBuilder に追加します。ただし、データの分離方法に問題が発生します。
問題は、StringBuilder のループ ブロックにデータを追加することにあります。次のコード行は、値を区切るために使用されます:
<code>sb.Append(row[i].ToString() + ",");</code>
このコード行は、StringBuilder の各データ値の後にカンマを追加します。ただし、各行の末尾のカンマが削除されていない場合、Excel はデータを個々の値ではなく個々のセルとして解釈する可能性があります。
これを修正するには、内側ループの最後の反復から末尾のカンマを削除します。
<code>for (int i = 0; i < dt.Columns.Count; i++) { sb.Append(row[i].ToString()); // 移除最后一次迭代的尾随逗号 if (i == dt.Columns.Count - 1) sb.Remove(sb.Length - 1, 1); else sb.Append(","); }</code>
この方法でコードを変更すると、各行の最後の値から末尾のカンマが削除され、Excel でデータを個々のセルに適切に分離できるようになります。
以上がDataTable から CSV への変換ですべてのデータが 1 つのセルに配置されるのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。