@Vinicious जवाब का विस्तार।
मेरे पास डेटा था जिसमें अल्पविराम शामिल हो सकता था। सामान्य समाधान उद्धरण में संलग्न करके डेटा के उस टुकड़े से बचने के लिए है, जबकि यह सुनिश्चित करना कि डेटा का हिस्सा भी हो सकता है।
सीएसवी लिखते समय मैं एक रगड़ और चेतावनी के खिलाफ आया, अगर आप अपने कॉमा का पीछा करते हुए रिक्त स्थान डालते हैं तो एक्सेल आपको पसंद नहीं करेगा।discovered solution to my problem from superuser answer
protected void btnDownload_Click(object sender, EventArgs e)
{
MemoryStream ms = new MemoryStream();
TextWriter tw = new StreamWriter(ms, System.Text.Encoding.UTF8);
var structures = KAWSLib.BusinessLayer.Structure.GetStructuresInService();
// *** comma delimited
tw.Write("Latitude, Longitude, CountySerial, StructureType, Orientation, District, RoutePre, RouteNo, LocationDesc");
foreach (var s in structures)
{
tw.Write(Environment.NewLine + string.Format("{0:#.000000},{1:#.000000},{2},{3},{4},{5},{6},{7},{8}", s.LATITUDE, s.LONGITUDE, s.CO_SER, EscapeIfNeeded(s.SuperTypeLookup.SHORTDESC), EscapeIfNeeded(s.OrientationLookup.SHORTDESC), s.DISTRICT, s.ROUTE_PREFIX, s.RouteValue, EscapeIfNeeded(s.LOC_DESC)));
}
tw.Flush();
byte[] bytes = ms.ToArray();
ms.Close();
Response.Clear();
Response.ContentType = "application/force-download";
Response.AddHeader("content-disposition", "attachment; filename=" + string.Format("kaws-structures-{0:yyyy.MM.dd}.csv", DateTime.Today));
Response.BinaryWrite(bytes);
Response.End();
}
string EscapeIfNeeded(string s)
{
if (s.Contains(","))
{
return "\"" + s.Replace("\"", "\"\"") + "\"";
}
else
{
return s;
}
}
नीचे एक्सेल के लिए समस्या पैदा होगी। एक्सेल में पहला उद्धरण डेटा का हिस्सा बन जाएगा और इसके परिणामस्वरूप एम्बेडेड कॉमा पर अलग से अलग होगा। जगह खराब है।
tw.Write(Environment.NewLine + string.Format("{0:#.000000}, {1:#.000000}, {2}, {3}, {4}, {5}, {6}, {7}, {8}", s.LATITUDE, s.LONGITUDE, s.CO_SER, EscapeIfNeeded(s.SuperTypeLookup.SHORTDESC), EscapeIfNeeded(s.OrientationLookup.SHORTDESC), s.DISTRICT, s.ROUTE_PREFIX, s.RouteValue, EscapeIfNeeded(s.LOC_DESC)));
http://www.xefteri.com/articles/show.cfm?id=8 – fejesjoco