4

编写了将数据导出到 csv 文件的方法。如果DEC20csv 中单元格的值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);

请帮助我string使用 C# 获取要在 excel (csv) 文件中显示的确切格式。

例如: myData[i].Name 数据将是

DEC20,或 2-5

像这样,

但 csv(excel) 中的输出显示为

12 月 20 日和 5 月 5 日

而不是原来的。

4

4 回答 4

11

问题与 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);
于 2013-01-10T09:34:35.390 回答
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

于 2013-01-10T09:38:21.590 回答
2

问题不在于 CSV 输出,

问题是 Excel “太聪明了”,它会自动检测数据类型并推断 DEC20 是“December 20”,即使它不是!

您可以通过在文本前添加 ' 来指示 Excel 的文本列。作为
"'my Val", "'Dec10", "'54/40/2042", "'22/7/2013", "439.54"

所有这些都将被视为文本,而不是日期/数字或其他任何内容。

干杯

于 2013-07-23T07:39:13.430 回答
0

如果字符串被折叠,应该以正确的方式操作字符串以被excel接受。

如果字符串有,单引号('')添加“'ur string'”并且整个字符串应该在="your string with so all special characters and the commas"

于 2013-07-23T07:33:21.043 回答