sql >> Base de Datos >  >> RDS >> Sqlserver

C# SQLServer recuperando resultados y colocándolos en formato .csv

Aquí hay un método que uso para volcar cualquier IDataReader a un StreamWriter. Generalmente creo el StreamSwriter así:new StreamWriter(Response.OutputStream) . Convierto cualquier carácter de comillas dobles en la entrada en caracteres de comillas simples (tal vez no sea la mejor manera de manejar esto, pero funciona para mí).

public static void createCsvFile(IDataReader reader, StreamWriter writer) {
    string Delimiter = "\"";
    string Separator = ",";

    // write header row
    for (int columnCounter = 0; columnCounter < reader.FieldCount; columnCounter++) {
        if (columnCounter > 0) {
            writer.Write(Separator);
        }
        writer.Write(Delimiter + reader.GetName(columnCounter) + Delimiter);
    }
    writer.WriteLine(string.Empty);

    // data loop
    while (reader.Read()) {
        // column loop
        for (int columnCounter = 0; columnCounter < reader.FieldCount; columnCounter++) {
            if (columnCounter > 0) {
                writer.Write(Separator);
            }
            writer.Write(Delimiter + reader.GetValue(columnCounter).ToString().Replace('"', '\'') + Delimiter);
        }   // end of column loop
        writer.WriteLine(string.Empty);
    }   // data loop

    writer.Flush();
}