Maison > développement back-end > C++ > Pourquoi ma conversion DataTable-to-CSV place-t-elle toutes les données dans une seule cellule et comment puis-je y remédier ?

Pourquoi ma conversion DataTable-to-CSV place-t-elle toutes les données dans une seule cellule et comment puis-je y remédier ?

Barbara Streisand
Libérer: 2025-01-15 15:36:43
original
890 Les gens l'ont consulté

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

Résoudre le problème de la fusion des données dans une seule cellule dans la conversion DataTable en CSV

Lors de l'exportation d'un DataTable vers un fichier CSV, les utilisateurs peuvent rencontrer un problème où les données ne sont pas correctement séparées, ce qui entraîne l'apparition de toutes les valeurs dans la première cellule de chaque ligne. Pour résoudre ce problème, examinons le code et identifions la cause sous-jacente.

Le code crée d'abord un objet StringBuilder, parcourt les colonnes du DataTable et génère une ligne d'en-tête avec des noms de colonnes séparés par des virgules. Ensuite, il parcourt les lignes du DataTable et récupère la valeur de chaque colonne, en l'ajoutant au StringBuilder. Cependant, le problème réside dans la manière dont les données sont séparées.

Le problème réside dans l'ajout des données au bloc de boucle du StringBuilder. Les lignes de code suivantes sont utilisées pour séparer les valeurs :

<code>sb.Append(row[i].ToString() + ",");</code>
Copier après la connexion

Cette ligne de code ajoute une virgule au StringBuilder après chaque valeur de données. Toutefois, si les virgules à la fin de chaque ligne ne sont pas supprimées, Excel peut interpréter les données comme des cellules individuelles plutôt que comme des valeurs individuelles.

Pour résoudre ce problème, supprimez la virgule de fin de la dernière itération de la boucle interne :

<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>
Copier après la connexion

Modifier le code de cette manière supprimera la virgule de fin de la dernière valeur de chaque ligne, permettant à Excel de séparer correctement les données en cellules individuelles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal