从一个非常大的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)
我从“追加”行中删除的确切字符数现在将成功显示在缺少信息的文件末尾。
使用这些功能是否存在一些我不理解的怪异功能?我完全迷路了,不了解这种行为。
答案 0 :(得分:1)
完成后,您需要关闭文件:
newfile.Close()
在旁注中,您的文件正在以XLS扩展名保存,但是由于您要导出逗号分隔值的列表,因此建议您以CSV格式保存。