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