繁体   English   中英

最后一行切断

[英]Last row cut off

我不知道为什么在最后的csv行中最后4列被切除

如果我简要描述一下过程,那可能会有所帮助。

最初,该应用读取csv,并在ListView中输出。 可以选择单个ListItem。 对于每个项目,可以停止带有日期的时间,然后将这些日期写入csv。 我覆盖整个csv的作品。

重新启动应用程序后,仅显示“未处理的异常”,因为被覆盖的csv不再与原始匹配。 所有记录都可以,除了最后一个,还有最后四个值:

_Dum "+", "+" _Vo "+", "+" _Bi "+", "+" _Da "

builder.AppendLine( "_Dum" + "," + "_Vo" + "," + "_Bi" + "," + "_Da" + "\r");

//Add Data

foreach (var data in varModule.List)
{
builder.AppendLine( data._Dum + ",");

if (data._Stu == "B" || data._Stu == "E")
{
builder.AppendLine(data._Vo + "," + data._Bi + "," + data._Dau);
};

//Line Break

 builder.AppendLine("\r\n\n");
 }
using (StreamWriter sw = new StreamWriter(csvFilePath))

{
 sw.WriteLine(builder);
 sw.Flush();
}

注意:如果我不写\\r\\n\\n并加倍|| 最后的csv行将被更早地删除。

您的程序似乎并未写入所需的数据。 您可能期望以下输出

_Dum,_Vo,_Bi,_Da<NewLine>

<ValueOf_Dum>,<ValueOf_Vo>,<ValueOf_Bi>,<ValueOf_Da><NewLine>

请注意,我专门在输出中添加了<NewLine> <NewLine>代表换行符,取决于您的OS是"\\n" (在Unix系统上)还是"\\r\\n" (在Windows系统上)。 在.NET中,还有Environment.NewLine ,它返回特定于平台的换行符。 请注意,没有CSV“标准”,因此您可以选择要使用的换行符。 似乎您不清楚,因此您首先必须做出决定。

接下来需要考虑的是StringBuilder.AppendStringBuilder.AppendLine之间的区别。 Append只需在字符串的末尾添加指定的文本,而AppendLine添加文本,然后是Environment.NewLine返回的字符。

在您的代码中,您始终使用AppendLine ,但这并不是您想要的,因为您显然想要构造线条并将它们整体添加。 这样做的方式是,在某些值之间不断添加换行符,这在CSV中表示新记录的开始。

您不仅不小心在文件中添加了换行符,而且在手动添加的换行符中也不一致。 在标题行中,使用"\\r" (在Unix Windows中不能正常使用)。 稍后,您使用"\\r\\n\\n" (甚至后面是由AppendLine添加的新行),在Unix(由于开头为"\\r" )或Windows(由于"\\n"末尾没有"\\r" )。

下一个问题是代码的这一部分:

if (data._Stu == "B" || data._Stu == "E")
{
    builder.AppendLine(data._Vo + "," + data._Bi + "," + data._Dau);
};

_Stu"B""E"时,将添加_Vo_Bi_Dau的值。 _Stu还有其他值时您会怎么做? 没有! 这意味着您在此处生成的记录不完整,这很可能是您描述问题的原因。 您需要下定决心,在其他情况下会发生什么,并将其合并到您的程序中。

通常,您似乎不太清楚程序的预期流程,CSV格式以及代码中所使用的指令正在执行的操作。 要解决您的问题,您需要执行以下步骤:

  1. 清楚了解所需的输出以及生成该输出的程序的外观。
  2. 了解CSV格式及其中换行的重要性。
  3. 确定要使用的新行格式( "\\r\\n""\\n"Environment.NewLine ),并在整个程序中一致使用它。
  4. 使用Append要添加只是文本和AppendLine当你想跟着增加的文字Environment.NewLine
  5. 清除当Stu不是"B""E"时应该发生的情况,并将这种情况添加到程序中。
  6. 在调试器中单步执行程序,以确认程序是否确实按照您的意图执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM