Tuesday, January 3, 2012

Writing CSV To File

protected string WriteToCSVForMail(DataTable dt, string fileName, NameValueCollection nvcCriteria)
{
//file name should be the full path of the file.
string fileNameWithExt = fileName + ".csv";
FileInfo fileToWorkOn = new FileInfo(fileNameWithExt);
//check if file exist, if not create one
if (!fileToWorkOn.Exists)
{
FileStream createdFile = fileToWorkOn.Create();
createdFile.Close();
fileToWorkOn = new FileInfo(fileNameWithExt);
}
StreamWriter writer = fileToWorkOn.CreateText();
//trying to write the criteria in downloaded csv file.
writer.Write("Following Criterion is used to generate this Report");
writer.Write(Environment.NewLine);
writer.Write("FromDate : " + nvcCriteria["FromDate"]);
writer.Write(Environment.NewLine);
writer.Write("ToDate : " + nvcCriteria["ToDate"]);
writer.Write(Environment.NewLine);
writer.Write("QuoteId : " + nvcCriteria["QuoteId"]);
writer.Write(Environment.NewLine);
writer.Write("QuoteStatus : " + nvcCriteria["StatusText"]);
writer.Write(Environment.NewLine);
writer.Write("Product : " + nvcCriteria["ProductText"]);
writer.Write(Environment.NewLine);
writer.Write("AccessType : " + nvcCriteria["AccessText"]);
writer.Write(Environment.NewLine);
foreach (DataColumn column in dt.Columns)
{

writer.Write(column.ColumnName + ",");

}

writer.Write(Environment.NewLine);
foreach (DataRow row in dt.Rows)
{

for (int i = 0; i < dt.Columns.Count; i++)
{

string outputS = EscapeCsvField(row[i].ToString());
writer.Write(outputS + ((i < dt.Columns.Count - 1) ? "," : Environment.NewLine));

}
}
writer.Close();
return fileNameWithExt;
//properties of FileInfo class
//Console.WriteLine("Full name of the file we are working on : " + fileToWorkOn.FullName);
//Console.WriteLine("Full name of the directory file is on : " + fileToWorkOn.DirectoryName);
//fileToWorkOn.CopyTo("d:\\test2copy.txt");
//fileToWorkOn.Delete();
}

use same EscapeCSVField method I used in earlier post.

Enjoy Coding!

No comments:

Post a Comment