Exporting Dataset as CSV
Hi Everyone,
Below given an easy way to export data from a dataset as CSV(comma seperated values) . At first, it converts the datatable to html table format and then writes data as output stream. We need to set the Content-Type of Response object as Excel format and add the filename to be streamed on the client browser in a dialog box
Check this snippet
private void ExportToCsvFromDataSet(DataSet dsExport) {
bool IsOutputStreamed = false;
try {
StringBuilder dataToExport = new StringBuilder();
foreach (DataTable dtExport in dsExport.Tables) {
string headerToExport= string.Empty;
foreach (DataColumn dCol in dtExport.Columns)
headerToExport = (char)34 + dCol.ColumnName + (char)34 + (char)44;
headerToExport.Remove(headerToExport.Length - 1, 1);
headerToExport = headerToExport + Environment.NewLine + Environment.NewLine;
dataToExport.Append(headerToExport);
string bodyToExport = string.Empty;
foreach (DataRow dRow in dtExport.Rows) {
foreach (object obj in dRow.ItemArray)
bodyToExport = bodyToExport + obj.ToString() + (char)44;
bodyToExport.Remove(bodyToExport.Length - 1, 1);
bodyToExport = bodyToExport + Environment.NewLine;
}
dataToExport.Append(bodyToExport);
dataToExport.Append(Environment.NewLine);
dataToExport.Append(Environment.NewLine);
if (string.IsNullOrEmpty(dataToExport.ToString())) {
Response.Clear();
Response.ContentType = "Text/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename=report.csv");
Response.Write(dataToExport.ToString());
IsOutputStreamed = true;
}
}
}
catch { }
finally {
if (IsOutputStreamed)
Response.End();
}
}
Download the source code