Đây là một phương pháp tôi sử dụng để kết xuất bất kỳ IDataReader nào ra một StreamWriter. Tôi thường tạo StreamSwriter như thế này:new StreamWriter(Response.OutputStream)
. Tôi chuyển đổi bất kỳ ký tự dấu ngoặc kép nào trong đầu vào thành các ký tự dấu ngoặc kép (có thể không phải là cách tốt nhất để xử lý điều này, nhưng nó phù hợp với tôi).
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();
}