编写了将数据导出到csv文件的方法。
如果csv中单元格的值DEC20
变为20-Dec
则不正确。
我的代码是这样的:
for (int i = 0; i < myData.Count(); i++)
{
sb.AppendLine(string.Join(delimiter,
Common.FormatExportString(myData[i].Code),
Common.FormatExportString(myData[i].Name),
Common.FormatExportString(myData[i].Description)));
}
//returns the file after writing the stream to the csv file.
return File(new System.Text.UTF8Encoding().GetBytes(sb.ToString()), "text/csv", fileName);
请帮助我使用C#获取要在excel(csv)文件中显示的确切string
格式。
例: myData [i] .Name数据将是
像这样,DEC20,或2-5
但csv(excel)中的输出显示为
20年12月20日和5月5日
而不是原来的。
答案 0 :(得分:8)
问题与csv导出无关,如果用记事本打开csv文件,它的格式正确。 Excel将自动检测单元格类型作为日期并将其显示为日期。
要避免此行为,请在引号之间包装文本并在其前面添加=
,如下所示:
= "DEC20"
该文件应该变为
= "field1", = "field2", = "field...", = "DEC20", ...
你的方法应该成为:
for (int i = 0; i < myData.Count(); i++)
{
sb.AppendLine(string.Join(delimiter,
" = \"",
Common.FormatExportString(myData[i].Code),
Common.FormatExportString(myData[i].Name),
Common.FormatExportString(myData[i].Description)
"\""));
}
//returns the file after writing the stream to the csv file.
return File(new System.Text.UTF8Encoding().GetBytes(sb.ToString()), "text/csv", fileName);
答案 1 :(得分:2)
CSV是一种非常简单的格式,允许Excel在文本上应用默认格式。 我建议您不使用CSV编写Excel文件,但Excel API您应该指定格式化单元格的方式。
Excel COM对象允许您编写本机Excel文件。你可以在这里读到它: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ef11a193-54f3-407b-9374-9f5770fd9fd7
答案 2 :(得分:2)
问题不在于CSV输出,
问题在于Excel“为了自己的利益而太聪明”并自动检测数据类型并推断DEC20是“12月20日”,即使它不是!
您可以通过在文本之前添加'来指示Excel的文本列。
作为
"'my Val", "'Dec10", "'54/40/2042", "'22/7/2013", "439.54"
所有这些都将被视为文本,而不是日期/数字或其他任何内容。
干杯
答案 3 :(得分:0)
如果字符串正在折叠,则应以正确的方式操纵字符串以供excel接受。
如果字符串有,则单引号(&#39;&#39;)添加&#34;&#39; ur string&#39;&#34;整体字符串应在="your string with so all special characters and the commas"