Convertir DataTable au format CSV, les flux de

Ont actuellement une DataTable, mais qui souhaitent le diffuser à l'utilisateur par l'intermédiaire d'un WebHandler. FileHelpers a CommonEngine.DataTableToCsv(dt, "file.csv"). Cependant, il l'enregistre dans un fichier. Comment puis-je enregistrer un flux à la place? Je sais comment le faire quand je sais que les colonnes avancé ou qu'ils ne changent pas, mais je veux générer les en-têtes de colonne droite de la table de données.

Si je sais que les colonnes je viens de créer la catégorie:

[DelimitedRecord(",")]
public class MailMergeFields
{
    [FieldQuoted()]
    public string FirstName;
    [FieldQuoted()]
    public string LastName;
}

Ensuite utiliser FileHelperEngine et ajouter les enregistrements:

FileHelperEngine engine = new FileHelperEngine(typeof(MailMergeFields));

MailMergeFields[] merge = new MailMergeFields[dt.Rows.Count + 1];

//add headers
merge[0] = new MailMergeFields();
merge[0].FirstName = "FirstName";
merge[0].LastName = "LastName";

int i = 1;              
//add records
foreach (DataRow dr in dt.Rows)
{
    merge[i] = new MailMergeFields();
    merge[i].FirstName = dr["Forename"];
    merge[i].LastName = dr["Surname"];
    i++;
}

Finalement écrire dans un flux:

TextWriter writer = new StringWriter();
engine.WriteStream(writer, merge);
context.Response.Write(writer.ToString());

Malheureusement, comme je ne connais pas les colonnes avant de la main, je ne peux pas créer la classe avant de la main.

InformationsquelleAutor SamWM | 2009-05-20