在VB.net中将字符串写入新的.csv

时间:2016-03-14 15:07:44

标签: vb.net string csv

我正在尝试将字符串写入.csv文件,但无法显示它。 我已经成功地在VBA中完成了它,但是当在VB.net中编写时,它无法正常工作。

我首先创建文件并为每列设置标题。在此之后,我将获取有关每个必需属性的信息并将其写入字符串s。 我现在要做的就是将字符串写入.csv文件,以便每个属性都在右侧标题下的右列中。 每次字符串s只需要在一个新行上。

这是我到目前为止(我已经删除了一些代码,因此某些语法可能看起来不正确)。我做错了什么或错过了什么?

    Sub Main()
     Dim sOutput As String
    ' Create a header for the output file
    sOutput = ("Level,Occurrence Name,Reference Name,Object type, Visibility, Path" & vbLf)

            If Occs.Count > 0 Then
        For i = 1 To Occs.Count
            iLevel = 0
            curOcc = Occs.Item(i)
            GetOccurrenceData(curOcc, sOutput, oSel, False, iLevel)
        Next
    End If

    ' Write the output string to a file
    Dim sPath As String
    Dim bWrite As Boolean
    sPath = ("C:\temp\data3.csv")
    bWrite = WriteFile(sPath, sOutput)
End Sub


Sub GetOccurrenceData(curOcc As VPMOccurrence, s As String, sel As Selection, ByVal bParentHidden As Boolean, ByVal iParentLevel As Integer)
'CODE TO GET DATA REMOVED AS IRRELEVANT 

     ' Append the output string with the data for the current occurrence.
    s = (s & curLevel & "," & sName & "," & sRefName & "," & sType & "," & sVisibility & vbLf)

    ' Repeat this data gathering procedure on any children the current occurrence may have.
    Occs = curOcc.Occurrences
    If Occs.Count > 0 Then
        For i = 1 To Occs.Count
            GetOccurrenceData(Occs.Item(i), s, sel, bChildrenInheritNoShow, curLevel)
        Next
    End If

1 个答案:

答案 0 :(得分:0)

在GetOccurrenceData中,您传入一个字符串并在方法中更改它,但您没有将其作为ByRef传入,因此对方法中的字符串所做的任何操作都会保留在方法中。

将方法的标题更改为

Sub GetOccurrenceData(curOcc As VPMOccurrence,ByRef s As String, sel As Selection, ByVal bParentHidden As Boolean, ByVal iParentLevel As Integer)

但我建议使用StringBuilder来完成你正在做的事情。

喜欢这个:

Sub Main()

    Dim sb As New Text.StringBuilder()
    sb.AppendLine("Level,Occurrence Name,Reference Name,Object type, Visibility, Path")

    If Occs.Count > 0 Then
        For i = 1 To Occs.Count
            iLevel = 0
            curOcc = Occs.Item(i)
            GetOccurrenceData(curOcc, sb, oSel, False, iLevel)
        Next
    End If

    ' Write the output string to a file
    Dim sPath As String
    Dim bWrite As Boolean
    sPath = ("C:\temp\data3.csv")
    bWrite = WriteFile(sPath, sb.ToString())

End Sub


Sub GetOccurrenceData(curOcc As VPMOccurrence, sb As Text.StringBuilder, sel As Selection, ByVal bParentHidden As Boolean, ByVal iParentLevel As Integer)
    'CODE TO GET DATA REMOVED AS IRRELEVANT 

    ' Append the output string with the data for the current occurrence.
    sb.Append(curLevel).Append(",").Append(sName).Append(",").Append(sRefName).Append(",").Append(sType).Append(",").AppendLine(sVisibility)

    ' Repeat this data gathering procedure on any children the current occurrence may have.
    Occs = curOcc.Occurrences
    If Occs.Count > 0 Then
        For i = 1 To Occs.Count
            GetOccurrenceData(Occs.Item(i), sb, sel, bChildrenInheritNoShow, curLevel)
        Next
    End If
End Sub