【发布时间】:2018-07-04 14:03:00
【问题描述】:
OpenOffice Calc 打开我使用 StreamWriter C# 创建的 CSV 文件时遇到问题。当它打开时,它应该在每一行之间都有空行(双倍行距)。似乎有某种形式的回车加倍。当我在记事本中打开它时,它读取正确。当我将程序更改为写入整数而不是字符串时,问题就消失了。它似乎在每个字符串的末尾添加了一个返回,然后格式化添加了另一个我没有看到的返回。
输出看起来像这样......
1...
2...
3...
输出应该是这样的......
1...
2...
3...
这是我用来将列表写入文件的 ForEach 循环...
using (StreamWriter sw = new StreamWriter(@"c:\andy\Arduino StreamWriter.csv", false, Encoding.UTF8))
{
foreach (string element in SerialPortString)
{
sw.WriteLine(element);
}
}
每行只有一个数据字段,因此没有分隔符,只有新行。我尝试了格式化,以便在每个字段周围加上引号,希望可以消除 CSV 格式的混淆,但我也无法弄清楚。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
所以在记事本中看起来没问题?我猜
element字符串的末尾有一个 \n ?如果是这样,您最终会得到 \n\r\n - 记事本将忽略第一个 \n 其他关注 linux 结尾的应用程序不会。 -
我刚回去进行此更改,确实消除了问题。但我不确定这是为什么。使用 Write 方法应该将列表的所有元素附加到第一行,但由于某种原因,循环会在每次写入后自动插入一个 Return。
-
所有
element值的末尾必须有一个\n,即如果您在调试器中查看var x = Encoding.UTF8.GetBytes(element.ToString());,它可能是10。 -
将
watch放在元素变量上,然后查看流末尾显示的其他字符。还要检查SerialPortStream是如何填充的。
标签: c# csv streamwriter