CSV打印问题

时间:2013-01-29 22:08:22

标签: c# .net csv streamwriter

我有一个程序写入csv两列。一个是比例,形式为1:100,或类似的东西,另一个是分数。

这些值存储在字典中并按如下方式打印:

foreach (String s in p.normalizedScore.Keys)
{
       sw.WriteLine(s + DELIM + p.normalizedScore[s]);
}

其中sw是StreamWriter,DELIM是逗号。产出如下:

1:10,7.498378506

0.111111111,18.46320676

0.736111111,30.08283816

1:10000,40.80688802

1:100000,51.93716854

1:1000000,62.89993635

1:10000000,73.54010349

分数都是正确的,但其中2个比例打印不正确(应该增加10倍,所以应该有1:100和1:1000)。当我进入调试器时,我发现在打印时,它仍然正确地读取所有比率,这意味着我找不到我的代码中比率错误的任何地方。有没有人知道问题可能是什么?

编辑:以上输出是直接从Excel复制的,但如果我在记事本中查看它,数据似乎很好,所以在我看来问题是Excel。 (仍然不知道你在想什么。)

2 个答案:

答案 0 :(得分:1)

根据评论 - 这是一个Excel格式问题,而不是代码问题。

将Cory的评论添加到答案中,因为我认为它增加了重要的价值:

  

如果你在你的比率附近加上引号,Excel不应该尝试任何有趣的   格式化业务(您不会在Excel中看到报价,   这只是用于限定价值的CSV规范的一部分。)

答案 1 :(得分:1)

不要只是双击文件并在Excel中打开。打开一个新工作表并从文本文件导入。然后,您将指定它是一列文本 - 或者您可以使用文本限定符创建csv,并在导入中使用它。

或者,您可以在s变量前添加空格。

sw.WriteLine(" "+ s + DELIM + p.normalizedScore[s]);  

'1:10'不会被视为表达。