StringBuilder追加替换数据问题

时间:2018-10-01 14:09:40

标签: excel string vb.net append stringbuilder

从一个非常大的Excel文件中,我们循环将三列中的值存储到变量(uName(Row),mgrName(Row),title(Row))中。通过此excel,我们还可以获得行数。

当我尝试使用StringBuilder创建单独的.xls文件以在以后的应用程序中使用时,问题就来了。我的代码如下所示:

    Dim XLstring As System.Text.StringBuilder = New System.Text.StringBuilder
    Dim newfile As System.IO.StreamWriter
    Dim fileTitle

    XLstring.Append("Name,Manager,Title" & vbCrLf)

    For X As Integer = 2 To countrows
        If X = countrows Then
            MsgBox(countrows)
            MsgBox(uName(X) & "," & mgrName(X) & "," & title(X))
        End If

        XLstring.Append(uName(X) & "," & mgrName(X) & "," & title(X) & vbCrLf)
    Next

    fileTitle = System.DateTime.Now.ToString("yy-MM-dd hh-mm-ss") & ".xls"
    filePath2 = "myPath" & fileTitle

    newfile = File.CreateText(filePath2)
    newfile.WriteLine(XLstring)

这在大多数情况下都有效。我可以看到我使用MsgBox捕获了正确的行数以及最后一行中的正确信息。但是,当我打开生成的.xls文件时,文件末尾缺少条目。另外,如果我要更改

XLstring.Append("Name,Manager,Title" & vbCrLf)

类似

XLstring.Append("Name,Manager" & vbCrLf)

我从“追加”行中删除的确切字符数现在将成功显示在缺少信息的文件末尾。

使用这些功能是否存在一些我不理解的怪异功能?我完全迷路了,不了解这种行为。

1 个答案:

答案 0 :(得分:1)

完成后,您需要关闭文件:

newfile.Close()

在旁注中,您的文件正在以XLS扩展名保存,但是由于您要导出逗号分隔值的列表,因此建议您以CSV格式保存。