ホームページ > バックエンド開発 > C++ > DataTable から CSV への変換ですべてのデータが 1 つのセルに配置されるのはなぜですか?それを修正するにはどうすればよいですか?

DataTable から CSV への変換ですべてのデータが 1 つのセルに配置されるのはなぜですか?それを修正するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-15 15:36:43
オリジナル
890 人が閲覧しました

Why is my DataTable-to-CSV conversion placing all data in a single cell, and how can I fix it?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート