hat derzeit eine Datatable, aber ich wünschte, es über einen WebHandler an den Benutzer zu streamen. FileHelpers hat CommonEngine.DataTableToCsv(dt, "file.csv")
. Es speichert es jedoch in einer Datei. Wie kann ich es stattdessen in einem Stream speichern? Ich weiß, wie es geht, wenn ich weiß, dass die Spalten fortgeschritten sind oder sich nicht ändern, aber ich möchte die Spaltenüberschriften direkt aus der Datentabelle erzeugen.Convert Datatable in einem CSV-Stream
Wenn ich die Spalten weiß ich, erstellen Sie einfach die Klasse:
[DelimitedRecord(",")]
public class MailMergeFields
{
[FieldQuoted()]
public string FirstName;
[FieldQuoted()]
public string LastName;
}
Dann FileHelperEngine verwenden und fügen Sie die Datensätze:
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++;
}
schließlich in einen Stream schreiben:
TextWriter writer = new StringWriter();
engine.WriteStream(writer, merge);
context.Response.Write(writer.ToString());
Leider kann ich die Klasse vorher nicht erstellen, da ich die Spalten vorher nicht kenne.
Sie können dies überprüfen https://gist.github.com/riyadparvez/4467668 – user
Die Datei Helfer Bibliothek ist Open Source. Warum sprichst du nicht hinein und fügst deine eigene Methode hinzu? – Keltex
@user: Dieser Inhalt enthält einen Fehler, bei dem Einträge mit Kommas nicht korrekt behandelt werden. Siehe http://stackoverflow.com/q/769621/1461424 – Krumia